';
//echo "Vorschlag $i: ";
$first=false;
+
echo $row->vorschlag_text;
if($row->vorschlag_audio!='')
{
diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php
index 6f47992a1..9f6cd4fb7 100644
--- a/cis/testtool/frage.php
+++ b/cis/testtool/frage.php
@@ -161,7 +161,7 @@ if(!isset($_SESSION['pruefling_id']))
$pruefling = new pruefling();
$pruefling->load($_SESSION['pruefling_id']);
-if ($pruefling->gesperrt === 't')
+if ($pruefling->isGesperrt($_SESSION['pruefling_id']))
die("");
if (!in_array($gebiet_id, $_SESSION['alleGebiete']))
diff --git a/cis/testtool/login.php b/cis/testtool/login.php
index 0b114b8c5..0ff84f4a0 100644
--- a/cis/testtool/login.php
+++ b/cis/testtool/login.php
@@ -362,6 +362,8 @@ if ((isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) &&
$pruefling->idnachweis = '';
$pruefling->registriert = date('Y-m-d H:i:s');
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
+ $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']);
+
if ($pruefling->save())
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
@@ -385,6 +387,7 @@ if (isset($_POST['save']) && isset($_SESSION['prestudent_id']))
$pruefling->registriert = date('Y-m-d H:i:s');
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
$pruefling->semester = $_POST['semester'];
+ $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']);
if ($pruefling->save())
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
diff --git a/composer.json b/composer.json
index 229b83a98..12e01af4e 100644
--- a/composer.json
+++ b/composer.json
@@ -26,6 +26,28 @@
"wiki": "https://wiki.fhcomplete.info/doku.php"
},
"repositories": [
+ {
+ "type": "package",
+ "package": {
+ "name": "vuepic/vue-datepicker-js",
+ "version": "4.0.0",
+ "dist": {
+ "url": "https://unpkg.com/@vuepic/vue-datepicker@4.0.0/dist/vue-datepicker.iife.js",
+ "type": "file"
+ }
+ }
+ },
+ {
+ "type": "package",
+ "package": {
+ "name": "vuepic/vue-datepicker-css",
+ "version": "4.0.0",
+ "dist": {
+ "url": "https://unpkg.com/@vuepic/vue-datepicker@4.0.0/dist/main.css",
+ "type": "file"
+ }
+ }
+ },
{
"type": "package",
"package": {
@@ -352,9 +374,9 @@
"type": "package",
"package": {
"name": "vuejs/vuedatepicker_js",
- "version": "4.2.3",
+ "version": "5.4.0",
"dist": {
- "url": "https://unpkg.com/@vuepic/vue-datepicker@4.2.3/dist/vue-datepicker.iife.js",
+ "url": "https://unpkg.com/@vuepic/vue-datepicker@5.4.0/dist/vue-datepicker.iife.js",
"type": "file"
}
}
@@ -363,9 +385,9 @@
"type": "package",
"package": {
"name": "vuejs/vuedatepicker_css",
- "version": "4.2.3",
+ "version": "5.4.0",
"dist": {
- "url": "https://unpkg.com/@vuepic/vue-datepicker@4.2.3/dist/main.css",
+ "url": "https://unpkg.com/@vuepic/vue-datepicker@5.4.0/dist/main.css",
"type": "file"
}
}
@@ -422,7 +444,7 @@
"nategood/httpful": "0.2.*",
"netcarver/textile": "3.7.*",
"nicolaskruchten/pivottable": "2.23.0",
- "npm-asset/primevue": "3.15.*",
+ "npm-asset/primevue": "3.29.1",
"npm-asset/primeicons": "5.0.0",
"olifolkerd/tabulator4": "4.9.*",
@@ -443,8 +465,8 @@
"vuejs/vuejs3": "3.2.33",
"vuejs/vuerouter4": "4.1.3",
- "vuejs/vuedatepicker_js": "4.2.3",
- "vuejs/vuedatepicker_css": "4.2.3"
+ "vuejs/vuedatepicker_js": "5.4.0",
+ "vuejs/vuedatepicker_css": "5.4.0"
},
"config": {
"bin-dir": "vendor/bin"
diff --git a/composer.lock b/composer.lock
index 553dcaee0..092ee608d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "12acec21673c71641f7f1a6586ec666f",
+ "content-hash": "67e5823946d817dac0c89156a2f0fcf0",
"packages": [
{
"name": "afarkas/html5shiv",
@@ -614,16 +614,16 @@
},
{
"name": "components/jquery",
- "version": "3.6.0",
+ "version": "v3.7.1",
"source": {
"type": "git",
"url": "https://github.com/components/jquery.git",
- "reference": "6cf38ee1fd04b6adf8e7dda161283aa35be818c3"
+ "reference": "8edc7785239bb8c2ad2b83302b856a1d61de60e7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/components/jquery/zipball/6cf38ee1fd04b6adf8e7dda161283aa35be818c3",
- "reference": "6cf38ee1fd04b6adf8e7dda161283aa35be818c3",
+ "url": "https://api.github.com/repos/components/jquery/zipball/8edc7785239bb8c2ad2b83302b856a1d61de60e7",
+ "reference": "8edc7785239bb8c2ad2b83302b856a1d61de60e7",
"shasum": ""
},
"type": "component",
@@ -659,7 +659,7 @@
"source": "https://github.com/jquery/jquery",
"wiki": "http://docs.jquery.com/"
},
- "time": "2021-03-20T19:13:42+00:00"
+ "time": "2023-09-22T01:43:46+00:00"
},
{
"name": "components/jqueryui",
@@ -1490,10 +1490,10 @@
},
{
"name": "npm-asset/primevue",
- "version": "3.15.0",
+ "version": "3.29.1",
"dist": {
"type": "tar",
- "url": "https://registry.npmjs.org/primevue/-/primevue-3.15.0.tgz"
+ "url": "https://registry.npmjs.org/primevue/-/primevue-3.29.1.tgz"
},
"type": "npm-asset",
"license": [
@@ -1520,16 +1520,16 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "2.0.42",
+ "version": "2.0.45",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "665d289f59e646a259ebf13f29be7f6f54cab24b"
+ "reference": "28d8f438a0064c9de80857e3270d071495544640"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/665d289f59e646a259ebf13f29be7f6f54cab24b",
- "reference": "665d289f59e646a259ebf13f29be7f6f54cab24b",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/28d8f438a0064c9de80857e3270d071495544640",
+ "reference": "28d8f438a0064c9de80857e3270d071495544640",
"shasum": ""
},
"require": {
@@ -1610,7 +1610,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/2.0.42"
+ "source": "https://github.com/phpseclib/phpseclib/tree/2.0.45"
},
"funding": [
{
@@ -1626,7 +1626,7 @@
"type": "tidelift"
}
],
- "time": "2023-03-06T12:45:53+00:00"
+ "time": "2023-09-15T20:55:47+00:00"
},
{
"name": "rmariuzzo/jquery-checkboxes",
@@ -1648,23 +1648,20 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.27.0",
+ "version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
- "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
"shasum": ""
},
"require": {
- "php": ">=7.1"
- },
- "provide": {
- "ext-ctype": "*"
+ "php": ">=5.3.3"
},
"suggest": {
"ext-ctype": "For best performance"
@@ -1672,7 +1669,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.27-dev"
+ "dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1710,7 +1707,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
},
"funding": [
{
@@ -1726,7 +1723,7 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
+ "time": "2020-10-23T09:01:57+00:00"
},
{
"name": "tapmodo/jcrop",
@@ -1785,30 +1782,30 @@
},
{
"name": "twig/twig",
- "version": "v1.44.7",
+ "version": "v1.42.5",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "0887422319889e442458e48e2f3d9add1a172ad5"
+ "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/0887422319889e442458e48e2f3d9add1a172ad5",
- "reference": "0887422319889e442458e48e2f3d9add1a172ad5",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e",
+ "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=5.5.0",
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"psr/container": "^1.0",
- "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+ "symfony/phpunit-bridge": "^4.4|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.44-dev"
+ "dev-master": "1.42-dev"
}
},
"autoload": {
@@ -1847,35 +1844,25 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v1.44.7"
+ "source": "https://github.com/twigphp/Twig/tree/1.x"
},
- "funding": [
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/twig/twig",
- "type": "tidelift"
- }
- ],
- "time": "2022-09-28T08:38:36+00:00"
+ "time": "2020-02-11T05:59:23+00:00"
},
{
"name": "vuejs/vuedatepicker_css",
- "version": "4.2.3",
+ "version": "5.4.0",
"dist": {
"type": "file",
- "url": "https://unpkg.com/@vuepic/vue-datepicker@4.2.3/dist/main.css"
+ "url": "https://unpkg.com/@vuepic/vue-datepicker@5.4.0/dist/main.css"
},
"type": "library"
},
{
"name": "vuejs/vuedatepicker_js",
- "version": "4.2.3",
+ "version": "5.4.0",
"dist": {
"type": "file",
- "url": "https://unpkg.com/@vuepic/vue-datepicker@4.2.3/dist/vue-datepicker.iife.js"
+ "url": "https://unpkg.com/@vuepic/vue-datepicker@5.4.0/dist/vue-datepicker.iife.js"
},
"type": "library"
},
@@ -1901,30 +1888,30 @@
"packages-dev": [
{
"name": "composer/pcre",
- "version": "3.1.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
- "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560",
"shasum": ""
},
"require": {
- "php": "^7.4 || ^8.0"
+ "php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.3",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^5"
+ "symfony/phpunit-bridge": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.x-dev"
+ "dev-main": "1.x-dev"
}
},
"autoload": {
@@ -1952,7 +1939,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.1.0"
+ "source": "https://github.com/composer/pcre/tree/1.0.1"
},
"funding": [
{
@@ -1968,31 +1955,31 @@
"type": "tidelift"
}
],
- "time": "2022-11-17T09:50:14+00:00"
+ "time": "2022-01-21T20:24:37+00:00"
},
{
"name": "composer/xdebug-handler",
- "version": "3.0.3",
+ "version": "2.0.5",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+ "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
- "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a",
+ "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a",
"shasum": ""
},
"require": {
- "composer/pcre": "^1 || ^2 || ^3",
- "php": "^7.2.5 || ^8.0",
+ "composer/pcre": "^1",
+ "php": "^5.3.2 || ^7.0 || ^8.0",
"psr/log": "^1 || ^2 || ^3"
},
"require-dev": {
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^6.0"
+ "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0"
},
"type": "library",
"autoload": {
@@ -2018,7 +2005,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+ "source": "https://github.com/composer/xdebug-handler/tree/2.0.5"
},
"funding": [
{
@@ -2034,79 +2021,38 @@
"type": "tidelift"
}
],
- "time": "2022-02-25T21:32:43+00:00"
- },
- {
- "name": "doctrine/deprecations",
- "version": "v1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/deprecations.git",
- "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
- "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
- "shasum": ""
- },
- "require": {
- "php": "^7.1|^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^9",
- "phpunit/phpunit": "^7.5|^8.5|^9.5",
- "psr/log": "^1|^2|^3"
- },
- "suggest": {
- "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
- "homepage": "https://www.doctrine-project.org/",
- "support": {
- "issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/v1.0.0"
- },
- "time": "2022-05-02T15:47:09+00:00"
+ "time": "2022-02-24T20:20:32+00:00"
},
{
"name": "doctrine/instantiator",
- "version": "1.5.0",
+ "version": "1.0.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
- "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": ">=5.3,<8.0-DEV"
},
"require-dev": {
- "doctrine/coding-standard": "^9 || ^11",
+ "athletic/athletic": "~0.1.8",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.16 || ^1",
- "phpstan/phpstan": "^1.4",
- "phpstan/phpstan-phpunit": "^1",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "vimeo/psalm": "^4.30 || ^5.4"
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
@@ -2120,18 +2066,18 @@
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
- "homepage": "https://ocramius.github.io/"
+ "homepage": "http://ocramius.github.com/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "homepage": "https://github.com/doctrine/instantiator",
"keywords": [
"constructor",
"instantiate"
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
+ "source": "https://github.com/doctrine/instantiator/tree/1.0.5"
},
"funding": [
{
@@ -2147,33 +2093,29 @@
"type": "tidelift"
}
],
- "time": "2022-12-30T00:15:36+00:00"
+ "time": "2015-06-14T21:17:01+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.11.1",
+ "version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
- "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/collections": "<1.6.8",
- "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ "php": "^5.6 || ^7.0"
},
"require-dev": {
- "doctrine/collections": "^1.6.8",
- "doctrine/common": "^2.13.3 || ^3.2.2",
- "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^4.1"
},
"type": "library",
"autoload": {
@@ -2198,28 +2140,22 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
},
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
- "type": "tidelift"
- }
- ],
- "time": "2023-03-08T13:26:56+00:00"
+ "time": "2017-10-19T19:58:43+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v4.15.5",
+ "version": "v4.17.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e"
+ "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e",
- "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+ "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
"shasum": ""
},
"require": {
@@ -2260,22 +2196,22 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
},
- "time": "2023-05-19T20:20:00+00:00"
+ "time": "2023-08-13T19:53:39+00:00"
},
{
"name": "pdepend/pdepend",
- "version": "2.13.0",
+ "version": "2.15.1",
"source": {
"type": "git",
"url": "https://github.com/pdepend/pdepend.git",
- "reference": "31be7cd4f305f3f7b52af99c1cb13fc938d1cfad"
+ "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pdepend/pdepend/zipball/31be7cd4f305f3f7b52af99c1cb13fc938d1cfad",
- "reference": "31be7cd4f305f3f7b52af99c1cb13fc938d1cfad",
+ "url": "https://api.github.com/repos/pdepend/pdepend/zipball/d12f25bcdfb7754bea458a4a5cb159d55e9950d0",
+ "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0",
"shasum": ""
},
"require": {
@@ -2309,9 +2245,15 @@
"BSD-3-Clause"
],
"description": "Official version of pdepend to be handled with Composer",
+ "keywords": [
+ "PHP Depend",
+ "PHP_Depend",
+ "dev",
+ "pdepend"
+ ],
"support": {
"issues": "https://github.com/pdepend/pdepend/issues",
- "source": "https://github.com/pdepend/pdepend/tree/2.13.0"
+ "source": "https://github.com/pdepend/pdepend/tree/2.15.1"
},
"funding": [
{
@@ -2319,7 +2261,7 @@
"type": "tidelift"
}
],
- "time": "2023-02-28T20:56:15+00:00"
+ "time": "2023-09-28T12:00:56+00:00"
},
{
"name": "phar-io/manifest",
@@ -2433,30 +2375,35 @@
},
{
"name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-2.x": "2.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2480,44 +2427,47 @@
],
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
},
- "time": "2020-06-27T09:03:43+00:00"
+ "time": "2017-09-11T18:02:19+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.3.0",
+ "version": "4.3.4",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
"shasum": ""
},
"require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+ "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
+ "webmozart/assert": "^1.0"
},
"require-dev": {
- "mockery/mockery": "~1.3.2",
- "psalm/phar": "^4.8"
+ "doctrine/instantiator": "^1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpdocumentor/type-resolver": "0.4.*",
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.x-dev"
+ "dev-master": "4.x-dev"
}
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": "src"
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2528,53 +2478,41 @@
{
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x"
},
- "time": "2021-10-19T17:43:47+00:00"
+ "time": "2019-12-28T18:55:12+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.7.1",
+ "version": "0.5.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "dfc078e8af9c99210337325ff5aa152872c98714"
+ "reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dfc078e8af9c99210337325ff5aa152872c98714",
- "reference": "dfc078e8af9c99210337325ff5aa152872c98714",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
+ "reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
"shasum": ""
},
"require": {
- "doctrine/deprecations": "^1.0",
- "php": "^7.4 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0",
- "phpstan/phpdoc-parser": "^1.13"
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
},
"require-dev": {
- "ext-tokenizer": "*",
- "phpbench/phpbench": "^1.2",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpunit/phpunit": "^9.5",
- "rector/rector": "^0.13.9",
- "vimeo/psalm": "^4.25"
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-1.x": "1.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
@@ -2592,31 +2530,30 @@
"email": "me@mikevanriel.com"
}
],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.1"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
},
- "time": "2023-03-27T19:02:04+00:00"
+ "time": "2017-12-30T13:23:38+00:00"
},
{
"name": "phpmd/phpmd",
- "version": "2.13.0",
+ "version": "2.14.1",
"source": {
"type": "git",
"url": "https://github.com/phpmd/phpmd.git",
- "reference": "dad0228156856b3ad959992f9748514fa943f3e3"
+ "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpmd/phpmd/zipball/dad0228156856b3ad959992f9748514fa943f3e3",
- "reference": "dad0228156856b3ad959992f9748514fa943f3e3",
+ "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8",
+ "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8",
"shasum": ""
},
"require": {
"composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
"ext-xml": "*",
- "pdepend/pdepend": "^2.12.1",
+ "pdepend/pdepend": "^2.15.1",
"php": ">=5.3.9"
},
"require-dev": {
@@ -2626,7 +2563,7 @@
"gregwar/rst": "^1.0",
"mikey179/vfsstream": "^1.6.8",
"phpunit/phpunit": "^4.8.36 || ^5.7.27",
- "squizlabs/php_codesniffer": "^2.0"
+ "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2"
},
"bin": [
"src/bin/phpmd"
@@ -2663,6 +2600,7 @@
"description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
"homepage": "https://phpmd.org/",
"keywords": [
+ "dev",
"mess detection",
"mess detector",
"pdepend",
@@ -2672,7 +2610,7 @@
"support": {
"irc": "irc://irc.freenode.org/phpmd",
"issues": "https://github.com/phpmd/phpmd/issues",
- "source": "https://github.com/phpmd/phpmd/tree/2.13.0"
+ "source": "https://github.com/phpmd/phpmd/tree/2.14.1"
},
"funding": [
{
@@ -2680,7 +2618,7 @@
"type": "tidelift"
}
],
- "time": "2022-09-10T08:44:15+00:00"
+ "time": "2023-09-28T13:07:44+00:00"
},
{
"name": "phpmetrics/phpmetrics",
@@ -2817,52 +2755,6 @@
},
"time": "2020-03-05T15:02:03+00:00"
},
- {
- "name": "phpstan/phpdoc-parser",
- "version": "1.21.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "6df62b08faef4f899772bc7c3bbabb93d2b7a21c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6df62b08faef4f899772bc7c3bbabb93d2b7a21c",
- "reference": "6df62b08faef4f899772bc7c3bbabb93d2b7a21c",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "nikic/php-parser": "^4.15",
- "php-parallel-lint/php-parallel-lint": "^1.2",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^1.5",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpstan/phpstan-strict-rules": "^1.0",
- "phpunit/phpunit": "^9.5",
- "symfony/process": "^5.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "PHPStan\\PhpDocParser\\": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PHPDoc parser with support for nullable, intersection and generic types",
- "support": {
- "issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/1.21.0"
- },
- "time": "2023-05-17T13:13:44+00:00"
- },
{
"name": "phpunit/php-code-coverage",
"version": "5.3.2",
@@ -3288,22 +3180,27 @@
},
{
"name": "psr/container",
- "version": "1.1.2",
+ "version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
- "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
- "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"shasum": ""
},
"require": {
- "php": ">=7.4.0"
+ "php": ">=5.3.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
@@ -3316,7 +3213,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "homepage": "http://www.php-fig.org/"
}
],
"description": "Common Container Interface (PHP FIG PSR-11)",
@@ -3330,9 +3227,9 @@
],
"support": {
"issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/1.1.2"
+ "source": "https://github.com/php-fig/container/tree/master"
},
- "time": "2021-11-05T16:50:12+00:00"
+ "time": "2017-02-14T16:28:37+00:00"
},
{
"name": "psr/log",
@@ -3696,27 +3593,23 @@
},
{
"name": "sebastian/finder-facade",
- "version": "1.2.3",
+ "version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/finder-facade.git",
- "reference": "167c45d131f7fc3d159f56f191a0a22228765e16"
+ "reference": "4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/167c45d131f7fc3d159f56f191a0a22228765e16",
- "reference": "167c45d131f7fc3d159f56f191a0a22228765e16",
+ "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f",
+ "reference": "4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f",
"shasum": ""
},
"require": {
- "php": "^7.1",
- "symfony/finder": "^2.3|^3.0|^4.0|^5.0",
- "theseer/fdomdocument": "^1.6"
+ "symfony/finder": "~2.3|~3.0|~4.0",
+ "theseer/fdomdocument": "~1.3"
},
"type": "library",
- "extra": {
- "branch-alias": []
- },
"autoload": {
"classmap": [
"src/"
@@ -3737,10 +3630,10 @@
"homepage": "https://github.com/sebastianbergmann/finder-facade",
"support": {
"issues": "https://github.com/sebastianbergmann/finder-facade/issues",
- "source": "https://github.com/sebastianbergmann/finder-facade/tree/1.2"
+ "source": "https://github.com/sebastianbergmann/finder-facade/tree/master"
},
"abandoned": true,
- "time": "2020-01-16T08:08:45+00:00"
+ "time": "2017-11-18T17:31:49+00:00"
},
{
"name": "sebastian/global-state",
@@ -4178,35 +4071,32 @@
},
{
"name": "symfony/config",
- "version": "v5.4.21",
+ "version": "v3.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4"
+ "reference": "bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/2a6b1111d038adfa15d52c0871e540f3b352d1e4",
- "reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4",
+ "url": "https://api.github.com/repos/symfony/config/zipball/bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f",
+ "reference": "bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/filesystem": "^4.4|^5.0|^6.0",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-php80": "^1.16",
- "symfony/polyfill-php81": "^1.22"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/filesystem": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-ctype": "~1.8"
},
"conflict": {
- "symfony/finder": "<4.4"
+ "symfony/dependency-injection": "<3.3",
+ "symfony/finder": "<3.3"
},
"require-dev": {
- "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
- "symfony/finder": "^4.4|^5.0|^6.0",
- "symfony/messenger": "^4.4|^5.0|^6.0",
- "symfony/service-contracts": "^1.1|^2|^3",
- "symfony/yaml": "^4.4|^5.0|^6.0"
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/event-dispatcher": "~3.3|~4.0",
+ "symfony/finder": "~3.3|~4.0",
+ "symfony/yaml": "~3.0|~4.0"
},
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
@@ -4234,10 +4124,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
+ "description": "Symfony Config Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v5.4.21"
+ "source": "https://github.com/symfony/config/tree/v3.4.47"
},
"funding": [
{
@@ -4253,47 +4143,41 @@
"type": "tidelift"
}
],
- "time": "2023-02-14T08:03:56+00:00"
+ "time": "2020-10-24T10:57:07+00:00"
},
{
"name": "symfony/console",
- "version": "v4.4.49",
+ "version": "v3.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9"
+ "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9",
- "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81",
+ "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.16",
- "symfony/service-contracts": "^1.1|^2"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/debug": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "psr/log": ">=3",
"symfony/dependency-injection": "<3.4",
- "symfony/event-dispatcher": "<4.3|>=5",
- "symfony/lock": "<4.4",
"symfony/process": "<3.3"
},
"provide": {
- "psr/log-implementation": "1.0|2.0"
+ "psr/log-implementation": "1.0"
},
"require-dev": {
- "psr/log": "^1|^2",
- "symfony/config": "^3.4|^4.0|^5.0",
- "symfony/dependency-injection": "^3.4|^4.0|^5.0",
- "symfony/event-dispatcher": "^4.3",
- "symfony/lock": "^4.4|^5.0",
- "symfony/process": "^3.4|^4.0|^5.0",
- "symfony/var-dumper": "^4.3|^5.0"
+ "psr/log": "~1.0",
+ "symfony/config": "~3.3|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.3|~4.0"
},
"suggest": {
"psr/log": "For using the console logger",
@@ -4324,10 +4208,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Eases the creation of beautiful and testable command line interfaces",
+ "description": "Symfony Console Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/console/tree/v4.4.49"
+ "source": "https://github.com/symfony/console/tree/v3.4.47"
},
"funding": [
{
@@ -4343,45 +4227,108 @@
"type": "tidelift"
}
],
- "time": "2022-11-05T17:10:16+00:00"
+ "time": "2020-10-24T10:57:07+00:00"
},
{
- "name": "symfony/dependency-injection",
- "version": "v5.4.23",
+ "name": "symfony/debug",
+ "version": "v3.4.47",
"source": {
"type": "git",
- "url": "https://github.com/symfony/dependency-injection.git",
- "reference": "bb7b7988c898c94f5338e16403c52b5a3cae1d93"
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/bb7b7988c898c94f5338e16403c52b5a3cae1d93",
- "reference": "bb7b7988c898c94f5338e16403c52b5a3cae1d93",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/ab42889de57fdfcfcc0759ab102e2fd4ea72dcae",
+ "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/container": "^1.1.1",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php80": "^1.16",
- "symfony/polyfill-php81": "^1.22",
- "symfony/service-contracts": "^1.1.6|^2"
+ "php": "^5.5.9|>=7.0.8",
+ "psr/log": "~1.0"
},
"conflict": {
- "ext-psr": "<1.1|>=2",
- "symfony/config": "<5.3",
- "symfony/finder": "<4.4",
- "symfony/proxy-manager-bridge": "<4.4",
- "symfony/yaml": "<4.4.26"
- },
- "provide": {
- "psr/container-implementation": "1.0",
- "symfony/service-implementation": "1.0|2.0"
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
},
"require-dev": {
- "symfony/config": "^5.3|^6.0",
- "symfony/expression-language": "^4.4|^5.0|^6.0",
- "symfony/yaml": "^4.4.26|^5.0|^6.0"
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/debug/tree/v3.4.47"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "abandoned": "symfony/error-handler",
+ "time": "2020-10-24T10:57:07+00:00"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v3.4.47",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "51d2a2708c6ceadad84393f8581df1dcf9e5e84b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/51d2a2708c6ceadad84393f8581df1dcf9e5e84b",
+ "reference": "51d2a2708c6ceadad84393f8581df1dcf9e5e84b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/container": "^1.0"
+ },
+ "conflict": {
+ "symfony/config": "<3.3.7",
+ "symfony/finder": "<3.3",
+ "symfony/proxy-manager-bridge": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "provide": {
+ "psr/container-implementation": "1.0"
+ },
+ "require-dev": {
+ "symfony/config": "~3.3|~4.0",
+ "symfony/expression-language": "~2.8|~3.0|~4.0",
+ "symfony/yaml": "~3.4|~4.0"
},
"suggest": {
"symfony/config": "",
@@ -4413,10 +4360,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Allows you to standardize and centralize the way objects are constructed in your application",
+ "description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v5.4.23"
+ "source": "https://github.com/symfony/dependency-injection/tree/v3.4.47"
},
"funding": [
{
@@ -4432,94 +4379,25 @@
"type": "tidelift"
}
],
- "time": "2023-04-21T15:04:16+00:00"
- },
- {
- "name": "symfony/deprecation-contracts",
- "version": "v2.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.5-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "files": [
- "function.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "A generic function and convention to trigger deprecation notices",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2020-10-24T10:57:07+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v5.4.23",
+ "version": "v3.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5"
+ "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5",
- "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/e58d7841cddfed6e846829040dca2cca0ebbbbb3",
+ "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.8",
- "symfony/polyfill-php80": "^1.16"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-ctype": "~1.8"
},
"type": "library",
"autoload": {
@@ -4544,10 +4422,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides basic utilities for the filesystem",
+ "description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.4.23"
+ "source": "https://github.com/symfony/filesystem/tree/v3.4.47"
},
"funding": [
{
@@ -4563,26 +4441,24 @@
"type": "tidelift"
}
],
- "time": "2023-03-02T11:38:35+00:00"
+ "time": "2020-10-24T10:57:07+00:00"
},
{
"name": "symfony/finder",
- "version": "v5.4.21",
+ "version": "v3.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19"
+ "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19",
- "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
+ "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php80": "^1.16"
+ "php": "^5.5.9|>=7.0.8"
},
"type": "library",
"autoload": {
@@ -4607,10 +4483,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Finds files and directories via an intuitive fluent interface",
+ "description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.4.21"
+ "source": "https://github.com/symfony/finder/tree/v3.4.47"
},
"funding": [
{
@@ -4626,27 +4502,24 @@
"type": "tidelift"
}
],
- "time": "2023-02-16T09:33:00+00:00"
+ "time": "2020-11-16T17:02:08+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.27.0",
+ "version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
+ "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
- "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b5f7b932ee6fa802fc792eabd77c4c88084517ce",
+ "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce",
"shasum": ""
},
"require": {
- "php": ">=7.1"
- },
- "provide": {
- "ext-mbstring": "*"
+ "php": ">=5.3.3"
},
"suggest": {
"ext-mbstring": "For best performance"
@@ -4654,7 +4527,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.27-dev"
+ "dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4693,7 +4566,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.19.0"
},
"funding": [
{
@@ -4709,331 +4582,7 @@
"type": "tidelift"
}
],
- "time": "2022-11-03T14:55:06+00:00"
- },
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.27.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
- "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-11-03T14:55:06+00:00"
- },
- {
- "name": "symfony/polyfill-php80",
- "version": "v1.27.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
- "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-11-03T14:55:06+00:00"
- },
- {
- "name": "symfony/polyfill-php81",
- "version": "v1.27.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
- "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.27-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php81\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-11-03T14:55:06+00:00"
- },
- {
- "name": "symfony/service-contracts",
- "version": "v2.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
- "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "psr/container": "^1.1",
- "symfony/deprecation-contracts": "^2.1|^3"
- },
- "conflict": {
- "ext-psr": "<1.1|>=2"
- },
- "suggest": {
- "symfony/service-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.5-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Service\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to writing services",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-05-30T19:17:29+00:00"
+ "time": "2020-10-23T09:01:57+00:00"
},
{
"name": "theseer/fdomdocument",
@@ -5085,23 +4634,23 @@
},
{
"name": "theseer/tokenizer",
- "version": "1.2.1",
+ "version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
- "php": "^7.2 || ^8.0"
+ "php": "^7.0"
},
"type": "library",
"autoload": {
@@ -5123,47 +4672,36 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ "source": "https://github.com/theseer/tokenizer/tree/master"
},
- "funding": [
- {
- "url": "https://github.com/theseer",
- "type": "github"
- }
- ],
- "time": "2021-07-28T10:34:58+00:00"
+ "time": "2019-06-13T22:48:21+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.11.0",
+ "version": "1.9.1",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
"shasum": ""
},
"require": {
- "ext-ctype": "*",
- "php": "^7.2 || ^8.0"
+ "php": "^5.3.3 || ^7.0 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
+ "vimeo/psalm": "<3.9.1"
},
"require-dev": {
- "phpunit/phpunit": "^8.5.13"
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10-dev"
- }
- },
"autoload": {
"psr-4": {
"Webmozart\\Assert\\": "src/"
@@ -5187,9 +4725,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ "source": "https://github.com/webmozarts/assert/tree/1.9.1"
},
- "time": "2022-06-03T18:03:27+00:00"
+ "time": "2020-07-08T17:02:28+00:00"
}
],
"aliases": [],
@@ -5201,5 +4739,5 @@
"php": ">=5.6.40"
},
"platform-dev": [],
- "plugin-api-version": "2.1.0"
+ "plugin-api-version": "2.2.0"
}
diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php
index 1a72888be..27e0a9a70 100644
--- a/config/cis.config-default.inc.php
+++ b/config/cis.config-default.inc.php
@@ -86,6 +86,7 @@ define("AUTH_NAME","FH-Complete");
* LDAP_BIND_USER: DN des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_BIND_PASSWORD: Passwort des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_USER_SEARCH_FILTER: LDAP Attribut in dem der Username steht nach dem gesucht wird (uid | sAMAccountName)
+ * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false) - wirksam für alle LDAP Server
*/
define('LDAP_SERVER','ldap://ldap.example.com');
define('LDAP_PORT',389);
@@ -94,6 +95,7 @@ define('LDAP_BASE_DN','ou=People,dc=example,dc=com');
define('LDAP_BIND_USER',null);
define('LDAP_BIND_PASSWORD',null);
define('LDAP_USER_SEARCH_FILTER','uid');
+define('LDAP_SERVICEPING',true);
// 2. LDAP Server (zB wenn Mitarbeiter und Studierende auf 2 getrennten Servern liegen)
/*
diff --git a/config/system.config-default.inc.php b/config/system.config-default.inc.php
index 45a83837e..a1f70086a 100644
--- a/config/system.config-default.inc.php
+++ b/config/system.config-default.inc.php
@@ -52,6 +52,7 @@
* LDAP_BIND_USER: DN des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_BIND_PASSWORD: Passwort des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_USER_SEARCH_FILTER: LDAP Attribut in dem der Username steht nach dem gesucht wird (uid | sAMAccountName)
+ * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false) - wirksam für alle LDAP Server
*/
define('LDAP_SERVER','ldap://ldap.example.com');
define('LDAP_PORT',389);
@@ -60,6 +61,7 @@
define('LDAP_BIND_USER',null);
define('LDAP_BIND_PASSWORD',null);
define('LDAP_USER_SEARCH_FILTER','uid');
+ define('LDAP_SERVICEPING',true);
// 2. LDAP Server (zB wenn Mitarbeiter und Studierende auf 2 getrennten Servern liegen)
/*
diff --git a/config/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php
index cbb3c1136..fdd971be0 100644
--- a/config/vilesci.config-default.inc.php
+++ b/config/vilesci.config-default.inc.php
@@ -75,6 +75,7 @@ define('AUTH_NAME', 'FH Complete');
* LDAP_BIND_USER: DN des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_BIND_PASSWORD: Passwort des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_USER_SEARCH_FILTER: LDAP Attribut in dem der Username steht nach dem gesucht wird (uid | sAMAccountName)
+ * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false) - wirksam für alle LDAP Server
*/
define('LDAP_SERVER', 'ldap://ldap.example.com');
define('LDAP_PORT', 389);
@@ -83,6 +84,7 @@ define('LDAP_BASE_DN', 'ou=People,dc=example,dc=com');
define('LDAP_BIND_USER', null);
define('LDAP_BIND_PASSWORD', null);
define('LDAP_USER_SEARCH_FILTER', 'uid');
+define('LDAP_SERVICEPING',true);
// 2. LDAP Server (zB wenn Mitarbeiter und Studierende auf 2 getrennten Servern liegen)
/*
diff --git a/config/wawi.config-default.inc.php b/config/wawi.config-default.inc.php
index bed069e39..0081c2420 100644
--- a/config/wawi.config-default.inc.php
+++ b/config/wawi.config-default.inc.php
@@ -53,6 +53,7 @@ define("AUTH_NAME","FHComplete");
* LDAP_BIND_USER: DN des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_BIND_PASSWORD: Passwort des Users falls eine Authentifizierung am LDAP noetig ist oder null
* LDAP_USER_SEARCH_FILTER: LDAP Attribut in dem der Username steht nach dem gesucht wird (uid | sAMAccountName)
+ * LDAP_SERVICEPING: LDAP Service Ping verwenden (true | false) - wirksam für alle LDAP Server
*/
define('LDAP_SERVER','ldap://ldap.example.com');
define('LDAP_PORT',389);
@@ -61,6 +62,7 @@ define('LDAP_BASE_DN','ou=People,dc=example,dc=com');
define('LDAP_BIND_USER',null);
define('LDAP_BIND_PASSWORD',null);
define('LDAP_USER_SEARCH_FILTER','uid');
+define('LDAP_SERVICEPING',true);
// 2. LDAP Server (zB wenn Mitarbeiter und Studierende auf 2 getrennten Servern liegen)
/*
diff --git a/content/dragboard.js.php b/content/dragboard.js.php
index 6510cfc47..9f720c57a 100644
--- a/content/dragboard.js.php
+++ b/content/dragboard.js.php
@@ -385,6 +385,7 @@ var LeLektorDDObserver=
req.add('lehreinheit_id', lehreinheit_id);
req.add('mitarbeiter_uid', uid);
+ req.add('studiensemester_kurzbz', getStudiensemester());
var response = req.executePOST();
diff --git a/content/fas.xul.php b/content/fas.xul.php
index 80efdb2f9..abe7f613e 100644
--- a/content/fas.xul.php
+++ b/content/fas.xul.php
@@ -140,6 +140,8 @@ foreach($addon_obj->result as $addon)
+
+
@@ -507,19 +509,38 @@ foreach($addon_obj->result as $addon)
label = "&menu-dokumente-zutrittskarte.label;"
command = "menu-dokumente-zutrittskarte:command"
accesskey = "&menu-dokumente-zutrittskarte.accesskey;"/>
+
-
+
+ accesskey = "&menu-dokumente-inskriptionsbestaetigungeng.accesskey;"
+ />
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Leitung/Actions.js b/public/js/components/Studierendenantrag/Leitung/Actions.js
new file mode 100644
index 000000000..71ada5c20
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Leitung/Actions.js
@@ -0,0 +1,87 @@
+import ActionsNew from './Actions/New.js';
+import ActionsColumns from './Actions/Columns.js';
+import Phrasen from '../../../mixins/Phrasen.js';
+
+export default {
+ components: {
+ ActionsNew,
+ ActionsColumns
+ },
+ mixins: [Phrasen],
+ props: {
+ selectedData: Array,
+ columns: Array,
+ stgL: Array,
+ stgA: Array
+ },
+ emits: [
+ 'reload',
+ 'download',
+ 'action:approve',
+ 'action:reject',
+ 'action:reopen'
+ ],
+ data() {
+ return {
+ currentStudent: ''
+ }
+ },
+ computed: {
+ selectedCanBeApproved() {
+ if (!this.selectedData.length)
+ return false;
+ if (!this.selectedData.every(val => this.stgL.includes(val.studiengang_kz)))
+ return false;
+ return this.selectedData.filter(row => {
+ return (row.typ == 'Wiederholung' && row.status == 'Lvszugewiesen') || (row.typ != 'Wiederholung' && (row.status == 'Erstellt' || row.status == 'ErstelltStgl'));
+ }).length == this.selectedData.length;
+ },
+ selectedCanBeRejected() {
+ if (!this.selectedData.length)
+ return false;
+ if (!this.selectedData.every(val => this.stgL.includes(val.studiengang_kz)))
+ return false;
+ return this.selectedData.filter(row => {
+ return (row.typ == 'Unterbrechung' && row.status == 'Erstellt');
+ }).length == this.selectedData.length;
+ },
+ selectedCanBeReopened() {
+ if (!this.selectedData.length)
+ return false;
+ if (!this.selectedData.every(val => this.stgA.includes(val.studiengang_kz)))
+ return false;
+ return this.selectedData.filter(row => {
+ return (row.typ == 'Wiederholung' && row.status == 'Verzichtet');
+ }).length == this.selectedData.length;
+ },
+ newUrl() {
+ return FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + this.currentStudent;
+ }
+ },
+ methods: {
+ hideModal() {
+ bootstrap.Modal.getInstance(this.$refs.modal).hide();
+ }
+ },
+ template: `
+
+
+
+
+
+
+
{{p.t('table', 'with_selected', {count: selectedData.length})}}
+
{{p.t('studierendenantrag', 'btn_approve')}}
+
{{p.t('studierendenantrag', 'btn_reject')}}
+
{{p.t('studierendenantrag', 'btn_reopen')}}
+
+
+
+
+
+
+
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Leitung/Actions/Columns.js b/public/js/components/Studierendenantrag/Leitung/Actions/Columns.js
new file mode 100644
index 000000000..7128761d7
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Leitung/Actions/Columns.js
@@ -0,0 +1,25 @@
+export default {
+ props: {
+ columns: Array
+ },
+ methods: {
+ toggleColumn(col) {
+ col.visible = !col.visible;
+ col.original.toggle()
+ },
+ show() {
+
+ }
+ },
+ template: `
+
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Leitung/Actions/New.js b/public/js/components/Studierendenantrag/Leitung/Actions/New.js
new file mode 100644
index 000000000..ad3009bdb
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Leitung/Actions/New.js
@@ -0,0 +1,113 @@
+import BsAlert from '../../../Bootstrap/Alert.js';
+import BsModal from '../../../Bootstrap/Modal.js';
+import Phrasen from '../../../../mixins/Phrasen.js';
+
+export default {
+ components: {
+ BsModal,
+ AutoComplete: primevue.autocomplete
+ },
+ mixins: [
+ Phrasen
+ ],
+ emits: [
+ 'reload'
+ ],
+ data() {
+ return {
+ data: [],
+ student: '',
+ abortController: null
+ }
+ },
+ computed: {
+ newUrl() {
+ return FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/lehre/Studierendenantrag/abmeldungStgl/' + this.student.prestudent_id;
+ }
+ },
+ methods: {
+ openForm() {
+ bootstrap.Modal.getInstance(this.$refs.modal).hide();
+ BsModal.popup(Vue.h('iframe', {
+ src: this.newUrl,
+ class: 'position-absolute top-0 start-0 w-100 h-100'
+ }), {
+ dialogClass: 'modal-fullscreen'
+ }, this.p.t('studierendenantrag', 'antrag_header')).then(() => {
+ this.$emit('reload');
+ this.student = '';
+ });
+ },
+ loadData(evt) {
+ if (this.abortController)
+ this.abortController.abort();
+ this.abortController = new AbortController();
+
+ axios.post(
+ FHC_JS_DATA_STORAGE_OBJECT.app_root +
+ FHC_JS_DATA_STORAGE_OBJECT.ci_router +
+ '/components/Antrag/Abmeldung/getStudiengaengeAssistenz/',
+ evt,
+ {
+ signal: this.abortController.signal
+ }
+ ).then(
+ result => {
+ if (result.data.error) {
+ BsAlert.popup(result.data.retval, {dialogClass: 'alert alert-danger'});
+ } else {
+ this.data = result.data.retval;
+ }
+ return result;
+ }
+ ).catch(() => {});
+ }
+ },
+ template: `
+
+
+
+ {{p.t('studierendenantrag','btn_new')}}
+
+
+
+
+
+
+
{{p.t('person','studentIn')}}
+
+
+
+
+ {{slotProps.option.name}}
+
+
+
+
+
+
+
+
+
+
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Leitung/GrundPopup.js b/public/js/components/Studierendenantrag/Leitung/GrundPopup.js
new file mode 100644
index 000000000..3a7b40f2d
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Leitung/GrundPopup.js
@@ -0,0 +1,62 @@
+
+import BsAlert from '../../Bootstrap/Alert.js';
+import Phrasen from '../../../mixins/Phrasen.js';
+
+export default {
+ mixins: [
+ BsAlert,
+ Phrasen
+ ],
+ props: {
+ placeholder: String,
+ default: String,
+ countRemaining: Number,
+ optional: Boolean
+ },
+ data: () => ({
+ value: '',
+ result: false,
+ check: false,
+ isInvalid: false
+ }),
+ methods: {
+ submit() {
+ if (!this.value && !this.optional) {
+ this.isInvalid = true;
+ } else {
+ this.result = [this.value, this.check];
+ this.hide();
+ }
+ }
+ },
+ created() {
+ if (this.default)
+ this.value = this.default;
+ },
+ popup(msg, options) {
+ if (typeof options === 'string')
+ options = { default: options };
+ return BsAlert.popup.bind(this)(msg, options);
+ },
+ template: `
+
+
+
+
+
+
+
+ {{p.t('kvp','new.error.required')}}
+
+
+
+
+
+
+ {{p.t('studierendenantrag','fuer_alle_uebernehmen')}}
+
+ {{p.t('ui','ok')}}
+ {{p.t('ui','cancel')}}
+
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Leitung/Header.js b/public/js/components/Studierendenantrag/Leitung/Header.js
new file mode 100644
index 000000000..388a93b7d
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Leitung/Header.js
@@ -0,0 +1,24 @@
+import Phrasen from '../../../mixins/Phrasen.js';
+
+export default {
+ mixins: [Phrasen],
+ props: {
+ stgs: Array
+ },
+ emits: [
+ 'input'
+ ],
+ template: `
+
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Leitung/LvPopup.js b/public/js/components/Studierendenantrag/Leitung/LvPopup.js
new file mode 100644
index 000000000..db13a1bb7
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Leitung/LvPopup.js
@@ -0,0 +1,149 @@
+import BsAlert from '../../Bootstrap/Alert.js';
+import {CoreFetchCmpt} from "../../Fetch.js";
+import Phrasen from '../../../mixins/Phrasen.js';
+
+export default {
+ components: {
+ CoreFetchCmpt
+ },
+ mixins: [
+ BsAlert,
+ Phrasen
+ ],
+ props: {
+ footer: Boolean,
+ antragId: Number,
+ countRemaining: Number
+ },
+ data(){
+ return {
+ lvs: null,
+ refresh: true,
+ result: false,
+ check: false
+ };
+ },
+ computed: {
+ lvzugelassen() {
+ let zwischen = {};
+ for (let k in this.lvs){
+ zwischen[k] = this.lvs[k] ? this.lvs[k].filter(lv=>lv.antrag_zugelassen) : null;
+ }
+ return zwischen;
+ },
+ lvzugelassenLength() {
+ return Object.values(this.lvzugelassen).reduce((result, current) => result + (current ? current.length : 0), 0);
+ }
+ },
+ methods: {
+ setlvs(param) {
+ if(param.error)
+ {
+ this.$refs.fetchCompt.error = true;
+ this.$refs.fetchCompt.errorMessage = param.retval;
+ }
+ else
+ this.lvs = param.retval;
+ },
+ loadlvs() {
+ if (!this.antragId)
+ return new Promise(() => {});
+ return axios.get(FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/components/Antrag/Wiederholung/getLvs/' + this.antragId);
+ },
+ submit(result) {
+ this.result = [result, this.check];
+ this.hide();
+ }
+ },
+ watch: {
+ antragId() {
+ Vue.nextTick(() => {
+ this.refresh = !this.refresh;
+ });
+ }
+ },
+ popup(msg, options) {
+ if (typeof options === 'string')
+ options = { default: options };
+ return BsAlert.popup.bind(this)(msg, options);
+ },
+ template: `
+
+
+
+
+
+
+
+ {{p.t('studierendenantrag','error_no_lvs')}}
+
+
+
+
+ {{ p.t('studierendenantrag',['title_lv_nicht_zugelassen', 'title_lv_wiederholen'][sem.substr(0,1)-1]) }}
+ {{sem.substr(1)}}
+
+
+
+
+ {{p.t('ui','bezeichnung')}}
+ {{p.t('lehre','lehrform')}}
+ ECTS
+ {{p.t('lehre','note')}}
+
+ {{p.t('global','anmerkung')}}
+
+
+
+
+
+ {{p.t('studierendenantrag/error_stg_last_semester')}}
+
+
+
+
+
+ {{lv.bezeichnung}}
+
+
+
+
+ {{lv.lehrform_kurzbz}}
+
+
+
+
+ {{lv.ects}}
+
+
+
+
+ {{lv.note || '---'}}
+
+
+
+
+ {{lv.antrag_anmerkung}}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{p.t('studierendenantrag','fuer_x_uebernehmen', {count: countRemaining})}}
+
+ {{p.t('studierendenantrag','btn_approve')}}
+ {{p.t('ui','skip')}}
+
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Leitung/Table.js b/public/js/components/Studierendenantrag/Leitung/Table.js
new file mode 100644
index 000000000..8cbfdd9d7
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Leitung/Table.js
@@ -0,0 +1,384 @@
+import BsModal from '../../Bootstrap/Modal.js';
+import {CoreFetchCmpt} from '../../Fetch.js';
+import LvPopup from './LvPopup.js';
+import Phrasen from '../../../mixins/Phrasen.js';
+import { dateFilter } from '../../../tabulator/filters/Dates.js';
+
+export default {
+ components: {
+ BsModal,
+ CoreFetchCmpt,
+ LvPopup
+ },
+ mixins: [Phrasen],
+ props: {
+ selectedData: Array,
+ columnData: Array,
+ stgL: Array,
+ stgA: Array
+ },
+ emits: [
+ 'update:columnData',
+ 'update:selectedData',
+ 'action:approve',
+ 'action:reject',
+ 'action:reopen',
+ 'action:object',
+ 'action:objectionDeny',
+ 'action:objectionApprove',
+ 'action:cancel'
+ ],
+ data() {
+ return {
+ ajaxUrl: FHC_JS_DATA_STORAGE_OBJECT.app_root +
+ FHC_JS_DATA_STORAGE_OBJECT.ci_router +
+ '/components/Antrag/Leitung/getAntraege/',
+ table: null,
+ lastHistoryClickedId: null,
+ historyData: [],
+ lvsData: null
+ }
+ },
+ methods: {
+ reload(stg) {
+ this.table.replaceData(this.ajaxUrl + (stg || ''));
+ },
+ download() {
+ this.table.download("csv", "data.csv");
+ },
+ getHistory() {
+ if (this.lastHistoryClickedId === null)
+ return null;
+ return axios.get(
+ FHC_JS_DATA_STORAGE_OBJECT.app_root +
+ FHC_JS_DATA_STORAGE_OBJECT.ci_router +
+ '/components/Antrag/Leitung/getHistory/' +
+ this.lastHistoryClickedId
+ ).then(res => {
+ this.historyData = res.data.retval.sort((a, b) => a.insertamum > b.insertamum);
+ });
+ },
+ showHistoryGrund(grund) {
+ this.$refs.modalGrund.$el.addEventListener(
+ 'hidden.bs.modal',
+ this.$refs.history.show,
+ {
+ once: true
+ }
+ );
+ this.$refs.modalGrundPre.innerHTML = grund;
+ },
+ showLVs(data) {
+ this.lvsData = data;
+ this.$refs.lvList.show();
+ }
+ },
+ mounted() {
+ function dateFormatter(cell)
+ {
+ let val = cell.getValue();
+ if (!val)
+ return '';
+ let date = new Date(val);
+ return date.toLocaleDateString();
+ }
+
+ this.table = new Tabulator(this.$refs.table, {
+ placeholder:"Keine zu bearbeitenden Datensätze",
+ movableColumns: true,
+ height: '50vh',
+ layout: "fitDataStretch", // TODO(chris): wont work when changed
+ ajaxURL: this.ajaxUrl,
+ persistence: { // NOTE(chris): do not store column titles
+ sort: true, //persist column sorting
+ filter: true, //persist filters
+ headerFilter: true, //persist header filters
+ group: true, //persist row grouping
+ page: true, //persist page
+ columns: ["width", "visible"], //persist columns
+ },
+ persistenceID: 'studierendenantrag_leitung',
+ columns: [{
+ formatter: 'rowSelection',
+ titleFormatter: 'rowSelection',
+ titleFormatterParams: {
+ rowRange: 'active'
+ },
+ hozAlign: 'center',
+ headerSort: false
+ }, {
+ field: 'studierendenantrag_id',
+ title: '#'
+ }, {
+ field: 'bezeichnung',
+ title: this.p.t('lehre', 'studiengang'),
+ headerFilter: 'list',
+ headerFilterParams: {
+ valuesLookup: true,
+ clearable: true,
+ autocomplete: true,
+ }
+ }, {
+ field: 'orgform',
+ title: this.p.t('lehre', 'organisationsform'),
+ headerFilter: 'list',
+ headerFilterParams: {
+ valuesLookup: true,
+ clearable: true,
+ autocomplete: true,
+ }
+ }, {
+ field: 'typ',
+ title: this.p.t('studierendenantrag', 'antrag_typ'),
+ headerFilter: 'list',
+ headerFilterParams: {
+ valuesLookup: true,
+ clearable: true,
+ autocomplete: true,
+ },
+ formatter: (cell, formatterParams, onRendered) => {
+ return this.p.t('studierendenantrag','antrag_typ_' + cell.getValue());
+ }
+ }, {
+ field: 'statustyp',
+ title: this.p.t('studierendenantrag', 'antrag_status'),
+ headerFilter: 'list',
+ headerFilterParams: {
+ valuesLookup: true,
+ clearable: true,
+ autocomplete: true,
+ },
+ formatter: (cell, formatterParams, onRendered) => {
+ let link = document.createElement('a');
+ link.href = "#";
+ link.innerHTML = cell.getValue();
+ link.addEventListener('click', e => {
+ e.preventDefault();
+ this.lastHistoryClickedId = cell.getData().studierendenantrag_id;
+ this.$refs.historyLoader.fetchData();
+ this.$refs.history.show();
+ });
+
+ return link;
+ }
+ }, {
+ field: 'matrikelnr',
+ title: this.p.t('person', 'personenkennzeichen'),
+ headerFilter: 'input'
+ }, {
+ field: 'prestudent_id',
+ title: this.p.t('lehre', 'prestudent'),
+ headerFilter: 'input'
+ }, {
+ field: 'name',
+ title: this.p.t('global', 'name'),
+ mutator: (value, data) => (data.vorname + ' ' + data.nachname).replace(/^\s*(.*)\s*$/, '$1'),
+ headerFilter: 'input'
+ }, {
+ field: 'datum',
+ title: this.p.t('global', 'datum'),
+ formatter: dateFormatter,
+ headerFilterFunc: 'dates',
+ headerFilter: dateFilter
+ }, {
+ field: 'datum_wiedereinstieg',
+ title: this.p.t('studierendenantrag', 'antrag_datum_wiedereinstieg'),
+ formatter: dateFormatter,
+ headerFilterFunc: 'dates',
+ headerFilter: dateFilter
+ }, {
+ field: 'grund',
+ title: this.p.t('studierendenantrag', 'antrag_grund'),
+ formatter: (cell, formatterParams, onRendered) => {
+ let link = document.createElement('a'),
+ val = cell.getValue();
+ link.href = "#modal-grund";
+ link.setAttribute('data-bs-toggle', 'modal');
+ link.innerHTML = this.p.t('studierendenantrag', 'antrag_grund');
+ link.addEventListener('click', () => {
+ this.$refs.modalGrundPre.innerHTML = val;
+ });
+
+ return val ? link : '';
+ }
+ }, {
+ field: 'dms_id',
+ title: this.p.t('studierendenantrag', 'antrag_dateianhaenge'),
+ formatter: (cell, formatterParams, onRendered) => {
+ let val = cell.getValue();
+ if (!val)
+ return '';
+ return ' ' + this.p.t('studierendenantrag', 'antrag_anhang') + ' ';
+ }
+ }, {
+ field: 'actions',
+ formatter: (cell, formatterParams, onRendered) => {
+ let container = document.createElement('div'),
+ data = cell.getData();
+
+ container.className = "d-flex gap-2";
+
+ if ((data.typ == 'Abmeldung' || data.typ == 'AbmeldungStgl' || data.typ == 'Unterbrechung') && (data.status == 'Genehmigt' || data.status == 'Beeinsprucht' || data.status == 'EinspruchAbgelehnt' || data.status == 'EmailVersandt')) {
+ // NOTE(chris): Download PDF
+ let button = document.createElement('a');
+ button.innerHTML = ' ';
+ button.className = "btn btn-outline-secondary";
+ button.target = "_blank";
+ button.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +
+ 'content/pdfExport.php?xml=Antrag' + data.typ + '.xml.php&xsl=Antrag' + data.typ + '&id=' + data.studierendenantrag_id + '&output=pdf';
+ container.append(button);
+ }
+ if (data.typ == 'AbmeldungStgl' && data.status == 'Genehmigt') {
+ // NOTE(chris): Object
+ let button = document.createElement('button');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_object');
+ button.className = "btn btn-outline-secondary";
+ button.addEventListener('click', () => this.$emit('action:object', [cell.getData()]));
+ container.append(button);
+ }
+
+ if (data.typ == 'AbmeldungStgl' && data.status == 'Beeinsprucht') {
+ // NOTE(chris): Deny Objection
+ let button = document.createElement('button');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_objection_deny');
+ button.className = "btn btn-outline-secondary";
+ button.addEventListener('click', () => this.$emit('action:objectionDeny', [cell.getData()]));
+ container.append(button);
+
+ // NOTE(chris): Approve Objection
+ button = document.createElement('button');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_objection_approve');
+ button.className = "btn btn-outline-secondary";
+ button.addEventListener('click', () => this.$emit('action:objectionApprove', [cell.getData()]));
+ container.append(button);
+ }
+
+ if (this.stgA.includes(data.studiengang_kz)) {
+ // NOTE(chris): Reopen
+ if (data.typ == 'Wiederholung' && data.status == 'Verzichtet') {
+ let button = document.createElement('button');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_reopen');
+ button.className = "btn btn-outline-secondary";
+ button.addEventListener('click', () => this.$emit('action:reopen', [cell.getData()]));
+ container.append(button);
+ }
+ // NOTE(chris): Lv Zuweisen
+ if (data.typ == 'Wiederholung' && (data.status == 'Erstellt' || data.status == 'Lvszugewiesen')) {
+ let button = document.createElement('a');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_lvzuweisen');
+ button.className = "btn btn-outline-secondary";
+ button.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +
+ FHC_JS_DATA_STORAGE_OBJECT.ci_router +
+ '/lehre/Antrag/Wiederholung/assistenz/' +
+ cell.getData().studierendenantrag_id + '/frame';
+ button.onclick = e => {
+ e.preventDefault();
+ BsModal.popup(Vue.h('iframe', {
+ src: button.href,
+ class: 'position-absolute top-0 start-0 w-100 h-100'
+ }), {
+ dialogClass: 'modal-fullscreen'
+ }, this.p.t('studierendenantrag', 'title_lvzuweisen', cell.getData())).then(() => {
+ this.$emit('reload');
+ });
+ };
+ container.append(button);
+ }
+ // NOTE(chris): Cancel
+ if (data.typ == 'AbmeldungStgl' && (data.status == 'Erstellt' || data.status == 'Genehmigt' )) {
+ let button = document.createElement('button');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_cancel');
+ button.className = "btn btn-outline-secondary";
+ button.addEventListener('click',() => this.$emit('action:cancel', [cell.getData()]));
+ container.append(button);
+ }
+ }
+
+ if (this.stgL.includes(data.studiengang_kz)) {
+ // NOTE(chris): Approve
+ if ((data.typ == 'Wiederholung' && data.status == 'Lvszugewiesen') || (data.typ != 'Wiederholung' && data.status == 'Erstellt')) {
+ let button = document.createElement('button');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_approve');
+ button.className = "btn btn-outline-secondary";
+ button.addEventListener('click', () => this.$emit('action:approve', [cell.getData()]));
+ container.append(button);
+ }
+ // NOTE(chris): Reject (Unterbrechung braucht grund)
+ if (data.status == 'Erstellt' && data.typ == 'Unterbrechung') {
+ let button = document.createElement('button');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_reject');
+ button.className = "btn btn-outline-secondary";
+ button.addEventListener('click', () => this.$emit('action:reject', [cell.getData()]));
+ container.append(button);
+ }
+ }
+
+ // NOTE(chris): Show LVs
+ if (data.typ == 'Wiederholung' && (data.status == 'Lvszugewiesen' || data.status == 'Genehmigt')) {
+ let button = document.createElement('button');
+ button.innerHTML = this.p.t('studierendenantrag', 'btn_show_lvs');
+ button.className = "btn btn-outline-secondary";
+ button.addEventListener('click', () => this.showLVs(cell.getData()));
+ container.append(button);
+ }
+
+ // TODO(chris): not yet perfect
+ onRendered(() => {
+ cell.getColumn().setWidth(true);
+ });
+
+ return container;
+ }
+ }]
+ });
+ this.table.on("tableBuilt", () => {
+ let columns = this.table.getColumns();
+ let columnData = [];
+ for (let col of columns) {
+ let def = col.getDefinition();
+ if (def.title) {
+ columnData.push({
+ title: def.title,
+ visible: col.isVisible(),
+ original: col
+ });
+ }
+ }
+ this.$emit('update:columnData', columnData);
+ });
+ this.table.on("rowSelectionChanged", data => {
+ this.$emit('update:selectedData', data);
+ });
+ },
+ template: `
+
+
+
+ {{p.t('studierendenantrag', 'antrag_grund')}}
+
+
+
+ {{p.t('studierendenantrag', 'title_history', {id: lastHistoryClickedId})}}
+
+
+
+
+
+ {{p.t('studierendenantrag', 'title_show_lvs', lvsData ? lvsData : {name: ''}) }}
+
+
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Lvzuweisung.js b/public/js/components/Studierendenantrag/Lvzuweisung.js
new file mode 100644
index 000000000..376e266d3
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Lvzuweisung.js
@@ -0,0 +1,251 @@
+import StudierendenantragStatus from './Status.js';
+import Phrasen from '../../mixins/Phrasen.js';
+
+export default {
+ components: {
+ StudierendenantragStatus
+ },
+ mixins: [Phrasen],
+ props: {
+ antragId: Number,
+ initialStatusCode: String,
+ initialStatusMsg: String,
+ disabled: Boolean
+ },
+ data() {
+ return {
+ lvs: [],
+ isloading: false,
+ statusCode: '',
+ statusMsg: ''
+ };
+ },
+ computed: {
+ lvs1() {
+ return this.lvs[Object.keys(this.lvs).filter(key => key.substr(0, 1) == 1)] || [];
+ },
+ lvs2() {
+ return this.lvs[Object.keys(this.lvs).filter(key => key.substr(0, 1) == 2)] || [];
+ },
+ lvs1sem(){
+ return (Object.keys(this.lvs).filter(key => key.substr(0, 1) == 1).pop() || "1").substr(1);
+ },
+ lvs2sem(){
+ return (Object.keys(this.lvs).filter(key => key.substr(0, 1) == 2).pop() || "2").substr(1);
+ },
+ statusSeverity() {
+ switch (this.statusCode) {
+ case 0: return 'danger';
+ default: return 'info';
+ }
+ }
+ },
+ methods: {
+ save() {
+ this.isloading = true;
+ const forbiddenLvs = this.lvs1.filter(lv => lv.antrag_zugelassen && !lv._children).map(lv => ({
+ studierendenantrag_id: this.antragId,
+ lehrveranstaltung_id: lv.lehrveranstaltung_id,
+ zugelassen: 0,
+ anmerkung: lv.antrag_anmerkung || "",
+ studiensemester_kurzbz: this.lvs1sem
+ }));
+ const mandatoryLvs = this.lvs2.filter(lv => !lv._children).map(lv => ({
+ studierendenantrag_id: this.antragId,
+ lehrveranstaltung_id: lv.lehrveranstaltung_id,
+ zugelassen:lv.antrag_zugelassen ? 1 : 2,
+ anmerkung: lv.antrag_anmerkung || "",
+ studiensemester_kurzbz: this.lvs2sem
+ }));
+ axios.post(FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/components/Antrag/Wiederholung/saveLvs/', {forbiddenLvs, mandatoryLvs})
+ .then(response => {
+ if(!response.data.error) {
+ this.addAlert('Speichern erfolgreich', 'alert-success');
+ this.statusCode = response.data.retval[0].studierendenantrag_statustyp_kurzbz;
+ this.statusMsg = response.data.retval[0].typ;
+ } else {
+ this.addAlert(response.data.retval, 'alert-danger');
+ this.statusCode = 0;
+ this.statusMsg = 'Error';
+ }
+ this.isloading = false;
+ }).catch(error => {
+ this.addAlert(error.message, 'alert-danger');
+ this.statusCode = 0;
+ this.statusMsg = 'Error';
+ this.isloading = false;
+ }).finally(() => {
+ window.scrollTo(0, 0);
+ });
+ },
+ addAlert(text, type) {
+ const para = document.createElement("p");
+ para.innerText = text;
+ para.className = "alert " + type + " alert-dismissible fade show";
+ const btn = document.createElement("button");
+ btn.className = "btn-close";
+ btn.type = "button";
+ btn.setAttribute("aria-label", "Close");
+ btn.setAttribute("data-bs-dismiss", "alert");
+ para.appendChild(btn);
+
+ this.$refs.alertbox.appendChild(para);
+ }
+ },
+ created() {
+ this.statusCode = this.initialStatusCode;
+ this.statusMsg = this.initialStatusMsg;
+ },
+ mounted() {
+ axios.get(FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/components/Antrag/Wiederholung/getLvs/' + this.antragId).then(
+ result => {
+ if(result.data.error)
+ {
+ this.addAlert(result.data.retval, 'alert-danger');
+ this.isloading = true;
+ }
+ else
+ {
+ let res = {};
+ for (var k in result.data.retval) {
+ if (result.data.retval[k] === null) {
+ const alert = document.createElement('div');
+ alert.innerHTML = this.p.t('studierendenantrag', 'error_stg_last_semester');
+ alert.className = 'alert alert-warning';
+ alert.role = 'alert';
+ this.$refs["lvtable" + k.substr(0,1)].append(alert);
+ continue;
+ }
+ let lvs = result.data.retval[k].reduce((obj,lv) => {
+ obj[lv.studienplan_lehrveranstaltung_id] = lv;
+ return obj;
+ }, {});
+ for (var lv of Object.values(lvs)) {
+ if (!lv.studienplan_lehrveranstaltung_id_parent)
+ continue;
+ if (!lvs[lv.studienplan_lehrveranstaltung_id_parent])
+ console.error('parent not available');
+ else {
+ if (!lvs[lv.studienplan_lehrveranstaltung_id_parent]._children)
+ lvs[lv.studienplan_lehrveranstaltung_id_parent]._children = [];
+ lvs[lv.studienplan_lehrveranstaltung_id_parent]._children.push(lv);
+ }
+ }
+ res[k] = Object.values(lvs).filter(lv => !lv.studienplan_lehrveranstaltung_id_parent);
+ let current = res[k];
+ let index = k.substr(0,1);
+ var table = new Tabulator(this.$refs["lvtable" + k.substr(0,1)], {
+ data: current,
+ dataTree: true,
+ dataTreeStartExpanded: true, //start with an expanded tree
+ dataTreeChildIndent: 15,
+ layout: "fitDataStretch",
+ columns: [
+ {title: this.p.t('ui','bezeichnung'), field: "bezeichnung"},
+ {title: this.p.t('lehre','lehrform'), field: "lehrform_kurzbz"},
+ {title: "ECTS", field: "ects"},
+ {title: this.p.t('lehre','note'), field: "note", formatter:(cell, formatterParams, onRendered)=>cell.getValue() || "---"},
+ {title: (index==1) ? this.p.t('studierendenantrag','lv_nicht_zulassen') : this.p.t('studierendenantrag','lv_wiederholen'), field: "antrag_zugelassen", formatter: (cell, formatterParams, onRendered) => {
+ let data = cell.getData();
+ if(data._children || !data.zeugnis)
+ return "";
+ let input = document.createElement('input');
+ input.className = "form-check-input";
+ input.type = "checkbox";
+ input.role = "switch";
+ input.checked = cell.getValue();
+ input.addEventListener('input', () => {
+ lvs[data.studienplan_lehrveranstaltung_id].antrag_zugelassen = input.checked;
+ cell.getRow().reformat();
+ });
+ if (this.disabled) {
+ input.disabled = true;
+ }
+
+ let div = document.createElement('div');
+ div.className = 'form-check form-switch';
+ div.append(input);
+
+ return div;
+ }},
+ {
+ title: this.p.t('global','anmerkung'),
+ field: "antrag_anmerkung",
+ headerSort:false,
+ titleFormatter:(cell, formatterParams, onRendered)=>{
+ let link = document.createElement('a');
+ link.addEventListener('click', (e) => {
+ e.preventDefault();
+ });
+
+ link.href ="#";
+ link.title = this.p.t('studierendenantrag','anmerkung_tooltip');
+ new bootstrap.Tooltip(link);
+ let tooltip = document.createElement('span');
+ tooltip.innerHTML = this.p.t('global','anmerkung') + " ";
+ tooltip.append(link);
+
+ let icon = document.createElement('i');
+ link.append(icon);
+ icon.className = "fa fa-info-circle";
+ icon.setAttribute("aria-hidden", "true");
+ icon.style.minWidth = '1em';
+
+ return tooltip;
+
+ },
+ formatter: (cell, formatterParams, onRendered) => {
+ if (this.disabled) {
+ return cell.getValue() || "";
+ }
+ var data = cell.getData();
+ if (lvs[data.studienplan_lehrveranstaltung_id].antrag_zugelassen)
+ {
+ let input = document.createElement('input');
+ input.className = "form-control";
+ input.type = "text";
+ input.value = cell.getValue() || "";
+ input.addEventListener('input', () => {
+ lvs[data.studienplan_lehrveranstaltung_id].antrag_anmerkung = input.value;
+ });
+ return input;
+ }
+ else
+ {
+ return "";
+ }
+ }
+ }
+ ]
+ });
+ }
+ this.lvs = result.data.retval;
+ }
+ }
+ );
+ },
+ template: `
+
+
+
+
+ {{p.t('studierendenantrag', 'title_lv_nicht_zugelassen')}}
+ {{lvs1sem}}
+
+
+
+
+
+ {{p.t('studierendenantrag', 'title_lv_wiederholen')}}
+ {{lvs2sem}}
+
+
+
+
+
{{p.t('studierendenantrag', 'btn_save_lvs')}}
+
+
+
+
+ `
+}
diff --git a/public/js/components/Studierendenantrag/Status.js b/public/js/components/Studierendenantrag/Status.js
new file mode 100644
index 000000000..7449fd376
--- /dev/null
+++ b/public/js/components/Studierendenantrag/Status.js
@@ -0,0 +1,15 @@
+export default {
+ props: {
+ msg: String,
+ severity: String
+ },
+ computed: {
+ severityClass() {
+ return 'alert-' + this.severity;
+ }
+ },
+ template: `
+
+
+ `
+}
diff --git a/public/js/components/filter/Filter.js b/public/js/components/filter/Filter.js
index e153042ad..2bf878e5a 100644
--- a/public/js/components/filter/Filter.js
+++ b/public/js/components/filter/Filter.js
@@ -23,6 +23,8 @@ import {CoreFetchCmpt} from '../../components/Fetch.js';
const FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';
const FILTER_COMPONENT_NEW_FILTER_TYPE = 'Filter Component New Filter Type';
+var _uuid = 0;
+
/**
*
*/
@@ -42,10 +44,12 @@ export const CoreFilterCmpt = {
required: true
},
tabulatorOptions: Object,
- tabulatorEvents: Array
+ tabulatorEvents: Array,
+ tableOnly: Boolean
},
data: function() {
return {
+ uuid: 0,
// FilterCmpt properties
filterName: null,
fields: null,
@@ -54,7 +58,6 @@ export const CoreFilterCmpt = {
selectedFields: null,
notSelectedFields: null,
filterFields: null,
- columnsAlias: null,
availableFilters: null,
@@ -64,104 +67,136 @@ export const CoreFilterCmpt = {
fetchCmptApiFunctionParams: null,
fetchCmptDataFetched: null,
- tabulator: null
+ tabulator: null,
+ tableBuilt: false
};
},
- created: function() {
- this.getFilter(); // get the filter data
- },
- updated: function() {
- //
- let dataset = JSON.parse(JSON.stringify(this.dataset));
- let fields = JSON.parse(JSON.stringify(this.fields));
- let selectedFields = JSON.parse(JSON.stringify(this.selectedFields));
+ computed: {
+ filteredData() {
+ if (!this.dataset)
+ return [];
+ return JSON.parse(JSON.stringify(this.dataset));
+ },
+ filteredColumns() {
+ let fields = JSON.parse(JSON.stringify(this.fields)) || [];
+ let selectedFields = JSON.parse(JSON.stringify(this.selectedFields)) || [];
- //
- let columns = null;
+ let columns = null;
- // If the tabulator options has been provided and it contains the property columns
- if (this.tabulatorOptions != null && this.tabulatorOptions.hasOwnProperty('columns'))
- {
- columns = this.tabulatorOptions.columns;
- }
+ // If the tabulator options has been provided and it contains the property columns
+ if (this.tabulatorOptions && this.tabulatorOptions.hasOwnProperty('columns'))
+ columns = this.tabulatorOptions.columns;
- // If columns is not an array or it is an array with less elements then the array fields
- if (!Array.isArray(columns) || (Array.isArray(columns) && columns.length < fields.length))
- {
- columns = []; // set it as an empty array
-
- // Loop throught all the retrieved columns from database
- for (let i = 0; i < fields.length; i++)
+ // If columns is not an array or it is an array with less elements then the array fields
+ if (!Array.isArray(columns) || (Array.isArray(columns) && columns.length < fields.length))
{
- // Create a new column having the title equal to the field name
- let column = {
- title: fields[i],
- field: fields[i]
- };
+ columns = []; // set it as an empty array
- // If the column has to be displayed or not
- selectedFields.indexOf(fields[i]) >= 0 ? column.visible = true : column.visible = false;
-
- // Add the new column to the list of columns
- columns.push(column);
- }
- }
- else // the property columns has been provided in the tabulator options
- {
- // Loop throught the property columns of the tabulator options
- for (let i = 0; i < columns.length; i++)
- {
- // If the column has to be displayed or not
- selectedFields.indexOf(columns[i].field) >= 0 ? columns[i].visible = true : columns[i].visible = false;
-
- if (columns[i].hasOwnProperty('resizable'))
+ // Loop throught all the retrieved columns from database
+ for (let field of fields)
{
- columns[i].visible ? columns[i].resizable = true : columns[i].resizable = false;
- }
+ // Create a new column having the title equal to the field name
+ let column = {
+ title: field,
+ field: field
+ };
+
+ // If the column has to be displayed or not
+ column.visible = selectedFields.indexOf(field) >= 0;
+
+ // Add the new column to the list of columns
+ columns.push(column);
+ }
}
- }
-
- this.columnsAlias = columns;
-
- // Define a default tabulator options in case it was not provided
- let tabulatorOptions = {
- height: 500,
- layout: "fitColumns",
- movableColumns: true,
- reactiveData: true,
- columns: columns,
- data: JSON.parse(JSON.stringify(this.dataset))
- };
-
- // If it was provided
- if (this.tabulatorOptions != null)
- {
- // Then copy it...
- tabulatorOptions = this.tabulatorOptions;
- // ...and overwrite the properties data, reactiveData, movableColumns and columns
- tabulatorOptions.data = JSON.parse(JSON.stringify(this.dataset));
- tabulatorOptions.columns = columns;
- tabulatorOptions.reactiveData = true;
- tabulatorOptions.movableColumns = true;
- }
-
- // Start the tabulator with the buid options
- this.tabulator = new Tabulator(
- "#filterTableDataset",
- tabulatorOptions
- );
-
- // If event handlers have been provided
- if (Array.isArray(this.tabulatorEvents) && this.tabulatorEvents.length > 0)
- {
- // Attach all the provided event handlers to the started tabulator
- for (let i = 0; i < this.tabulatorEvents.length; i++)
+ else // the property columns has been provided in the tabulator options
{
- this.tabulator.on(this.tabulatorEvents[i].event, this.tabulatorEvents[i].handler);
+ // Loop throught the property columns of the tabulator options
+ for (let col of columns)
+ {
+ // If the column has to be displayed or not
+ col.visible = selectedFields.indexOf(col.field) >= 0;
+
+ if (col.hasOwnProperty('resizable'))
+ col.resizable = col.visible;
+ }
}
+
+ return columns;
+ },
+ fieldNames() {
+ if (!this.tableBuilt)
+ return {};
+ return this.tabulator.getColumns().reduce((res, col) => {
+ res[col.getField()] = col.getDefinition().title;
+ return res;
+ }, {});
+ },
+ idExtra() {
+ if (!this.uuid)
+ return '';
+ return '-' + this.uuid;
}
},
+ beforeCreate() {
+ if (!this.tableOnly == !this.filterType)
+ alert('You can not have a filter-type in table-only mode!');
+ },
+ created() {
+ this.uuid = _uuid++;
+ if (!this.tableOnly)
+ this.getFilter(); // get the filter data
+ },
+ mounted() {
+ this.initTabulator();
+ },
methods: {
+ initTabulator() {
+ // Define a default tabulator options in case it was not provided
+ let tabulatorOptions = {...{
+ height: 500,
+ layout: "fitColumns",
+ movableColumns: true,
+ reactiveData: true
+ }, ...(this.tabulatorOptions || {})};
+
+ if (!this.tableOnly) {
+ tabulatorOptions.data = this.filteredData;
+ tabulatorOptions.columns = this.filteredColumns;
+ }
+
+ // Start the tabulator with the build options
+ this.tabulator = new Tabulator(
+ this.$refs.table,
+ tabulatorOptions
+ );
+ // If event handlers have been provided
+ if (Array.isArray(this.tabulatorEvents) && this.tabulatorEvents.length > 0)
+ {
+ // Attach all the provided event handlers to the started tabulator
+ for (let evt of this.tabulatorEvents)
+ this.tabulator.on(evt.event, evt.handler);
+ }
+ this.tabulator.on('tableBuilt', () => this.tableBuilt = true);
+ if (this.tableOnly) {
+ this.tabulator.on('tableBuilt', () => {
+ const cols = this.tabulator.getColumns();
+ this.fields = cols.map(col => col.getField());
+ this.selectedFields = cols.filter(col => col.isVisible()).map(col => col.getField());
+ });
+ }
+ },
+ updateTabulator() {
+ if (this.tabulator) {
+ if (this.tableBuilt)
+ this._updateTabulator();
+ else
+ this.tabulator.on('tableBuilt', this._updateTabulator);
+ }
+ },
+ _updateTabulator() {
+ this.tabulator.setData(this.filteredData);
+ this.tabulator.setColumns(this.filteredColumns);
+ },
/**
*
*/
@@ -209,6 +244,7 @@ export const CoreFilterCmpt = {
{
this.setDropDownMenu(data);
}
+ this.updateTabulator();
}
else
{
@@ -335,7 +371,7 @@ export const CoreFilterCmpt = {
this.startFetchCmpt(
CoreFilterAPIs.saveCustomFilter,
{
- customFilterName: document.getElementById('customFilterName').value
+ customFilterName: this.$refscustomFilterName.value
},
this.getFilter
);
@@ -463,22 +499,22 @@ export const CoreFilterCmpt = {
/*
*
*/
- handlerToggleSelectedField: function(event) {
+ handlerToggleSelectedField(field) {
// If it is a selected field
- if (this.selectedFields.indexOf(event.target.innerText) != -1)
+ if (this.selectedFields.indexOf(field) != -1)
{
// then hide it
- this.tabulator.hideColumn(event.target.innerText);
+ this.tabulator.hideColumn(field);
// and remove it from the this.selectedFields property
- this.selectedFields.splice(this.selectedFields.indexOf(event.target.innerText), 1);
+ this.selectedFields.splice(this.selectedFields.indexOf(field), 1);
}
else // otherwise
{
// show it
- this.tabulator.showColumn(event.target.innerText);
+ this.tabulator.showColumn(field);
// and add it to the this.selectedFields property
- this.selectedFields.push(event.target.innerText);
+ this.selectedFields.push(field);
}
},
/**
@@ -527,6 +563,7 @@ export const CoreFilterCmpt = {
template: `
-
+
-
+
@@ -558,9 +595,9 @@ export const CoreFilterCmpt = {
- {{ fieldToDisplay }}
+ {{ fieldNames[fieldToDisplay] || fieldToDisplay }}
@@ -568,7 +605,7 @@ export const CoreFilterCmpt = {
-
+
@@ -591,7 +628,7 @@ export const CoreFilterCmpt = {
+
-
+
@@ -605,7 +642,7 @@ export const CoreFilterCmpt = {
@change="handlerChangeFilterField(filterField.name, $event.target.value)"
>
Feld zum Filter hinzufügen...
-
+
{{ columnAlias.title }}
@@ -704,7 +741,7 @@ export const CoreFilterCmpt = {
@@ -718,7 +755,7 @@ export const CoreFilterCmpt = {
-
+
`
};
diff --git a/public/js/components/searchbar/searchbar.js b/public/js/components/searchbar/searchbar.js
index 155ea495b..277566f8d 100644
--- a/public/js/components/searchbar/searchbar.js
+++ b/public/js/components/searchbar/searchbar.js
@@ -46,6 +46,7 @@ export default {
+
Unbekannter Ergebnistyp: '{{ res.type }}'.
diff --git a/public/js/components/vueDatepicker.js.php b/public/js/components/vueDatepicker.js.php
new file mode 100644
index 000000000..db06f3026
--- /dev/null
+++ b/public/js/components/vueDatepicker.js.php
@@ -0,0 +1,13 @@
+ -- "+FHC_PhrasesLib.t('fehlermonitoring', 'keineAuswahl')+" -- ");
+
+ // fill dropdown with values
+ for (let i = 0; i < data.length; i++)
+ {
+ let val = data[i];
+
+ // the value selected by default
+ let selected = val[valueName] === defaultValue ? " selected" : "";
+
+ // append option
+ $("#"+dropdownId).append(""+val[textName]+" ");
+ }
+ }
+};
+
+/**
+ * When JQuery is up
+ */
+$(document).ready(function() {
+
+ // initiate cascade of getting data, first apps
+ IssuesKonfiguration.getApps();
+
+ // get new fehlercodes each time app is changed
+ $("#"+FEHLERAPP_DROPDOWN_ID).change(
+ function()
+ {
+ IssuesKonfiguration.getFehlerKonfigurationByApp($(this).val());
+ }
+ );
+
+ // set assign configuration event
+ $("#assignKonfiguration").click(
+ function()
+ {
+ IssuesKonfiguration.saveFehlerKonfiguration(
+ $("#"+FEHLERKONFIGURATIONSTYP_DROPDOWN_ID).val(),
+ $("#"+FEHLERCODE_DROPDOWN_ID).val(),
+ $("#konfigurationsWert").val()
+ );
+ }
+ );
+
+ // set delete configuration event
+ $("#deleteKonfiguration").click(
+ function()
+ {
+ IssuesKonfiguration.deleteKonfigurationsWerte(
+ $("#"+FEHLERKONFIGURATIONSTYP_DROPDOWN_ID).val(),
+ $("#"+FEHLERCODE_DROPDOWN_ID).val(),
+ $("#konfigurationsWert").val()
+ );
+ }
+ );
+
+ // set events for showing info modals
+ $("#fehlercodeInfoIcon").click(
+ function()
+ {
+ let fehlercode = $("#"+FEHLERCODE_DROPDOWN_ID).val();
+ let fehlercodeData = {};
+
+ for (let i = 0; i < IssuesKonfiguration.fehlercodesArr.length; i++)
+ {
+ let fc = IssuesKonfiguration.fehlercodesArr[i];
+ console.log(fc);
+
+ if (fc.fehlercode === fehlercode)
+ {
+ fehlercodeData = fc;
+ break;
+ }
+ }
+
+ if (!fehlercodeData)
+ return;
+
+ $("#fehlerInfoLabel").text(fehlercodeData.fehlercode + " - " + fehlercodeData.fehler_kurzbz);
+ $("#fehlercodeInfo").text(fehlercodeData.fehlercode);
+ $("#fehlerkurzbzInfo").text(fehlercodeData.fehler_kurzbz);
+ $("#fehlertypInfo").text(fehlercodeData.fehlertyp_kurzbz);
+ $("#fehlertextInfo").text(fehlercodeData.fehlertext);
+
+ $("#fehlerInfo").modal("show");
+ }
+ );
+
+ $("#konfigurationstypInfoIcon").click(
+ function()
+ {
+ let konfigurationstyp_kurzbz = $("#"+FEHLERKONFIGURATIONSTYP_DROPDOWN_ID).val();
+ let konfigurationstypData = {};
+
+ for (let i = 0; i < IssuesKonfiguration.fehlerkonfigArr.length; i++)
+ {
+ let konf = IssuesKonfiguration.fehlerkonfigArr[i];
+ console.log(konf);
+
+ if (konf.konfigurationstyp_kurzbz === konfigurationstyp_kurzbz)
+ {
+ konfigurationstypData = konf;
+ break;
+ }
+ }
+
+ if (!konfigurationstypData)
+ return;
+
+ $("#konfigurationstypInfo").text(konfigurationstypData.konfigurationstyp_kurzbz);
+ $("#konfigurationsbeschreibungInfo").text(konfigurationstypData.beschreibung);
+ $("#konfigurationsdatentypInfo").text(konfigurationstypData.konfigurationsdatentyp);
+
+ $("#konfigurationsInfo").modal("show");
+ }
+ );
+
+});
diff --git a/public/js/issues/issuesZustaendigkeiten.js b/public/js/issues/issuesZustaendigkeiten.js
index 605868295..2c56fd2da 100644
--- a/public/js/issues/issuesZustaendigkeiten.js
+++ b/public/js/issues/issuesZustaendigkeiten.js
@@ -289,7 +289,7 @@ var IssuesZustaendigkeiten = {
let val = data[i];
// the value selected by default
- let selected = val === defaultValue ? " selected" : "";
+ let selected = val[valueName] === defaultValue ? " selected" : "";
// append option
$("#"+dropdownId).append(""+val[textName]+" ");
diff --git a/public/js/issues/plausichecks.js b/public/js/issues/plausichecks.js
index f679c9434..cf55cf463 100644
--- a/public/js/issues/plausichecks.js
+++ b/public/js/issues/plausichecks.js
@@ -20,21 +20,22 @@ var Plausichecks = {
if (FHC_AjaxClient.hasData(data))
{
- let issueTexts = FHC_AjaxClient.getData(data);
+ let issueData = FHC_AjaxClient.getData(data);
- for (let fehler_kurzbz in issueTexts)
+ for (let fehler_kurzbz in issueData)
{
- messageStr += "Prüfe " + fehler_kurzbz + "... ";
- let texts = issueTexts[fehler_kurzbz];
+ let issues = issueData[fehler_kurzbz]['data'];
+ messageStr += "Prüfe " + fehler_kurzbz + " ("+issueData[fehler_kurzbz]['fehlercode']+")... ";
- if (texts.length == 0) {
+ if (issues.length == 0) {
messageStr += "Keine Issues für " + fehler_kurzbz + " ";
continue;
}
- for (i = 0; i < texts.length; i++)
+ for (i = 0; i < issues.length; i++)
{
- messageStr += "" + texts[i] + " ";
+ let className = issues[i].type == 'warning' ? 'text-warning' : 'text-danger';
+ messageStr += "" + issues[i].fehlertext + " ";
}
}
}
@@ -46,7 +47,7 @@ var Plausichecks = {
}
}
);
- },
+ }
};
diff --git a/public/js/lehre/anrechnung/requestAnrechnung.js b/public/js/lehre/anrechnung/requestAnrechnung.js
index 5edb4e162..2947aebe9 100644
--- a/public/js/lehre/anrechnung/requestAnrechnung.js
+++ b/public/js/lehre/anrechnung/requestAnrechnung.js
@@ -1,6 +1,9 @@
const ANRECHNUNGSTATUS_APPROVED = 'approved';
const ANRECHNUNGSTATUS_REJECTED = 'rejected';
-const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
+const CHAR_LENGTH125 = 125;
+const CHAR_LENGTH150 = 150;
+const CHAR_LENGTH500 = 500;
+const CHAR_LENGTH1000 = 1000;
const COLOR_DANGER = '#f2dede';
@@ -25,7 +28,7 @@ $(function(){
// Alert message inside Begruendungsbox, if maximum ECTS exceeded
requestAnrechnung.alertIfMaxEctsExceededInsideBegruendungsbox();
- // Set chars counter for textarea 'Herkunft der Kenntnisse'
+ // Set chars counter for textareas
requestAnrechnung.setCharsCounter();
// If Sperregrund exists: display Sperre panel, hide Status panel and disable all form elements
@@ -98,6 +101,8 @@ $(function(){
begruendung: this.begruendung.value,
lv_id: this.lv_id.value,
studiensemester: this.studiensemester.value,
+ begruendung_ects: this.begruendung_ects.value,
+ begruendung_lvinhalt: this.begruendung_lvinhalt.value,
bestaetigung: this.bestaetigung.value,
uploadfile: this.uploadfile.files
},
@@ -207,11 +212,22 @@ var requestAnrechnung = {
},
setCharsCounter: function(){
$('#requestAnrechnung-herkunftDerKenntnisse').keyup(function() {
-
- let length = HERKUNFT_DER_KENNTNISSE_MAX_LENGTH - $(this).val().length;
-
+ let length = CHAR_LENGTH125 - $(this).val().length;
$('#requestAnrechnung-herkunftDerKenntnisse-charCounter').text(length);
});
+
+ $('#requestAnrechnung-begruendungEcts').keyup(function() {
+ let length = CHAR_LENGTH150 - $(this).val().length;
+ $('#requestAnrechnung-begruendungEcts-charCounter').text(length);
+ });
+
+ $('#requestAnrechnung-begruendungLvinhalt').keyup(function() {
+ let maxlength = CHAR_LENGTH1000 - $(this).val().length;
+ $('#requestAnrechnung-begruendungLvinhalt-charCounterMax').text(maxlength);
+
+ let minlength = CHAR_LENGTH500 - $(this).val().length;
+ $('#requestAnrechnung-begruendungLvinhalt-charCounterMin').text(minlength);
+ });
},
formatAnrechnungIsApplied: function (antragdatum, dms_id, filename){
$('#requestAnrechnung-antragdatum').text(antragdatum);
diff --git a/public/js/mixins/Phrasen.js b/public/js/mixins/Phrasen.js
new file mode 100644
index 000000000..edaf4d101
--- /dev/null
+++ b/public/js/mixins/Phrasen.js
@@ -0,0 +1,100 @@
+const categories = {};
+const loadingModules = {};
+
+function extractCategory(obj, category) {
+ return obj.filter(e => e.category == category).reduce((res, elem) => {
+ if (!res[elem.phrase])
+ res[elem.phrase] = elem.text;
+ return res;
+ }, {});
+}
+function reloadRefs(category) {
+ while (loadingModules[category].length) {
+ var v = loadingModules[category].pop();
+ v[0].value = getValueForLoadedPhrase(category, v[1], v[2]);
+ Vue.triggerRef(v[0]);
+ /*Vue.unref(v);*/
+ }
+}
+function loadLazy(category, val, phrase, params) {
+ // NOTE(chris): load module if it's not loaded yet
+ if (loadingModules[category]) {
+ loadingModules[category].push([val, phrase, params]);
+ if (categories[category]) // NOTE(chris): this is for safety in case the loading finished the moment before the val was pushed into the array
+ reloadRefs(category);
+ return;
+ }
+ loadingModules[category] = [[val, phrase, params]];
+
+ axios.get(FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/components/Phrasen/loadModule/' + category).then(res => {
+ if (res.data.retval)
+ categories[category] = extractCategory(res.data.retval, category);
+ else
+ categories[category] = {};
+
+ reloadRefs(category);
+ }).catch(err => console.error(err));
+}
+function getValueForLoadedPhrase(category, phrase, params) {
+ let result = categories[category][phrase];
+ if (!result)
+ return '<< PHRASE ' + phrase + '>>';
+ if (params)
+ result = result.replace(/\{([^}]*)\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);
+ return result;
+}
+
+
+const phrasen = {
+ t_ref(category, phrase, params) {
+ if (params === undefined && (
+ (Array.isArray(category) && category.length == 2) ||
+ (category.split && category.split('/').length == 2))
+ ) {
+ params = phrase;
+ [category, phrase] = category.split ? category.split('/') : category;
+ }
+ if (phrase === undefined) {
+ console.error('invalid input');
+ return '';
+ }
+ if (!categories[category]) {
+
+ //if (window.FHC_JS_PHRASES_STORAGE_OBJECT !== undefined)
+ // categories[category] = extractCategory(FHC_JS_PHRASES_STORAGE_OBJECT, category);
+
+ if (!categories[category] || Object.keys(categories[category]).length === 0) {
+ categories[category] = undefined;
+ let val = Vue.ref('');
+ loadLazy(category, val, phrase, params);
+ return val;
+ }
+ }
+ var result = getValueForLoadedPhrase(category, phrase, params);
+ return Vue.ref(result);
+ },
+ t(category, phrase, params) {
+ return Vue.unref(this.t_ref(category, phrase, params));
+ }
+};
+
+export default {
+ data: () => {
+ return {
+ p: phrasen
+ }
+ }
+}
+
+// Composable (wrapper for mixin)
+export function usePhrasen() {
+
+ function t(category, phrase, params) {
+ return phrasen.t(category, phrase, params);
+ }
+
+ return {
+ t,
+ }
+
+}
diff --git a/public/js/tabulator/filters/Dates.js b/public/js/tabulator/filters/Dates.js
new file mode 100644
index 000000000..7c9f268f0
--- /dev/null
+++ b/public/js/tabulator/filters/Dates.js
@@ -0,0 +1,43 @@
+if (!primevue) {
+ console.error('PrimeVue not loaded!');
+}
+
+// NOTE(chris): Click on clear button gives an error. This is a bug in primevue => fixed in current version
+Tabulator.extendModule('filter', 'filters', {
+ "dates": (headerValue, rowValue) => {
+ if (!headerValue)
+ return true;
+ let v = new Date(rowValue);
+ if (Array.isArray(headerValue)) {
+ if (headerValue[1]) {
+ return v >= headerValue[0] && v <= headerValue[1].setHours(23, 59, 59, 999);
+ }
+ return v.toDateString() == headerValue[0].toDateString();
+ }
+ return v.toDateString() == headerValue.toDateString();
+ }
+});
+function dateFilter(cell, onRendered, success) {
+ let div = document.createElement('div');
+
+ Vue.createApp({
+ components: {
+ PrimevueCalendar: primevue.calendar
+ },
+ data() {
+ return {
+ val: null
+ }
+ },
+ watch: {
+ val(n) {
+ success(n);
+ }
+ },
+ template: ` `
+ }).use(primevue.config.default).mount(div);
+
+ return div;
+}
+
+export { dateFilter as 'dateFilter' };
diff --git a/rdf/AntragAbmeldung.xml.php b/rdf/AntragAbmeldung.xml.php
new file mode 100644
index 000000000..dc59b57a0
--- /dev/null
+++ b/rdf/AntragAbmeldung.xml.php
@@ -0,0 +1,69 @@
+db_add_param($id) . "
+ AND campus.tbl_studierendenantrag.typ = 'Abmeldung' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) = 'Genehmigt';";
+ $not_found_error = 'Studierendenantrag not found'. $id;
+ } elseif(isset($_GET['uid']) && isset($_GET['prestudent_id'])) {
+ $uid = $_GET['uid'];
+ $uid = explode(';', $uid);
+ $uid = (array_filter($uid, 'strlen'));
+
+ $prestudent_id = $_GET['prestudent_id'];
+ $prestudent_id = explode(';', $prestudent_id);
+ $prestudent_id = (array_filter($prestudent_id, 'strlen'));
+
+ $where = " WHERE campus.tbl_studierendenantrag.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ")
+ AND campus.tbl_studierendenantrag.typ = 'Abmeldung' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) = 'Genehmigt';";
+ $not_found_error = 'Studierendenantrag not found for: ' . implode(',', $uid);
+ } else
+ die('wrong parameters ');
+}
+else
+ die('Format not supported ');
+
+
+$query = "
+ SELECT tbl_studiengang.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, studiensemester_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(prestudent_id, NULL) AS semester, tbl_studierendenantrag.grund
+ FROM
+ campus.tbl_studierendenantrag
+ JOIN public.tbl_student USING (prestudent_id)
+ JOIN public.tbl_benutzer ON tbl_student.student_uid=uid
+ JOIN public.tbl_person USING (person_id)
+ JOIN public.tbl_studiengang USING (studiengang_kz)
+ JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
+ JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = tbl_studiengang.orgform_kurzbz)" . $where;
+
+
+if (!$db->db_query($query) || !$db->db_num_rows())
+ die('' . $not_found_error . ' ');
+
+?>
+
+
+ db_fetch_object()) { ?>
+
+ vorname . $row->nachname); ?>]]>
+ bezeichnung; ?>]]>
+ bezeichnung_mehrsprachig; ?>]]>
+ matrikelnr; ?>]]>
+ studienjahr_kurzbz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+ semester; ?>]]>
+ grund; ?>]]>
+
+
+
+
diff --git a/rdf/AntragAbmeldungStgl.xml.php b/rdf/AntragAbmeldungStgl.xml.php
new file mode 100644
index 000000000..55d940457
--- /dev/null
+++ b/rdf/AntragAbmeldungStgl.xml.php
@@ -0,0 +1,68 @@
+db_add_param($id) . "
+ AND campus.tbl_studierendenantrag.typ = 'AbmeldungStgl' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) IN ('Genehmigt', 'Beeinsprucht', 'EinspruchAbgelehnt');";
+ $not_found_error = 'Studierendenantrag not found'. $id;
+ } elseif(isset($_GET['uid']) && isset($_GET['prestudent_id'])) {
+ $uid = $_GET['uid'];
+ $uid = explode(';', $uid);
+ $uid = (array_filter($uid, 'strlen'));
+
+ $prestudent_id = $_GET['prestudent_id'];
+ $prestudent_id = explode(';', $prestudent_id);
+ $prestudent_id = (array_filter($prestudent_id, 'strlen'));
+
+ $where = " WHERE campus.tbl_studierendenantrag.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ")
+ AND campus.tbl_studierendenantrag.typ = 'AbmeldungStgl' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) IN ('Genehmigt', 'Beeinsprucht', 'EinspruchAbgelehnt');";
+ $not_found_error = 'Studierendenantrag not found for: ' . implode(',', $uid);
+ } else
+ die('wrong parameters ');
+}
+else
+ die('Format not supported ');
+
+
+$query = "
+ SELECT tbl_studiengang.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, studiensemester_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(prestudent_id, NULL) AS semester, tbl_studierendenantrag.grund
+ FROM
+ campus.tbl_studierendenantrag
+ JOIN public.tbl_student USING (prestudent_id)
+ JOIN public.tbl_benutzer ON tbl_student.student_uid=uid
+ JOIN public.tbl_person USING (person_id)
+ JOIN public.tbl_studiengang USING (studiengang_kz)
+ JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
+ JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = tbl_studiengang.orgform_kurzbz)" . $where;
+
+
+if (!$db->db_query($query) || !$db->db_num_rows())
+ die('' . $not_found_error . ' ');
+
+?>
+
+
+ db_fetch_object()) { ?>
+
+ vorname . $row->nachname); ?>]]>
+ bezeichnung; ?>]]>
+ bezeichnung_mehrsprachig; ?>]]>
+ matrikelnr; ?>]]>
+ studienjahr_kurzbz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+ semester; ?>]]>
+ grund; ?>]]>
+
+
+
diff --git a/rdf/AntragUnterbrechung.xml.php b/rdf/AntragUnterbrechung.xml.php
new file mode 100644
index 000000000..6945f66ef
--- /dev/null
+++ b/rdf/AntragUnterbrechung.xml.php
@@ -0,0 +1,73 @@
+db_add_param($id) . "
+ AND campus.tbl_studierendenantrag.typ = 'Unterbrechung' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) IN ('Genehmigt', 'EmailVersandt');";
+ $not_found_error = 'Studierendenantrag not found'. $id;
+ } elseif(isset($_GET['uid']) && isset($_GET['prestudent_id'])) {
+ $uid = $_GET['uid'];
+ $uid = explode(';', $uid);
+ $uid = (array_filter($uid, 'strlen'));
+
+ $prestudent_id = $_GET['prestudent_id'];
+ $prestudent_id = explode(';', $prestudent_id);
+ $prestudent_id = (array_filter($prestudent_id, 'strlen'));
+
+ $where = " WHERE campus.tbl_studierendenantrag.prestudent_id in (" . $db->db_implode4SQL($prestudent_id) . ")
+ AND campus.tbl_studierendenantrag.typ = 'Unterbrechung' AND campus.get_status_studierendenantrag(campus.tbl_studierendenantrag.studierendenantrag_id) IN ('Genehmigt', 'EmailVersandt');";
+ $not_found_error = 'Studierendenantrag not found for: ' . implode(',', $uid);
+ } else
+ die('wrong parameters ');
+}
+else
+ die('Format not supported ');
+
+
+$query = "
+ SELECT tbl_studiengang.bezeichnung, bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache=" . $db->db_add_param(getSprache(), FHC_STRING) . ")], studierendenantrag_id, matrikelnr, studienjahr_kurzbz, vorname, nachname, studiengang_kz, public.get_absem_prestudent(prestudent_id, NULL) AS semester, tbl_studierendenantrag.grund, datum_wiedereinstieg, datum
+ FROM
+ campus.tbl_studierendenantrag
+ JOIN public.tbl_student USING (prestudent_id)
+ JOIN public.tbl_benutzer ON tbl_student.student_uid=uid
+ JOIN public.tbl_person USING (person_id)
+ JOIN public.tbl_studiengang USING (studiengang_kz)
+ JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
+ JOIN bis.tbl_orgform ON (tbl_orgform.orgform_kurzbz = tbl_studiengang.orgform_kurzbz)" . $where;
+
+
+if (!$db->db_query($query) || !$db->db_num_rows())
+ die('' . $not_found_error . ' ');
+
+?>
+
+
+ db_fetch_object()) { ?>
+
+ vorname . $row->nachname); ?>]]>
+ bezeichnung; ?>]]>
+ bezeichnung_mehrsprachig; ?>]]>
+ matrikelnr; ?>]]>
+ studienjahr_kurzbz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+ semester; ?>]]>
+ grund; ?>]]>
+ datum_wiedereinstieg))->format('d.m.Y');?>]]>
+ datum))->format('d.m.Y');?>]]>
+
+
+
+
+
diff --git a/rdf/adresse.rdf.php b/rdf/adresse.rdf.php
index ac557fb98..fd6a76d19 100644
--- a/rdf/adresse.rdf.php
+++ b/rdf/adresse.rdf.php
@@ -100,7 +100,7 @@ function draw_rdf($row)
gemeinde.']]>
nation.']]>
typ.']]>
- bezeichnung_mehrsprachig[DEFAULT_LANGUAGE].']]>
+ bezeichnung_mehrsprachig[DEFAULT_LANGUAGE])?$row->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE]:'').']]>
heimatadresse?'Ja':'Nein').']]>
zustelladresse?'Ja':'Nein').']]>
co_name.']]>
diff --git a/rdf/lehrverbandsgruppe.rdf.php b/rdf/lehrverbandsgruppe.rdf.php
index 20956d279..19affa245 100644
--- a/rdf/lehrverbandsgruppe.rdf.php
+++ b/rdf/lehrverbandsgruppe.rdf.php
@@ -290,6 +290,24 @@ function draw_orgformsubmenu($stg_kz, $orgform)
bewerber
+
+
+ Nicht zum Reihungstest angemeldet
+
+
+ studiensemester_kurzbz.']]>
+ bewerberrtnichtangemeldet
+
+
+
+
+ Reihungstest angemeldet
+
+
+ studiensemester_kurzbz.']]>
+ bewerberrtangemeldet
+
+
Aufgenommen
@@ -344,8 +362,14 @@ function draw_orgformsubmenu($stg_kz, $orgform)
$orgform_sequence[$stg_kz].= "\t\t\t\tstudiensemester_kurzbz/interessenten/reihungstestangemeldet\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\t\t";
$orgform_sequence[$stg_kz].= "\n\t\t\t \n";
-
- $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber\" />\n";
+
+ $orgform_sequence[$stg_kz].= "\t\t\t";
+ $orgform_sequence[$stg_kz].= "\n\t\t\t\tstudiensemester_kurzbz/bewerber\">\n";
+ $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber/reihungstestnichtangemeldet\" />\n";
+ $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber/reihungstestangemeldet\" />\n";
+ $orgform_sequence[$stg_kz].= "\t\t\t\t ";
+ $orgform_sequence[$stg_kz].= "\n\t\t\t \n";
+
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/aufgenommen\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/warteliste\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/absage\" />\n";
@@ -624,6 +648,22 @@ while ($row=$dbo->db_fetch_object())
+
+
+ ]]>
+ studiengang_kz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+
+
+
+
+
+ ]]>
+ studiengang_kz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+
+
+
]]>
@@ -832,8 +872,14 @@ draw_orgformpart($stg_kz);
echo "\t\t\t\tstudiensemester_kurzbz/interessenten/reihungstestangemeldet\" />\n";
echo "\t\t\t\t";
echo "\n\t\t\t \n";
+
+ echo "\t\t\t";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber\">\n";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber/reihungstestnichtangemeldet\" />\n";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber/reihungstestangemeldet\" />\n";
+ echo "\t\t\t\t ";
+ echo "\n\t\t\t \n";
- echo "\t\t\t\tstudiensemester_kurzbz/bewerber\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/aufgenommen\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/warteliste\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/absage\" />\n";
diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php
index 11e841c2b..1625f161c 100644
--- a/rdf/student.rdf.php
+++ b/rdf/student.rdf.php
@@ -737,7 +737,7 @@ if($xmlformat=='rdf')
}
elseif(in_array($typ, array('prestudent', 'interessenten', 'bewerber', 'aufgenommen',
'warteliste', 'absage', 'zgv', 'reihungstestangemeldet', 'reihungstestnichtangemeldet', 'absolvent',
- 'diplomand', 'bewerbungnichtabgeschickt', 'bewerbungabgeschickt', 'statusbestaetigt', 'statusbestaetigtrtnichtangemeldet', 'statusbestaetigtrtangemeldet')))
+ 'diplomand', 'bewerbungnichtabgeschickt', 'bewerbungabgeschickt', 'statusbestaetigt', 'statusbestaetigtrtnichtangemeldet', 'statusbestaetigtrtangemeldet', 'bewerberrtangemeldet', 'bewerberrtnichtangemeldet')))
{
$prestd = new prestudent();
diff --git a/soap/datenverbund_client.php b/soap/datenverbund_client.php
index 0f2a2ba19..3f6052e75 100644
--- a/soap/datenverbund_client.php
+++ b/soap/datenverbund_client.php
@@ -230,7 +230,7 @@ if ($getPersonData)
printrow('matrikelnummer', 'Matrikelnummer', $matrikelnr);
printrow('nachname', 'Nachname', $nachname, '', 255);
printrow('vorname', 'Vorname', $vorname, '', 30);
- printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, 'Format: YYYYMMDD', 10);
+ printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, 'Format: YYYY-MM-DD', 10);
printrow('geschlecht', 'Geschlecht', $geschlecht, 'Format: M | W', 1);
printrow('postleitzahl', 'Postleitzahl', $postleitzahl, '', 10);
}
diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php
index ea5f7d337..a940fee0e 100644
--- a/system/dbupdate_3.4.php
+++ b/system/dbupdate_3.4.php
@@ -27,6 +27,7 @@ require_once('dbupdate_3.4/example.php');
require_once('dbupdate_3.4/example2.php');
...
*/
+require_once('dbupdate_3.4/25003_notenimport_nachpruefung.php');
require_once('dbupdate_3.4/26173_index_webservicelog.php');
require_once('dbupdate_3.4/24682_reihungstest_zugangscode_fuer_login.php');
@@ -38,6 +39,15 @@ require_once('dbupdate_3.4/10001_tempus_mitarbeiter_kurzbz_bei_reservierungen_an
require_once('dbupdate_3.4/27949_infocenter_zurueckstellen_mit_grund.php');
require_once('dbupdate_3.4/27107_vilesci_erfassung_abwesenheiten_reinigung.php');
require_once('dbupdate_3.4/24913_tabelle_raumtyp_neues_attribut_aktiv.php');
+require_once('dbupdate_3.4/28089_plausichecks_in_extension_hinzufuegen.php');
+require_once('dbupdate_3.4/29133_einzelne_studiengaenge_aus_issuechecks_ausnehmen.php');
+require_once('dbupdate_3.4/27351_digitalisierung_formulare.php');
+require_once('dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php');
+require_once('dbupdate_3.4/29094_stundensaetze.php');
+require_once('dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php');
+require_once('dbupdate_3.4/29529_infocenter_anpassungen.php');
+require_once('dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php');
+
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo 'Pruefe Tabellen und Attribute! ';
@@ -167,7 +177,7 @@ $tabellen=array(
"lehre.tbl_abschlusspruefung" => array("abschlusspruefung_id","student_uid","vorsitz","pruefer1","pruefer2","pruefer3","abschlussbeurteilung_kurzbz","akadgrad_id","pruefungstyp_kurzbz","datum","uhrzeit","sponsion","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","note","protokoll","endezeit","pruefungsantritt_kurzbz","freigabedatum"),
"lehre.tbl_abschlusspruefung_antritt" => array("pruefungsantritt_kurzbz","bezeichnung","bezeichnung_english","sort"),
"lehre.tbl_akadgrad" => array("akadgrad_id","akadgrad_kurzbz","studiengang_kz","titel","geschlecht"),
- "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung"),
+ "lehre.tbl_anrechnung" => array("anrechnung_id","prestudent_id","lehrveranstaltung_id","begruendung_id","lehrveranstaltung_id_kompatibel","genehmigt_von","insertamum","insertvon","updateamum","updatevon","ext_id", "dms_id", "studiensemester_kurzbz", "anmerkung_student", "empfehlung_anrechnung", "begruendung_ects", "begruendung_lvinhalt"),
"lehre.tbl_anrechnungstatus" => array("status_kurzbz", "bezeichnung_mehrsprachig"),
"lehre.tbl_anrechnung_anrechnungstatus" => array("anrechnungstatus_id", "anrechnung_id", "status_kurzbz", "datum", "insertamum", "insertvon"),
"lehre.tbl_anrechnung_begruendung" => array("begruendung_id","bezeichnung"),
@@ -328,6 +338,9 @@ $tabellen=array(
"system.tbl_extensions" => array("extension_id","name","version","description","license","url","core_version","dependencies","enabled"),
"system.tbl_fehler" => array("fehlercode","fehler_kurzbz","fehlercode_extern","fehlertext","fehlertyp_kurzbz","app"),
"system.tbl_fehlertyp" => array("fehlertyp_kurzbz","bezeichnung_mehrsprachig"),
+ "system.tbl_fehler_konfiguration" => array("konfigurationstyp_kurzbz","fehlercode","konfiguration","insertamum","insertvon","updateamum","updatevon"),
+ "system.tbl_fehler_konfigurationsdatentyp" => array("konfigurationsdatentyp"),
+ "system.tbl_fehler_konfigurationstyp" => array("konfigurationstyp_kurzbz","beschreibung","konfigurationsdatentyp","app"),
"system.tbl_fehler_zustaendigkeiten" => array("fehlerzustaendigkeiten_id","fehlercode","person_id","oe_kurzbz","funktion_kurzbz", "insertamum", "insertvon"),
"system.tbl_issue" => array("issue_id","fehlercode","fehlercode_extern","inhalt","inhalt_extern","person_id","oe_kurzbz","datum","verarbeitetvon","verarbeitetamum","status_kurzbz","behebung_parameter","insertvon","insertamum","updatevon","updateamum"),
"system.tbl_issue_status" => array("status_kurzbz","bezeichnung_mehrsprachig"),
@@ -341,7 +354,7 @@ $tabellen=array(
"system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon","category"),
"system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"),
"system.tbl_rolle" => array("rolle_kurzbz","beschreibung"),
- "system.tbl_rolleberechtigung" => array("berechtigung_kurzbz","rolle_kurzbz","art"),
+ "system.tbl_rolleberechtigung" => array("berechtigung_kurzbz","rolle_kurzbz","art","anmerkung","insertamum","insertvon"),
"system.tbl_verarbeitungstaetigkeit" => array("taetigkeit_kurzbz", "bezeichnung", "bezeichnung_mehrsprachig","aktiv"),
"system.tbl_webservicelog" => array("webservicelog_id","webservicetyp_kurzbz","request_id","beschreibung","request_data","execute_time","execute_user"),
"system.tbl_webservicerecht" => array("webservicerecht_id","berechtigung_kurzbz","methode","attribut","insertamum","insertvon","updateamum","updatevon","klasse"),
diff --git a/system/dbupdate_3.4/25003_notenimport_nachpruefung.php b/system/dbupdate_3.4/25003_notenimport_nachpruefung.php
new file mode 100644
index 000000000..7c2406d0e
--- /dev/null
+++ b/system/dbupdate_3.4/25003_notenimport_nachpruefung.php
@@ -0,0 +1,15 @@
+db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefungstyp_kurzbz='Termin3'"))
+{
+ if($db->db_num_rows($result)==0)
+ {
+ $qry = "INSERT INTO lehre.tbl_pruefungstyp(pruefungstyp_kurzbz, beschreibung, abschluss) VALUES('Termin3', '3.Termin', false);";
+
+ if(!$db->db_query($qry))
+ echo 'Prüfungstyp: '.$db->db_last_error().' ';
+ else
+ echo ' Prüfungstyp 3.Termin in lehre.tbl_pruefungstyp hinzugefügt';
+ }
+}
diff --git a/system/dbupdate_3.4/27351_digitalisierung_formulare.php b/system/dbupdate_3.4/27351_digitalisierung_formulare.php
new file mode 100644
index 000000000..1f8dd4b4b
--- /dev/null
+++ b/system/dbupdate_3.4/27351_digitalisierung_formulare.php
@@ -0,0 +1,327 @@
+db_query("SELECT 1 FROM campus.tbl_studierendenantrag_statustyp LIMIT 1"))
+{
+ $qry = "CREATE TABLE campus.tbl_studierendenantrag_statustyp (
+ studierendenantrag_statustyp_kurzbz VARCHAR(32) NOT NULL,
+ bezeichnung VARCHAR(128)[] NOT NULL,
+ CONSTRAINT tbl_studierendenantrag_statustyp_pk PRIMARY KEY(studierendenantrag_statustyp_kurzbz)
+ );
+
+ GRANT SELECT, INSERT ON campus.tbl_studierendenantrag_statustyp TO vilesci;
+ GRANT SELECT ON campus.tbl_studierendenantrag_statustyp TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_statustyp: '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_statustyp: table created';
+}
+
+if($result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_statustyp WHERE studierendenantrag_statustyp_kurzbz = 'Erstellt' "))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO campus.tbl_studierendenantrag_statustyp
+ (studierendenantrag_statustyp_kurzbz, bezeichnung)
+ VALUES
+ ('Erstellt', '{\"Erstellt\",\"Created\"}'),
+ ('Genehmigt', '{\"Bestätigt\",\"Approved\"}'),
+ ('Abgelehnt', '{\"Abgelehnt\",\"Rejected\"}'),
+ ('Verzichtet', '{\"Verzichtet\",\"Pass\"}'),
+ ('Offen', '{\"Offen\",\"Reopened\"}'),
+ ('Zurueckgezogen', '{\"Zurückgezogen\",\"Cancelled\"}'),
+ ('Lvszugewiesen', '{\"Lvszugewiesen\",\"Lvsassigned\"}'),
+ ('EmailVersandt', '{\"Email Versandt\",\"Reminder Sent\"}'),
+ ('ErsteAufforderungVersandt', '{\"1.Aufforderung Versandt\",\"1st Request Sent\"}'),
+ ('ZweiteAufforderungVersandt', '{\"2.Aufforderung Versandt\",\"2nd Request Sent\"}'),
+ ('Beeinsprucht', '{\"Beeinsprucht\",\"Objected\"}'),
+ ('EinspruchAbgelehnt', '{\"Einspruch abgelehnt\",\"Objection denied\"}');
+ ";
+ if (!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_statustyp (insert): '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_statustyp: table prefilled';
+ }
+}
+
+if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag LIMIT 1"))
+{
+ $qry = "CREATE TABLE campus.tbl_studierendenantrag (
+ studierendenantrag_id INTEGER NOT NULL,
+ prestudent_id INTEGER NOT NULL,
+ studiensemester_kurzbz VARCHAR(32) NOT NULL,
+ datum TIMESTAMP NULL,
+ typ VARCHAR(32) NOT NULL,
+ insertamum TIMESTAMP DEFAULT NOW(),
+ insertvon VARCHAR(32) NOT NULL,
+ datum_wiedereinstieg TIMESTAMP NULL,
+ grund TEXT NULL,
+ dms_id INTEGER NULL,
+ CONSTRAINT tbl_studierendenantrag_pk PRIMARY KEY(studierendenantrag_id)
+ );
+ CREATE SEQUENCE campus.tbl_studierendenantrag_studierendenantrag_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+ ALTER TABLE campus.tbl_studierendenantrag ALTER COLUMN studierendenantrag_id SET DEFAULT nextval('campus.tbl_studierendenantrag_studierendenantrag_id_seq');
+
+ GRANT SELECT, INSERT ON campus.tbl_studierendenantrag TO vilesci;
+ GRANT SELECT, INSERT ON campus.tbl_studierendenantrag TO web;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_studierendenantrag_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_studierendenantrag_id_seq TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag: '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag: table created';
+}
+
+if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_status LIMIT 1"))
+{
+ $qry = "CREATE TABLE campus.tbl_studierendenantrag_status (
+ studierendenantrag_status_id INTEGER NOT NULL,
+ studierendenantrag_id INTEGER NOT NULL,
+ studierendenantrag_statustyp_kurzbz VARCHAR(32) NOT NULL,
+ insertamum TIMESTAMP DEFAULT NOW(),
+ insertvon VARCHAR(32) NOT NULL,
+ grund TEXT NULL,
+ CONSTRAINT tbl_studierendenantrag_status_pk PRIMARY KEY(studierendenantrag_status_id),
+ CONSTRAINT tbl_studierendenantrag_fk FOREIGN KEY (studierendenantrag_id) REFERENCES campus.tbl_studierendenantrag(studierendenantrag_id) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT tbl_studierendenantrag_statustyp_fk FOREIGN KEY (studierendenantrag_statustyp_kurzbz) REFERENCES campus.tbl_studierendenantrag_statustyp(studierendenantrag_statustyp_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT
+ );
+ CREATE SEQUENCE campus.tbl_studierendenantrag_status_studierendenantrag_status_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+ ALTER TABLE campus.tbl_studierendenantrag_status ALTER COLUMN studierendenantrag_status_id SET DEFAULT nextval('campus.tbl_studierendenantrag_status_studierendenantrag_status_id_seq');
+
+ GRANT SELECT, INSERT, DELETE ON campus.tbl_studierendenantrag_status TO vilesci;
+ GRANT SELECT, INSERT, DELETE ON campus.tbl_studierendenantrag_status TO web;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_status_studierendenantrag_status_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_status_studierendenantrag_status_id_seq TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_status: '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_status: table created';
+}
+
+if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_lehrveranstaltung LIMIT 1"))
+{
+ $qry = "CREATE TABLE campus.tbl_studierendenantrag_lehrveranstaltung (
+ studierendenantrag_lehrveranstaltung_id INTEGER NOT NULL,
+ studierendenantrag_id INTEGER NOT NULL,
+ lehrveranstaltung_id INTEGER NOT NULL,
+ studiensemester_kurzbz VARCHAR(16) NOT NULL,
+ note SMALLINT NOT NULL,
+ anmerkung TEXT NULL,
+ insertamum TIMESTAMP DEFAULT NOW(),
+ insertvon VARCHAR(32) NOT NULL,
+ CONSTRAINT tbl_studierendenantrag_lehrveranstaltung_pk PRIMARY KEY(studierendenantrag_lehrveranstaltung_id),
+ CONSTRAINT tbl_studiensemester_fk FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT tbl_note_fk FOREIGN KEY (note) REFERENCES lehre.tbl_note(note) ON UPDATE CASCADE ON DELETE RESTRICT,
+ CONSTRAINT tbl_studierendenantrag_fk FOREIGN KEY (studierendenantrag_id) REFERENCES campus.tbl_studierendenantrag(studierendenantrag_id) ON UPDATE CASCADE ON DELETE RESTRICT
+ );
+ CREATE SEQUENCE campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+ ALTER TABLE campus.tbl_studierendenantrag_lehrveranstaltung ALTER COLUMN studierendenantrag_lehrveranstaltung_id SET DEFAULT nextval('campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq');
+
+ GRANT SELECT, INSERT, DELETE ON campus.tbl_studierendenantrag_lehrveranstaltung TO vilesci;
+ GRANT SELECT, INSERT ON campus.tbl_studierendenantrag_lehrveranstaltung TO web;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq TO web;";
+
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_studierendenantrag_lehrveranstaltung: '.$db->db_last_error().' ';
+ else
+ echo ' campus.tbl_studierendenantrag_lehrveranstaltung: table created';
+}
+
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/studierendenantrag';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/studierendenantrag', 'Berechtigung für Bearbeiten Studierendenanträge');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_berechtigung: Added permission for student/studierendenantrag ';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/antragfreigabe';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/antragfreigabe', 'Berechtigung für Freigabe der Studierendenanträge');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_berechtigung: Added permission for student/antragfreigabe ';
+ }
+}
+
+if (!$result = @$db->db_query("SELECT campus.get_status_studierendenantrag(0)")) {
+ $qry = 'CREATE FUNCTION campus.get_status_studierendenantrag(integer) RETURNS character varying
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE i_studierendenantrag_id ALIAS FOR $1;
+ DECLARE rec RECORD;
+ BEGIN
+ SELECT INTO rec studierendenantrag_statustyp_kurzbz
+ FROM campus.tbl_studierendenantrag_status
+ WHERE studierendenantrag_id=i_studierendenantrag_id
+ ORDER BY insertamum desc
+ LIMIT 1;
+
+ RETURN rec.studierendenantrag_statustyp_kurzbz;
+ END;
+ $_$;
+
+ ALTER FUNCTION campus.get_status_studierendenantrag(integer) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'campus.get_status_studierendenantrag(integer): '.$db->db_last_error().' ';
+ else
+ echo ' campus.get_status_studierendenantrag(integer): function created';
+}
+
+if (!$result = @$db->db_query("SELECT campus.get_status_id_studierendenantrag(0)")) {
+ $qry = 'CREATE FUNCTION campus.get_status_id_studierendenantrag(integer) RETURNS integer
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE i_studierendenantrag_id ALIAS FOR $1;
+ DECLARE rec RECORD;
+ BEGIN
+ SELECT INTO rec studierendenantrag_status_id
+ FROM campus.tbl_studierendenantrag_status
+ WHERE studierendenantrag_id=i_studierendenantrag_id
+ ORDER BY insertamum desc
+ LIMIT 1;
+
+ RETURN rec.studierendenantrag_status_id;
+ END;
+ $_$;
+
+ ALTER FUNCTION campus.get_status_id_studierendenantrag(integer) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'campus.get_status_id_studierendenantrag(integer): '.$db->db_last_error().' ';
+ else
+ echo ' campus.get_status_id_studierendenantrag(integer): function created';
+}
+
+if (!$result = @$db->db_query("SELECT public.get_absem_prestudent(0, null)")) {
+ $qry = 'CREATE FUNCTION public.get_absem_prestudent(integer, character varying) RETURNS integer
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE i_prestudent_id ALIAS FOR $1;
+ DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
+ DECLARE rec RECORD;
+ BEGIN
+ IF (cv_studiensemester_kurzbz IS NULL) THEN
+ SELECT INTO rec ausbildungssemester
+ FROM public.tbl_prestudentstatus
+ WHERE prestudent_id=i_prestudent_id
+ ORDER BY datum desc,insertamum desc, ext_id desc
+ LIMIT 1;
+ ELSE
+ SELECT INTO rec ausbildungssemester
+ FROM tbl_prestudentstatus
+ WHERE prestudent_id=i_prestudent_id AND studiensemester_kurzbz=cv_studiensemester_kurzbz
+ ORDER BY datum desc,insertamum desc, ext_id desc
+ LIMIT 1;
+ END IF;
+
+ RETURN rec.ausbildungssemester;
+ END;
+ $_$;
+
+ ALTER FUNCTION public.get_absem_prestudent(integer, character varying) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_absem_prestudent(integer, character varying): '.$db->db_last_error().' ';
+ else
+ echo ' public.get_absem_prestudent(integer, character varying): function created';
+}
+if (!$result = @$db->db_query("SELECT public.get_stdsem_prestudent(0, null)")) {
+ $qry = 'CREATE FUNCTION public.get_stdsem_prestudent(integer, character varying) RETURNS character varying
+ LANGUAGE plpgsql
+ AS $_$
+ DECLARE i_prestudent_id ALIAS FOR $1;
+ DECLARE cv_studiensemester_kurzbz ALIAS FOR $2;
+ DECLARE rec RECORD;
+ BEGIN
+ IF (cv_studiensemester_kurzbz IS NULL) THEN
+ SELECT INTO rec studiensemester_kurzbz
+ FROM public.tbl_prestudentstatus
+ WHERE prestudent_id=i_prestudent_id
+ ORDER BY datum desc,insertamum desc, ext_id desc
+ LIMIT 1;
+ ELSE
+ SELECT INTO rec studiensemester_kurzbz
+ FROM tbl_prestudentstatus
+ WHERE prestudent_id=i_prestudent_id AND studiensemester_kurzbz=cv_studiensemester_kurzbz
+ ORDER BY datum desc,insertamum desc, ext_id desc
+ LIMIT 1;
+ END IF;
+
+ RETURN rec.studiensemester_kurzbz;
+ END;
+ $_$;
+
+ ALTER FUNCTION public.get_stdsem_prestudent(integer, character varying) OWNER TO fhcomplete;';
+
+ if(!$db->db_query($qry))
+ echo 'public.get_stdsem_prestudent(integer, character varying): '.$db->db_last_error().' ';
+ else
+ echo ' public.get_stdsem_prestudent(integer, character varying): function created';
+}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStgl';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('abbrecherStgl', 'Abbrecher', TRUE, '{\"durch Stgl\", \"by Course Director\"}', '{\"durch Stgl\", \"by Course Director\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().' ';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund abbrecherStgl for Abbrecher ';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'abbrecherStud';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('abbrecherStud', 'Abbrecher', TRUE, '{\"durch Stud\", \"by Student\"}', '{\"durch Stud\", \"by Student\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().' ';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund abbrecherStud for Abbrecher ';
+ }
+}
+
+if($result = @$db->db_query("SELECT 1 FROM public.tbl_status_grund WHERE statusgrund_kurzbz = 'preabbrecher';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO public.tbl_status_grund(statusgrund_kurzbz, status_kurzbz, aktiv, beschreibung, bezeichnung_mehrsprachig) VALUES('preabbrecher', 'Student', TRUE, '{\"Pre-Abbrecher\", \"Pre-Aborted\"}', '{\"Pre-Abbrecher\", \"Pre-Aborted\"}');";
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status_grund '.$db->db_last_error().' ';
+ else
+ echo ' public.tbl_status_grund: Added Statusgrund pre-abbrecher for Student ';
+ }
+}
diff --git a/system/dbupdate_3.4/28089_plausichecks_in_extension_hinzufuegen.php b/system/dbupdate_3.4/28089_plausichecks_in_extension_hinzufuegen.php
new file mode 100644
index 000000000..84a85629a
--- /dev/null
+++ b/system/dbupdate_3.4/28089_plausichecks_in_extension_hinzufuegen.php
@@ -0,0 +1,16 @@
+db_query("SELECT 1 FROM system.tbl_fehler WHERE fehlertyp_kurzbz='error' AND fehler_kurzbz IN ('AbschlussstatusFehlt', 'AusbildungssemPrestudentUngleichAusbildungssemStatus', 'BewerberNichtZumRtAngetreten', 'GbDatumWeitZurueck', 'InaktiverStudentAktiverStatus')"))
+{
+ if($db->db_num_rows($result)>0)
+ {
+ $qry = "UPDATE system.tbl_fehler SET fehlertyp_kurzbz='warning' WHERE fehler_kurzbz IN ('AbschlussstatusFehlt', 'AusbildungssemPrestudentUngleichAusbildungssemStatus', 'BewerberNichtZumRtAngetreten', 'GbDatumWeitZurueck', 'InaktiverStudentAktiverStatus') AND fehlertyp_kurzbz = 'error';";
+
+ if(!$db->db_query($qry))
+ echo 'System Tabelle Fehler: '.$db->db_last_error().' ';
+ else
+ echo ' Bestimmte Fehler mit Typ error zu warnings umgewandelt';
+ }
+}
diff --git a/system/dbupdate_3.4/28260_vertraege.php b/system/dbupdate_3.4/28260_vertraege.php
index 62fbcfb22..90661f424 100644
--- a/system/dbupdate_3.4/28260_vertraege.php
+++ b/system/dbupdate_3.4/28260_vertraege.php
@@ -7,11 +7,13 @@ if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table
if ($db->db_num_rows($result) == 0)
{
$qry = "
- CREATE SCHEMA hr;
+ CREATE SCHEMA IF NOT EXISTS hr;
COMMENT ON SCHEMA hr IS E'Personalverwaltung';
ALTER SCHEMA hr OWNER TO fhcomplete;
+ CREATE EXTENSION IF NOT EXISTS pgcrypto;
+
CREATE TABLE hr.tbl_dienstverhaeltnis
(
dienstverhaeltnis_id serial NOT NULL,
@@ -346,6 +348,13 @@ if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table
GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_karenztyp TO vilesci;
GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_teilzeittyp TO vilesci;
+ GRANT SELECT ON hr.tbl_dienstverhaeltnis TO web;
+ GRANT SELECT ON hr.tbl_vertragsart TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteil TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteiltyp TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteil_stunden TO web;
+ GRANT SELECT ON hr.tbl_vertragsbestandteil_zeitaufzeichnung TO web;
+
GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltsbestandteil TO vilesci;
GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltsabrechnung TO vilesci;
GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_gehaltstyp TO vilesci;
@@ -374,6 +383,7 @@ if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table
INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('grundgehalt','Grundgehalt', true, 2, true);
INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('zulage','Zulage', true, 3, true);
INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('praemie','Prämie', false, 4, true);
+ INSERT INTO hr.tbl_gehaltstyp(gehaltstyp_kurzbz, bezeichnung, valorisierung, sort, aktiv) VALUES('lohnausgleichatz','Lohnausgleich ATZ', false, 5, true);
INSERT INTO hr.tbl_vertragsbestandteil_freitexttyp(freitexttyp_kurzbz, bezeichnung, ueberlappend, kuendigungsrelevant) VALUES('allin','All-In', false, false);
INSERT INTO hr.tbl_vertragsbestandteil_freitexttyp(freitexttyp_kurzbz, bezeichnung, ueberlappend, kuendigungsrelevant) VALUES('ersatzarbeitskraft','Ersatzarbeitskraft', false, true);
@@ -407,6 +417,8 @@ if ($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table
GRANT USAGE ON hr.tbl_dienstverhaeltnis_dienstverhaeltnis_id_seq TO vilesci;
GRANT USAGE ON hr.tbl_vertragsbestandteil_vertragsbestandteil_id_seq TO vilesci;
+
+ GRANT USAGE ON hr.tbl_gehaltsbestandteil_gehaltsbestandteil_id_seq TO vilesci;
";
if (! $db->db_query($qry))
diff --git a/system/dbupdate_3.4/29094_stundensaetze.php b/system/dbupdate_3.4/29094_stundensaetze.php
new file mode 100644
index 000000000..e0ef5d963
--- /dev/null
+++ b/system/dbupdate_3.4/29094_stundensaetze.php
@@ -0,0 +1,69 @@
+db_query("SELECT 1 FROM hr.tbl_stundensatz LIMIT 1"))
+{
+ $qry = "
+ CREATE TABLE hr.tbl_stundensatztyp
+ (
+ stundensatztyp varchar(32) NOT NULL,
+ bezeichnung varchar(256),
+ aktiv boolean NOT NULL DEFAULT true,
+ insertamum timestamp DEFAULT now(),
+ insertvon varchar(32),
+ updateamum timestamp,
+ updatevon varchar(32),
+ CONSTRAINT tbl_stundensatztyp_pk PRIMARY KEY (stundensatztyp)
+ );
+
+ CREATE TABLE hr.tbl_stundensatz
+ (
+ stundensatz_id integer NOT NULL,
+ uid character varying(32),
+ stundensatztyp varchar(32),
+ stundensatz numeric(6, 2),
+ oe_kurzbz character varying(32),
+ gueltig_von date,
+ gueltig_bis date,
+ insertamum timestamp,
+ insertvon varchar(32),
+ updateamum timestamp,
+ updatevon varchar(32),
+ CONSTRAINT tbl_stundensatz_pkey PRIMARY KEY (stundensatz_id)
+ );
+
+ CREATE SEQUENCE hr.tbl_stundensatz_stundensatz_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+ ALTER TABLE hr.tbl_stundensatz ALTER COLUMN stundensatz_id SET DEFAULT nextval('hr.tbl_stundensatz_stundensatz_id_seq');
+
+ ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_stundensatztyp_fk FOREIGN KEY (stundensatztyp) REFERENCES hr.tbl_stundensatztyp (stundensatztyp) ON DELETE RESTRICT ON UPDATE CASCADE;
+ ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_uid_fk FOREIGN KEY (uid) REFERENCES public.tbl_mitarbeiter ON DELETE RESTRICT ON UPDATE CASCADE;
+ ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_oe_kurzbz_fk FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit (oe_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatztyp TO vilesci;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatz TO vilesci;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatz_stundensatz_id_seq TO vilesci;
+
+ GRANT SELECT ON hr.tbl_stundensatztyp TO web;
+ GRANT SELECT ON hr.tbl_stundensatz TO web;
+
+ INSERT INTO hr.tbl_stundensatztyp(stundensatztyp, bezeichnung, insertvon) VALUES('lehre','Lehre', 'checksystem');
+ INSERT INTO hr.tbl_stundensatztyp(stundensatztyp, bezeichnung, insertvon) VALUES('kalkulatorisch','kalkulatorische Stundensaetze', 'checksystem');
+
+ CREATE INDEX idx_tbl_stundensatz_uid ON hr.tbl_stundensatz USING btree (uid);
+ CREATE INDEX idx_tbl_stundensatz_stundensatz_id ON hr.tbl_stundensatz USING btree (stundensatz_id);
+ ";
+
+ if (!$db->db_query($qry))
+ echo 'Stundensaetze Tabelle: ' . $db->db_last_error() . ' ';
+ else
+ echo 'Stundensaetze Tabelle erstellt';
+
+
+}
diff --git a/system/dbupdate_3.4/29133_einzelne_studiengaenge_aus_issuechecks_ausnehmen.php b/system/dbupdate_3.4/29133_einzelne_studiengaenge_aus_issuechecks_ausnehmen.php
new file mode 100644
index 000000000..7102806e3
--- /dev/null
+++ b/system/dbupdate_3.4/29133_einzelne_studiengaenge_aus_issuechecks_ausnehmen.php
@@ -0,0 +1,108 @@
+db_query("SELECT 1 FROM system.tbl_app WHERE app='personalverwaltung' LIMIT 1"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_app(app) VALUES('personalverwaltung');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_app: '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_app: Personalverwaltung hinzugefügt ';
+ }
+}
+
+if (!$result = @$db->db_query('SELECT 1 FROM system.tbl_fehler_konfigurationsdatentyp LIMIT 1'))
+{
+ $qry = 'CREATE TABLE system.tbl_fehler_konfigurationsdatentyp
+ (
+ konfigurationsdatentyp varchar(32)
+ );
+
+ COMMENT ON TABLE system.tbl_fehler_konfigurationsdatentyp IS \'Konfigurationsparameter Datentypen\';
+ COMMENT ON COLUMN system.tbl_fehler_konfigurationsdatentyp.konfigurationsdatentyp IS \'Datentyp der Konfigurationsparameter, z.B. integer oder string\';
+
+ ALTER TABLE system.tbl_fehler_konfigurationsdatentyp ADD CONSTRAINT pk_fehler_konfigurationsdatentyp PRIMARY KEY (konfigurationsdatentyp);
+
+ GRANT SELECT ON system.tbl_fehler_konfigurationsdatentyp TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON system.tbl_fehler_konfigurationsdatentyp TO vilesci;
+
+ -- prefill values
+ INSERT INTO system.tbl_fehler_konfigurationsdatentyp(konfigurationsdatentyp) VALUES(\'integer\');
+ INSERT INTO system.tbl_fehler_konfigurationsdatentyp(konfigurationsdatentyp) VALUES(\'float\');
+ INSERT INTO system.tbl_fehler_konfigurationsdatentyp(konfigurationsdatentyp) VALUES(\'string\');
+ ';
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_fehler_konfigurationsdatentyp: '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_fehler_konfigurationsdatentyp: Tabelle hinzugefuegt ';
+}
+
+if (!$result = @$db->db_query('SELECT 1 FROM system.tbl_fehler_konfigurationstyp LIMIT 1'))
+{
+ $qry = 'CREATE TABLE system.tbl_fehler_konfigurationstyp
+ (
+ konfigurationstyp_kurzbz varchar(64),
+ beschreibung text,
+ konfigurationsdatentyp varchar(32),
+ app varchar(32) NOT NULL
+ );
+
+ COMMENT ON TABLE system.tbl_fehler_konfigurationstyp IS \'Konfigurationsparameter Typen\';
+ COMMENT ON COLUMN system.tbl_fehler_konfigurationstyp.konfigurationstyp_kurzbz IS \'Art der Konfiguration\';
+ COMMENT ON COLUMN system.tbl_fehler_konfigurationstyp.beschreibung IS \'Kurze Erklärung, was die Konfiguration bewirkt\';
+ COMMENT ON COLUMN system.tbl_fehler_konfigurationstyp.app IS \'App, für welche die Konfiguration gilt\';
+
+ ALTER TABLE system.tbl_fehler_konfigurationstyp ADD CONSTRAINT pk_fehler_konfigurationstyp PRIMARY KEY (konfigurationstyp_kurzbz);
+ ALTER TABLE system.tbl_fehler_konfigurationstyp ADD CONSTRAINT fk_fehler_konfigurationstyp_app FOREIGN KEY (app) REFERENCES system.tbl_app(app) ON UPDATE CASCADE ON DELETE RESTRICT;
+ ALTER TABLE system.tbl_fehler_konfigurationstyp ADD CONSTRAINT fk_fehler_konfigurationstyp_konfigurationsdatentyp FOREIGN KEY (konfigurationsdatentyp) REFERENCES system.tbl_fehler_konfigurationsdatentyp(konfigurationsdatentyp) ON UPDATE CASCADE ON DELETE RESTRICT;
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON system.tbl_fehler_konfigurationstyp TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON system.tbl_fehler_konfigurationstyp TO vilesci;
+
+ -- prefill values
+ INSERT INTO system.tbl_fehler_konfigurationstyp(konfigurationstyp_kurzbz, beschreibung, konfigurationsdatentyp, app)
+ VALUES(\'exkludierteStudiengaenge\', \'Studiengangskennzahlen von Studiengängen, die nicht bei den Studierendenplausichecks berücksichtigt werden\', \'integer\', \'core\');
+ ';
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_fehler_konfigurationstyp: '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_fehler_konfigurationstyp: Tabelle hinzugefuegt ';
+}
+
+if (!$result = @$db->db_query('SELECT 1 FROM system.tbl_fehler_konfiguration LIMIT 1'))
+{
+ $qry = 'CREATE TABLE system.tbl_fehler_konfiguration
+ (
+ konfigurationstyp_kurzbz varchar(64),
+ fehlercode varchar(64),
+ konfiguration jsonb NOT NULL,
+ insertamum timestamp default NOW(),
+ insertvon varchar(32),
+ updateamum timestamp,
+ updatevon varchar(32)
+ );
+
+ COMMENT ON TABLE system.tbl_fehler_konfiguration IS \'Konfigurationsparameter pro Fehler\';
+ COMMENT ON COLUMN system.tbl_fehler_konfiguration.konfigurationstyp_kurzbz IS \'Art der Konfiguration\';
+ COMMENT ON COLUMN system.tbl_fehler_konfiguration.konfiguration IS \'Konfigruationsparameter \';
+
+ ALTER TABLE system.tbl_fehler_konfiguration ADD CONSTRAINT pk_fehler_konfiguration PRIMARY KEY (konfigurationstyp_kurzbz, fehlercode);
+ ALTER TABLE system.tbl_fehler_konfiguration ADD CONSTRAINT fk_fehler_konfiguration_konfigurationstyp_kurzbz FOREIGN KEY (konfigurationstyp_kurzbz) REFERENCES system.tbl_fehler_konfigurationstyp(konfigurationstyp_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
+ ALTER TABLE system.tbl_fehler_konfiguration ADD CONSTRAINT fk_fehler_konfiguration_fehlercode FOREIGN KEY (fehlercode) REFERENCES system.tbl_fehler(fehlercode) ON UPDATE CASCADE ON DELETE RESTRICT;
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON system.tbl_fehler_konfiguration TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON system.tbl_fehler_konfiguration TO vilesci;
+ ';
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_fehler_konfiguration: '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_fehler_konfiguration: Tabelle hinzugefuegt ';
+}
diff --git a/system/dbupdate_3.4/29529_infocenter_anpassungen.php b/system/dbupdate_3.4/29529_infocenter_anpassungen.php
new file mode 100644
index 000000000..e11f3ed39
--- /dev/null
+++ b/system/dbupdate_3.4/29529_infocenter_anpassungen.php
@@ -0,0 +1,34 @@
+db_query("SELECT has_sequence_privilege('web', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')"))
+{
+
+ if($db->db_fetch_object($result)->has_sequence_privilege === "f")
+ {
+ $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to web;";
+
+ if(!$db->db_query($qry))
+ echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().' ';
+ else
+ echo ' Web User fuer testtool.tbl_pruefling berechtigt';
+ }
+}
+
+// Update Berechtigungen fuer vilesci User erteilen fuer tbl_pruefling_pruefling_id_seq
+if($result = @$db->db_query("SELECT has_sequence_privilege('vilesci', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')"))
+{
+ if($db->db_fetch_object($result)->has_sequence_privilege === "f")
+ {
+ $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to vilesci;";
+
+ if(!$db->db_query($qry))
+ echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().' ';
+ else
+ echo ' vilesci User fuer testtool.tbl_pruefling berechtigt';
+ }
+}
+
+
diff --git a/system/dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php b/system/dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php
new file mode 100644
index 000000000..aaa412d88
--- /dev/null
+++ b/system/dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php
@@ -0,0 +1,141 @@
+db_query('SELECT 1 FROM bis.tbl_abschluss LIMIT 1'))
+{
+ $qry = "CREATE TABLE bis.tbl_abschluss
+ (
+ ausbildung_code integer NOT NULL,
+ abschluss_bez varchar(128),
+ bezeichnung character varying(128)[],
+ aktiv boolean NOT NULL DEFAULT true,
+ in_oesterreich boolean,
+ CONSTRAINT pk_tbl_abschluss PRIMARY KEY (ausbildung_code)
+ );
+
+ COMMENT ON TABLE bis.tbl_abschluss IS 'Key-Table of graduation';
+ COMMENT ON COLUMN bis.tbl_abschluss.aktiv IS 'Shows wether graduation is still valid.';
+ COMMENT ON COLUMN bis.tbl_abschluss.in_oesterreich IS 'Shows if graduation was obtained in Austria.';
+
+ GRANT SELECT ON bis.tbl_abschluss TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON bis.tbl_abschluss TO vilesci;
+
+ -- prefill values
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(110, 'Pflichtschule', '{\"Pflichtschule (mit/ohne Abschluss)\", \"Compulsory school (Completed/not completed)\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(121, 'Lehre', '{\"Lehre\", \"Apprenticeship\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(122, 'Mittlere Schule ohne Matura', '{\"Mittlere Schule ohne Matura (z.B. Handelsschule, Fachschule)\", \"School for intermediate vocational education (without university entrance qualification)\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(123, 'Meisterprüfung', '{\"Meisterprüfung\", \"Master craftsman''s diploma\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(131, 'AHS', '{\"AHS (allgemein bildende höhere Schule)\", \"Academic secondary school\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(132, 'BHS', '{\"BHS (berufsbildende höhere Schule, z.B. HAK, HTL)\", \"College for higher vocational education\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(133, 'Sonstige Hochschulzugangsberechtigung', '{\"Sonstige Hochschulzugangsberechtigung (z.B. Berufsreifeprüfung)\", \"Other university entrance qualification (e.g. ''Berufsreifeprüfung'')\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(141, 'Akademie', '{\"Akademie (z.B. PÄDAK, SOZAK)\", \"Academy (for example PÄDAK, SOZAK)\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(142, 'Universität/Hochschule', '{\"Universität/Hochschule\", \"University/university of applied sciences/university college of teacher education\"}', true);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(210, 'Pflichtschule', '{\"Pflichtschule (mit/ohne Abschluss)\", \"Compulsory school (Completed/not completed)\"}', false);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(220, 'Ausbildung ohne Hochschulzugangsberechtigung', '{\"Lehre oder mittlere Schule ohne Matura/Ausbildung ohne Hochschulzugangsberechtigung\", \"Apprenticeship or school for intermediate vocational education (education without university entrance qualification)\"}', false);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(230, 'Ausbildung mit Hochschulzugangsberechtigung', '{\"Höhere Schule mit Matura / Ausbildung mit Hochschulzugangsberechtigung (z.B. Abitur)\", \"Higher secondary school with university entrance qualification\"}', false);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung, in_oesterreich) VALUES(240, 'Universität/Hochschule', '{\"Universität/Hochschule\", \"University/university of applied sciences/university college of teacher education\"}', false);
+ INSERT INTO bis.tbl_abschluss(ausbildung_code, abschluss_bez, bezeichnung) VALUES(999, 'unbekannt', '{\"Ich weiß nicht, welchen Abschluss meine erziehungsberechtigte Person erlangt hat.\", \"I do not know what degree my legal guardian got.\"}');
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'bis.tbl_abschluss: '.$db->db_last_error().' ';
+ else
+ echo ' bis.tbl_abschluss: Tabelle hinzugefuegt ';
+}
+
+if (!$result = @$db->db_query('SELECT 1 FROM bis.tbl_uhstat1daten LIMIT 1'))
+{
+ $qry = "CREATE SEQUENCE bis.tbl_uhstat1daten_uhstat1daten_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ START WITH 1
+ CACHE 1
+ NO CYCLE;
+
+ CREATE TABLE bis.tbl_uhstat1daten
+ (
+ uhstat1daten_id integer DEFAULT nextval('bis.tbl_uhstat1daten_uhstat1daten_id_seq'::regclass),
+ mutter_geburtsstaat varchar(3),
+ mutter_bildungsstaat varchar(3),
+ mutter_geburtsjahr smallint,
+ mutter_bildungmax integer,
+ vater_geburtsstaat varchar(3),
+ vater_bildungsstaat varchar(3),
+ vater_geburtsjahr smallint,
+ vater_bildungmax integer,
+ person_id integer NOT NULL,
+ insertamum timestamp without time zone DEFAULT now(),
+ insertvon character varying(32),
+ updateamum timestamp without time zone,
+ updatevon character varying(32),
+ CONSTRAINT pk_tbl_uhstat1daten PRIMARY KEY (uhstat1daten_id)
+ );
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_mutter_geburtsstaat FOREIGN KEY (mutter_geburtsstaat)
+ REFERENCES bis.tbl_nation (nation_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_mutter_bildungsstaat FOREIGN KEY (mutter_bildungsstaat)
+ REFERENCES bis.tbl_nation (nation_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_mutter_bildungmax FOREIGN KEY (mutter_bildungmax)
+ REFERENCES bis.tbl_abschluss (ausbildung_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_vater_geburtsstaat FOREIGN KEY (vater_geburtsstaat)
+ REFERENCES bis.tbl_nation (nation_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_vater_bildungsstaat FOREIGN KEY (vater_bildungsstaat)
+ REFERENCES bis.tbl_nation (nation_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_vater_bildungmax FOREIGN KEY (vater_bildungmax)
+ REFERENCES bis.tbl_abschluss (ausbildung_code) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT fk_tbl_uhstat1daten_person_id FOREIGN KEY (person_id)
+ REFERENCES public.tbl_person (person_id) MATCH SIMPLE
+ ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ ALTER TABLE bis.tbl_uhstat1daten ADD CONSTRAINT uk_uhstat1daten_person_id UNIQUE(person_id);
+
+ COMMENT ON TABLE bis.tbl_uhstat1daten IS 'UHSTAT1 data for a person (statistical data)';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.mutter_geburtsstaat IS 'Birth country of mother of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.mutter_bildungsstaat IS 'Education country of mother of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.mutter_geburtsjahr IS 'Birth year of mother of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.mutter_bildungmax IS 'Highest completed level of education of mother (code)';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.vater_geburtsstaat IS 'Birth country of father of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.vater_bildungsstaat IS 'Education country of father of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.vater_geburtsjahr IS 'Birth year of father of person';
+ COMMENT ON COLUMN bis.tbl_uhstat1daten.vater_bildungmax IS 'Highest completed level of education of father (code)';
+
+ GRANT SELECT, UPDATE, INSERT, DELETE ON bis.tbl_uhstat1daten TO web;
+ GRANT SELECT, UPDATE, INSERT, DELETE ON bis.tbl_uhstat1daten TO vilesci;
+ GRANT SELECT, UPDATE ON bis.tbl_uhstat1daten_uhstat1daten_id_seq TO vilesci;
+ GRANT SELECT, UPDATE ON bis.tbl_uhstat1daten_uhstat1daten_id_seq TO web;
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'bis.tbl_uhstat1daten: '.$db->db_last_error().' ';
+ else
+ echo ' bis.tbl_uhstat1daten: Tabelle hinzugefuegt ';
+}
+
+// Add permission for managing UHSTAT1 data
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/uhstat1daten_verwalten';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/uhstat1daten_verwalten', 'UHSTAT1 Daten verwalten');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_berechtigung '.$db->db_last_error().' ';
+ else
+ echo ' system.tbl_berechtigung: Added permission for student/uhstat1daten_verwalten ';
+ }
+}
diff --git a/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php b/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php
new file mode 100644
index 000000000..922920071
--- /dev/null
+++ b/system/dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php
@@ -0,0 +1,28 @@
+db_query("SELECT begruendung_ects FROM lehre.tbl_anrechnung LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_anrechnung ADD COLUMN begruendung_ects text;
+ COMMENT ON COLUMN lehre.tbl_anrechnung.begruendung_ects IS 'Begruendung gleichwertiger ECTS';
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_anrechnung '.$db->db_last_error().' ';
+ else
+ echo ' Spalte begruendung_ects zu Tabelle lehre.tbl_anrechnung hinzugefügt';
+}
+
+//Add column begruendung_lvinhalt to lehre.tbl_anrechnung
+if(!@$db->db_query("SELECT begruendung_lvinhalt FROM lehre.tbl_anrechnung LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_anrechnung ADD COLUMN begruendung_lvinhalt text;
+ COMMENT ON COLUMN lehre.tbl_anrechnung.begruendung_lvinhalt IS 'Begruendung gleichwertiger LV-Inhalte';
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_anrechnung '.$db->db_last_error().' ';
+ else
+ echo ' Spalte begruendung_lvinhalt zu Tabelle lehre.tbl_anrechnung hinzugefügt';
+}
\ No newline at end of file
diff --git a/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php b/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php
new file mode 100644
index 000000000..0d7b43b8f
--- /dev/null
+++ b/system/dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php
@@ -0,0 +1,15 @@
+db_query("SELECT anmerkung FROM system.tbl_rolleberechtigung LIMIT 1"))
+{
+ $qry = "ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN anmerkung varchar(256);
+ ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN insertamum timestamp DEFAULT now();
+ ALTER TABLE system.tbl_rolleberechtigung ADD COLUMN insertvon varchar(32);";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_rolleberechtigung '.$db->db_last_error().' ';
+ else
+ echo ' Spalten anmerkung, insertamum, insertvon in system.tbl_rolleberechtigung hinzugefügt';
+}
diff --git a/system/filtersupdate.php b/system/filtersupdate.php
index 2ed253422..cc9abfb98 100644
--- a/system/filtersupdate.php
+++ b/system/filtersupdate.php
@@ -520,7 +520,29 @@ $filters = array(
{"name": "Studiengang"},
{"name": "AbgewiesenAm"},
{"name": "Nachricht"},
- {"name": "Kaution"}
+ {"name": "Kaution"},
+ {"name": "LockUser"}
+ ],
+ "filters": []
+ }
+ ',
+ 'oe_kurzbz' => null,
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'dataset_name' => 'aufgenommen',
+ 'filter_kurzbz' => 'InfoCenterAufgenommenAlle',
+ 'description' => '{Alle}',
+ 'sort' => 1,
+ 'default_filter' => true,
+ 'filter' => '
+ {
+ "name": "Aufgenommen - Lehrgänge",
+ "columns": [
+ {"name": "PersonId"},
+ {"name": "Vorname"},
+ {"name": "Nachname"},
+ {"name": "Studiengang"}
],
"filters": []
}
@@ -1038,6 +1060,7 @@ $filters = array(
{"name": "Note"},
{"name": "ErstNachname"},
{"name": "ErstAbgeschickt"},
+ {"name": "ZweitNachname"},
{"name": "ZweitAbgeschickt"}
],
"filters": []
@@ -1124,6 +1147,72 @@ $filters = array(
',
'oe_kurzbz' => null,
),
+ array(
+ 'app' => 'personalverwaltung',
+ 'dataset_name' => 'personalIssueViewer',
+ 'filter_kurzbz' => 'offeneFehlerPersonal',
+ 'description' => '{Alle offenen Fehler}',
+ 'sort' => 1,
+ 'default_filter' => true,
+ 'filter' => '
+ {
+ "name": "Alle offenen Fehler",
+ "columns": [
+ {"name": "Datum"},
+ {"name": "Inhalt"},
+ {"name": "Vorname"},
+ {"name": "Nachname"},
+ {"name": "PersonId"},
+ {"name": "Statuscode"}
+ ],
+ "filters": [
+ {
+ "name": "Statuscode",
+ "operation": "ncontains",
+ "condition": "resolved"
+ }
+ ]
+ }
+ ',
+ 'oe_kurzbz' => null,
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'dataset_name' => 'personalIssueViewer',
+ 'filter_kurzbz' => 'FehlerLetzte7TageBearbeitetPersonal',
+ 'description' => '{Letzten 7 Tage bearbeitet}',
+ 'sort' => 2,
+ 'default_filter' => false,
+ 'filter' => '
+ {
+ "name": "Alle in den letzten 7 Tagen bearbeiteten Fehler",
+ "columns": [
+ {"name": "Datum"},
+ {"name": "Inhalt"},
+ {"name": "Vorname"},
+ {"name": "Nachname"},
+ {"name": "PersonId"},
+ {"name": "Statuscode"},
+ {"name": "Verarbeitet von"},
+ {"name": "Verarbeitet am"}
+ ],
+ "filters": [
+ {
+ "name": "Verarbeitet am",
+ "operation": "lt",
+ "condition": "7",
+ "option": "days"
+ },
+ {
+ "name": "Statuscode",
+ "operation": "contains",
+ "condition": "resolved"
+ }
+ ]
+ }
+ ',
+ 'oe_kurzbz' => null,
+ ),
array(
'app' => 'core',
'dataset_name' => 'fehlerZustaendigkeiten',
@@ -1147,6 +1236,28 @@ $filters = array(
',
'oe_kurzbz' => null
),
+ array(
+ 'app' => 'core',
+ 'dataset_name' => 'fehlerKonfiguration',
+ 'filter_kurzbz' => 'fehlerKonfiguration',
+ 'description' => '{Fehler Konfiguration}',
+ 'sort' => 1,
+ 'default_filter' => true,
+ 'filter' => '
+ {
+ "name": "Fehler Konfiguration",
+ "columns": [
+ {"name": "konfigurationstyp_kurzbz"},
+ {"name": "fehlercode"},
+ {"name": "fehler_kurzbz"},
+ {"name": "konfiguration"},
+ {"name": "app"}
+ ],
+ "filters": []
+ }
+ ',
+ 'oe_kurzbz' => null
+ ),
array(
'app' => 'core',
'dataset_name' => 'gruppenmanagement',
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index 80d6b1328..bdbd3fead 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -1168,7 +1168,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
- 'text' => 'Break',
+ 'text' => 'Cancel',
'description' => '',
'insertvon' => 'system'
)
@@ -1795,7 +1795,7 @@ $phrases = array(
),
array(
'sprache' => 'English',
- 'text' => 'Address',
+ 'text' => 'Salutation',
'description' => '',
'insertvon' => 'system'
)
@@ -2081,6 +2081,26 @@ $phrases = array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'adressen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Adressen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'addresses',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'person',
@@ -2141,6 +2161,26 @@ $phrases = array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'plz',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'PLZ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'zip',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'person',
@@ -5774,6 +5814,26 @@ When on hold, the date is only a reminder.',
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'error_invalid_date',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Das Datumsformat ist ungültig oder liegt außerhalb des gültigen Bereichs.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The date format is invalid or out of range.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'ui',
@@ -10909,6 +10969,178 @@ Any unusual occurrences
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungEcts',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründen Sie die Gleichwertigkeit der ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Give reasons for the equivalence of ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungLvinhalt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründen Sie die Gleichwertigkeit der Lehrveranstaltungsinhalte',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Give reasons for the equivalence of the course contents',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungBegruendungEctsTooltipText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Hinsichtlich des Umfangs der LV, die Sie anrechnen lassen wollen: Bitte erläutern Sie, warum Ihr Zeugnis bzw. Ihre berufliche Praxis mit dem Umfang der LV gleichwertig ist. Referenzbeispiele für die ECTS-Berechnung finden Sie rechts in der Infobox.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Regarding the scope of the course you want to have credited: Please explain why your certificate or your professional practice is equivalent to the scope of the course. Reference examples for the ECTS calculation can be found in the info box on the right.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'anrechnungBegruendungLvinhaltTooltipText',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Hinsichtlich der Lernergebnisse der LV (vgl. CIS), die Sie anrechnen lassen wollen: Bitte erläutern Sie, warum die von Ihnen erworbenen Kompetenzen mit diesen Lernergebnissen gleichwertig sind.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'With regard to the learning outcomes of the course (cf. CIS) for which you want to receive credit: Please explain why the competences you have acquired are equivalent to these learning outcomes.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'requestAnrechnungInfoEctsBerechnungTitle',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Referenzbeispiele ECTS-Berechnung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reference examples of ECTS calculation',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'requestAnrechnungInfoEctsBerechnungBody',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "1 ECTS an der FH Technikum Wien entspricht einem Arbeitsaufwand von 25 Stunden.
+ Schulisches Zeugnis:
+ Bitte die Unterrichtsstunden nachvollziehbar in ECTS umrechnen (ein Schuljahr besteht aus ca. 40 Wochen; d.h., eine Unterrichtsstunde pro Woche sind insgesamt ca. 40 Stunden Jahresaufwand.)
+ Hochschulzeugnis:
+ Bitte die ECTS angeben.
+ Berufliche Praxis:
+ Bitte die Dauer der einschlägigen beruflichen Praxis nachvollziehbar in ECTS umrechnen (1,5 ECTS sind ungefähr eine Arbeitswoche im Umfang von 37,5 Stunden).",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => " 1 ECTS at the FH Technikum Wien corresponds to a workload of 25 hours.
+ School certificate:
+ Please convert the teaching hours into ECTS in a comprehensible way (a school year consists of approx. 40 weeks; i.e. one teaching hour per week is a total of approx. 40 hours of annual work).
+ University certificate:
+ Please indicate the ECTS.
+ Professional practice:
+ Please convert the duration of the relevant professional practice into ECTS in a comprehensible way (1.5 ECTS are approximately one working week of 37.5 hours).",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungEctsLabel',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründung Gleichwertigkeit ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason Equivalency of ECTS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'anrechnung',
+ 'phrase' => 'begruendungLvinhaltLabel',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Begründung Gleichwertigkeit LV-Inhalt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason Equivalency of Course content',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -13745,6 +13977,26 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'fehlendeMinZeichen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Fehlende min. Zeichen",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "Missing min. Characters",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -14446,6 +14698,26 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'schliessen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Schließen",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "Close",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'global',
@@ -17823,6 +18095,5018 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'fehlerFehlerKonfigurationLaden',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler beim Laden der Fehlerkonfiguration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error when loading error configuration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'fehlerFehlerLaden',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler beim Laden der Fehler',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error when loading errors',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'ungueltigerKonfigurationstyp',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ungültiger Konfigurationstyp',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Invalid configuration type',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'ungueltigerKonfigurationswert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ungültiger Konfigurationswert für Datentyp {0}, Sonderzeichen nicht erlaubt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Invalid configuration value for data type {0}, special characters not allowed',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'fehlerKonfiguration',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler Konfiguration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error configuration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationstyp',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfigurationstyp',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'configuration type',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationswert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfigurationswert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'configuration value',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationswertPlatzhalter',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'wert1;wert2;wert3',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'value1;value2;value3',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationswertZuweisen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfigurationswert(e) zuweisen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Assign configuration value(s)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationsbeschreibung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfigurationsbeschreibung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Configuration description',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationsdatentyp',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfigurationsdatentyp',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Configuration data type',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfiguration gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Configuration saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationGespeichertFehler',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler beim Speichern der Konfiguration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error when saving configuration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationGeloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfiguration gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Deleted configuration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationGeloeschtFehler',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler beim Löschen der Konfiguration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error when deleting configuration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'fehlermonitoring',
+ 'phrase' => 'konfigurationswertLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Konfigurationswert(e) löschen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Delete configuration value(s)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'angabeFehlt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Angabe fehlt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Value is missing',
+
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'ausbildungBildungsstaatUebereinstimmung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Höchster Abschluss (unterteilt in Österreich oder im Ausland/unbekannt) passt nicht zum Staat des höchsten Abschlusses.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Highest completed level of education (divided into those acquired in Austria and those abroad/unknown) does not match country of the highest completed level of education',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'erfolgreichGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erfolgreich gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Saved successfully',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'fehlerBeimSpeichern',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler beim Speichern',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error when saving',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'uhstat1AnmeldungUeberschrift',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erhebung bei der Anmeldung zu einem Studium oder bei Studienbeginn',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Survey when applying for a study or at the start of studies',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'rechtsbelehrung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'gemäß § 18 Absätzen 6 und 7 Bildungsdokumentationsgesetz 2020, BGBl. I Nr. 20/2021, in der gültigen Fassung, sowie § 141 Absatz 3 Universitätsgesetz 2002, BGBl. I Nr. 120/2002, in der gültigen Fassung.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'according to section 18 subsections 6 and 7 of the Bildungsdokumentationsgesetz 2020, Federal Law Gazette I No. 20/2021, in the current version, and section 141 subsection 3 of the Universitätsgesetz 2002, Federal Law Gazette I No. 120/2002, in the current version.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'uhstat1AnmeldungEinleitungstext',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Das Senden der Daten ist nur möglich, wenn die Sozialversicherungsnummer (bzw. das Ersatzkennzeichen) gültig ist und alle Fragen beantwortet worden sind. Wenn Sie etwas nicht wissen, wählen Sie die Antwortmöglichkeit „unbekannt“, aber beantworten Sie bitte alle Fragen.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Sending the data is only possible if the social security number (or the substitute code) is valid and all questions have been answered. If you don\'t know something, choose the answer option “unknown”, but please answer all questions.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'angabenErziehungsberechtigte',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Angaben zu Ihren Erziehungsberechtigten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Information about your legal guardians',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'angabenErziehungsberechtigteEinleitungstext',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die folgenden Fragen beziehen sich auf Personen, welche für Sie erziehungsberechtigt waren oder sind (Eltern oder jene Personen, die für Sie eine entsprechende Rolle übernommen haben, wie z.B. Stief- oder Pflegeeltern).',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The following issues refer to your legal guardians (parents or persons who were in the role of the parents, e.g. stepparents or foster parents).',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'bitteAuswaehlen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bitte auswählen...',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'please select...',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'erziehungsberechtigtePersonEins',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erziehungsberechtigte Person 1/Mutter',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Legal guardian 1/mother',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'geburtsjahr',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Geburtsjahr',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'year of birth',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'geburtsstaat',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Geburtsstaat',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'country of birth',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'inDenHeutigenGrenzen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'in den heutigen Grenzen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'in today\'s borders',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'hoechsterAbschlussStaat',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Staat des höchsten Abschlusses',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Country of the highest completed level of education',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'hoechsterAbschluss',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Höchster Abschluss',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Highest completed level of education',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'wennAbschlussInOesterreich',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Falls der höchste Bildungsabschluss in Österreich erworben wurde',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'If the highest level of education was completed in Austria:',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'wennAbschlussNichtInOesterreich',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Falls das Land des höchsten erworbenen Bildungsabschlusses unbekannt oder nicht Österreich ist',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'If the country of the highest completed level of education is unknown or not Austria:',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'erziehungsberechtigtePersonZwei',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erziehungsberechtigte Person 2/Vater',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Legal guardian 2/father',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'pruefenUndSpeichern',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Prüfen und Speichern',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Check and submit',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'datenLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Daten löschen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Delete data',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'erfolgreichGeloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erfolgreich gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Deleted successfully',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'uhstat',
+ 'phrase' => 'datenLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Daten löschen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Delete data',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'infotext_Wiederholung_0',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Gemäß § 16 Abs. 1 FHG steht Studierenden einmalig das Recht auf Wiederholung eines Studienjahres in Folge einer negativ beurteilten kommissionellen Prüfung zu.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'According to § 16 paragraph 1 FHG, students have the right to repeat an academic year as a result of a negative examination before a committee.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'infotext_Wiederholung_1',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die Wiederholung ist bei der Studiengangsleitung binnen eines Monats ab Mitteilung des negativen Prüfungsergebnisses bekannt zu geben.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The head of the degree program must be notified of the repetition within one month of notification of the negative examination result.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'infotext_Wiederholung_2',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Infolge der Weiterentwicklung der Qualität des Studienganges kann es zu Änderungen der Studienbedingungen im Zuge der Wiederholung eines Studienjahres kommen (z.B. Studienplan, Prüfungsordnung etc.).',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'As a result of the further development of the quality of the course, there may be changes to the study conditions in the course of repeating an academic year (e.g. study plan, examination regulations, etc.).',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'infotext_Wiederholung_3',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die Studiengangsleitung legt Prüfungen und Lehrveranstaltungen für die Wiederholung des Studienjahres fest.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The head of the degree program determines examinations and courses for the repetition of the academic year.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'infotext_Wiederholung_4',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nicht bestandene Prüfungen und Lehrveranstaltungen sind jedenfalls, bestandene Prüfungen und Lehrveranstaltungen nur, sofern es der Zweck des Studiums erforderlich macht, zu wiederholen oder erneut zu besuchen. Wird eine Lehrveranstaltung nach der letzten Wiederholungsmöglichkeit negativ beurteilt, darf dieder Studierende an keiner kommissionellen Wiederholungsprüfung im Semester der negativ beurteilen Lehrveranstaltung und im Folgesemester mehr teilnehmen (nicht-kommissionelle Wiederholungsprüfungen können wahrgenommen werden)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'In any case, failed examinations and courses are to be repeated or attended again only if the purpose of the course makes it necessary. If a course is assessed negatively after the last opportunity to repeat it, the student may no longer take part in a board re-examination in the semester in which the course was assessed as negative and in the following semester (non-board re-examinations can be taken).',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'info_Wiederholung_Erstellt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Info für Wiederholung Erstellt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Info for Wiederholung Erstellt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_Wiederholung_pruefung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Negativ beurteilte kommissionelle Prüfung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Negative assessment by a committee',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_Wiederholung_pruefung_date',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Datum der Beurteilung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'date of assessment',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_Wiederholung_button_yes',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ich gebe hiermit die Wiederholung des Studienjahres bekannt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'I hereby announce the repetition of the academic year',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_Wiederholung_button_no',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ich werde das Studienjahr nicht wiederholen und Abbrechen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'I will not repeat the academic year and will drop out',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_header',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Verwaltung des Studierendenstatus',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Management of student status',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_new',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Neu Anlegen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Create new',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'cancel',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abbrechen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Cancel',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'ok',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ok',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Ok',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_create',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anlegen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Create',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_create_Abmeldung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Vom Studium abmelden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Deregister from your studies',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_create_Unterbrechung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Das Studium unterbrechen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Interrupt your studies',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_cancel',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bekanntgabe zurückziehen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Cancel announcement',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'warning_Abmeldung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ihr CIS-Account ist noch 21 Tage aktiv. Wir bitten Sie, alle benötigten Dateien (Zeugnisse, Studienerfolgsbestätigungen, Studienbestätigungen, etc.) innerhalb dieses Zeitraums herunterzuladen. Für die Ausstellung von Duplikaten fallen nach Inaktivsetzung des CIS-Accounts Kosten an.' . " \n" .
+ 'Bitte retournieren Sie baldmöglichst entlehnte Bücher an die Bibliothek.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Your CIS account is still active for 21 days. We ask you to download all required files (certificates, confirmations of academic success, confirmation of studies, etc.) within this period. There is a charge for issuing duplicates after the CIS account has been deactivated.' . " \n" .
+ 'Please return borrowed books to the library as soon as possible.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'warning_AbmeldungStgl',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bitte beachten Sie die Einspruchsfrist von 2 Wochen nach Bestätigung durch die Studiengangsleitung!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Please note the objection period of 2 weeks after confirmation by the head of the degree program!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_Abmeldung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abmeldung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'De-registration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_AbmeldungStgl',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abmeldung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'De-registration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_Unterbrechung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Unterbrechung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Interruption',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_Wiederholung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wiederholung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Repetition',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_new_Abmeldung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Neue Abmeldung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'New de-registration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_typ',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Typ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Type',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_status',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Status',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Status',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_studiensemester',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studiensemester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Semester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_erstelldatum',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erstelldatum',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Createdate',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'studierendenantraege',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studierendenanträge',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Applications',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_datum_wiedereinstieg',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wiedereinstieg',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Re-Entry',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_grund',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Grund',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_dateianhaenge',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Dateianhänge',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Attachments',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_anhang',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anhang',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Attachment',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_typ_Abmeldung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abmeldung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Deregistration',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_typ_AbmeldungStgl',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abmeldung (durch Studiengangsleitung)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Cancellation (by course director)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_typ_Unterbrechung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Unterbrechung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Break',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'antrag_typ_Wiederholung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wiederholung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Repetition',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_show_lvs',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'LVs anzeigen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Show LVs',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_edit',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bearbeiten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Edit',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_reopen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erneut Freischalten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reopen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_object',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Beeinspruchen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Object',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_objection_deny',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Einspruch abgelehnt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Objection rejected',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_objection_approve',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Einspruch stattgegeben',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Objection granted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_lvzuweisen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'LVs zuweisen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Assign Lvs',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_approve',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bestätigen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Confirm',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_reject',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ablehnen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reject',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'skip',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Überspringen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Skip',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'select_studiensemester',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studiensemester auswählen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Select a semester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_save_lvs',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zuweisungen speichern',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Save assignments',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'btn_download_antrag',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'PDF herunterladen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Download PDF',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'table',
+ 'phrase' => 'download',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Download',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Download',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'table',
+ 'phrase' => 'reload',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Tabelle neu laden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reload table',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_student',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sie sind derzeit in keinem Studium',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'You are currently not enrolled',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_student_for_prestudent',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Student gefunden für Prestudent #{prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No student found for prestudent #{prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_student_no_failed_exam',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sie sind derzeit in keinem Studium oder haben keine negativ beurteilte kommissionelle Prüfung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'You are not currently studying or have not passed a board examination with negative reasons',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'no_attachments',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Dateianhänge',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No Attachments',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'lehre',
+ 'phrase' => 'prestudent',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Prestudent',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Prestudent',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'lehre',
+ 'phrase' => 'studienjahr',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studienjahr',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Academic year',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_lvzuweisen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Lehrveranstaltungen zuweisen für {name}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Assign Courses for {name}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_lv_nicht_zugelassen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Angabe aller Lehrveranstaltungen, zu denen die Person nicht zugelassen ist',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Details of all courses to which the person is not admitted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_lv_wiederholen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Angabe aller zu wiederholenden bzw. erneut zu besuchenden Lehrveranstaltungen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Specification of all courses to be repeated or attended again',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_show_lvs',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Lehrveranstaltungen für {name}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Courses for {name}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'my_lvs',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Meine Lehrveranstaltungen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'My Courses',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'table',
+ 'phrase' => 'with_selected',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Mit {count} ausgewählten: ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'With {count} selected: ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'lv_nicht_zulassen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nicht zulassen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Don\'t allow ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'lv_wiederholen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wiederholen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Repeat',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_history',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Statusverlauf für #{id} ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'History for #{id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'anmerkung_tooltip',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die Spalte Anmerkung kann verwendet werden, um Besonderheiten z.B. bei einem Studienplanwechsel zu dokumentieren (Änderung von LV-Titel, ECTS…) ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The Comment column can be used to document special features, e.g. when changing the curriculum (change of course title, ECTS...)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'fuer_alle_uebernehmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'für alle übernehmen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'apply for all',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'fuer_x_uebernehmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Auswahl für {count} weitere(n) Wiederholungsanträge übernehmen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Adopt selection for {count} further repeat applications',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'title_grund',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Grund für Ablehnung von #{id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason for rejection of #{id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_lvs',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Lehrveranstaltungen zugewiesen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No courses assigned',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'status_x',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Status: {status}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Status: {status}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'status_saving',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Daten werden gespeichert...',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Saving...',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'status_error',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fehler',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Error',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'status_open',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Offen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Open',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'status_created',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Erstellt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Created',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'status_cancelling',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zurückziehen...',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Cancelling...',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'status_cancelled',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zurückgezogen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Cancelled',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_stg_blacklist',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Für diesen Studiengang sind keine Bekanntgaben möglich',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No announcements are accepted for this course',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_antrag_exists',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Es gibt bereits eine bestehende Bekanntgabe',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'There is already an existing announcement',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_antrag_pending',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Es gibt bereits eine bestehende Bekanntgabe vom Typ {typ}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'There is already an existing announcement of type {typ}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_antrag_found',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Bekanntgabe mit Id {id} gefunden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No announcement found with Id {id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_antrag_found_prestudent',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine {typ} Bekanntgabe gefunden für Prestudent {prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No {typ} announcement found for prestudent {prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_stg_and_sem',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Studiengang und Ausbildungssemester gefunden für Bekanntgabe mit Id {id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No studiengang and ausbildungssemester found for announcement with id: {id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_stg',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Studiengang gefunden: {studiengang_kz}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No studiengang found: {studiengang_kz}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_stg_antrag',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Studiengang gefunden für Bekanntgabe #{id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No studiengang found for announcement #{id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_stg_email',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Studiengang-Email gefunden für Bekanntgabe #{id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No studiengang-email found for announcement #{id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_studienplan',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Studienplan gefunden für Studiengang: {studiengang_kz}, Studiensemester: {studiensemester_kurzbz}, Ausbildungssemester: {semester}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No studienplan found for stg: {studiengang_kz}, studiensemester: {studiensemester_kurzbz}, ausbildungssemester: {semester}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_multiple_studienplan',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Mehrere Studienpläne gefunden für Studiengang: {studiengang_kz}, Studiensemester: {studiensemester_kurzbz}, Ausbildungssemester: {semester}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Multiple studienplans found for stg: {studiengang_kz}, studiensemester: {studiensemester_kurzbz}, ausbildungssemester: {semester}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_sem_after',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Studiensemester nach {semester} gefunden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No studiensemester found after: {semester}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_antrag_locked',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Diese Bekanntgabe ist gesperrt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'This request is locked',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_lv',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Lehrveranstaltung ausgewählt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No course selected',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_lv_in_application',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Lehrveranstaltung in Bekanntgabe gefunden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No course found in announcement',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_right',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Berechtigung, die Bekanntgabe zu bearbeiten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No authorization to edit the announcement',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_objection',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Berechtigung, die Bekanntgabe zu beeinspruchen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No authorization to object the announcement',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_not_objected',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bekanntgabe ist nicht beeinsprucht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Announcement is not objected',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_not_approved',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bakanntgabe ist nicht bestätigt worden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Announcement is not approved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_stg_last_semester',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Der Studiengang hat nicht genügend Semester',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'The course does not have enough semesters',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_person',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Person gefunden mit id {person_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No Person found with id {person_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_person_prestudent',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Person gefunden für Prestudent #{prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No Person found for prestudent #{prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_email',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Email kontakt gefunden für Person mit id {person_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No email contact found for Person with id {person_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_prestudent',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Prestudent gefunden: {prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No Prestudent found: {prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_prestudent_in_sem',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Status für Prestudent #{prestudent_id} in Semester {studiensemester_kurzbz} gefunden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No status found for prestudent #{prestudent_id} in semester {studiensemester_kurzbz}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_stg_for_prestudent',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Studiengang für Prestudent #{prestudent_id} gefunden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No course found for prestudent #{prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_no_prestudentstatus',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kein Status gefunden für Prestudent: {prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No status found for Prestudent: {prestudent_id}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_mail_to',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Email an {email} konnte nicht versandt werden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Failed to send email to {email}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_mail',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die Email wurde nicht an den Studenten versendet Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Mail to student not sent Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_name',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Name des Studenten nicht gefunden Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Name of student not found Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_mail_and_name',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die Email wurde nicht an den Studenten versendet da kein Name gefunden wurde Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Mail to student not sent and student name not found Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'studentIn',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'StudentIn ({prestudent_id})',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Student ({prestudent_id})',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_U_Approve',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Unterbrechung mit id {studierendenantrag_id} konnte nicht genehmigt werden. Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Could not approve Unterbrechung for studierendenantrag_id: {studierendenantrag_id} Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'error_U_Reject',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Unterbrechung mit id {studierendenantrag_id} konnte nicht abgelehnt werden. Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Could not reject Unterbrechung for studierendenantrag_id: {studierendenantrag_id} Details: {message}',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_A_Approve',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abmeldung freigegeben',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Unsubscribe released',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_A_Student',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abmeldung freigegeben',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Unsubscribe released',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_A_Stgl',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abmeldung durch Studiengangsleitung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'De-registration by the course director',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_A_ObjectionDenied',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ihr Einspruch wurde Abgelehnt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Your objection was denied',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_U_Approve',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Unterbrechung freigegeben',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Interruption enabled',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_U_Reject',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Unterbrechung abgelehnt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Interruption rejected',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_W_New',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Neue*r Wiederholer*in',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'New Repeater',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_W_Approve',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wiederholung von Studiengangsleitung freigegeben',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Repetition approved by course director',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_subject_W_Student',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wiederholung von Studiengangsleitung freigegeben',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Repetition approved by course director',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_part_table',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => '{stg_bezeichnung} ({stg_orgform_kurzbz}) {rows}
',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => '{stg_bezeichnung} ({stg_orgform_kurzbz}) {rows}
',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_part_x_new_Abmeldung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => '{count} neue Abmeldung(en) ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => '{count} new De-registration(s) ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_part_x_new_Unterbrechung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => '{count} neue(r) Antrag/Anträge auf Unterbrechung ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => '{count} new application(s) for Interruption ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_part_x_new_Wiederholung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => '{count} neue LV Zuweisung(en) für Wiederholer ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => '{count} new LV assignment(s) for repeaters ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_part_grund',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Grund: {grund}
',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason: {grund}
',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'mail_part_error_no_lvs',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Keine Lehrveranstaltungen gefunden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'No courses found',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'calltoaction_Abmeldung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Die Abmeldung vom Studium kann hier durchführt werden.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'You can deregister from your studies here.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'calltoaction_Unterbrechung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Eine Unterbrechung des Studiums ist hier zu beantragen. Die Gründe der Unterbrechung und die beabsichtigte Fortsetzung des Studiums sind nachzuweisen oder glaubhaft zu machen. In der Entscheidung über den Antrag sind zwingende persönliche, gesundheitliche oder berufliche Gründe zu berücksichtigen. Während der Unterbrechung können keine Prüfungen abgelegt werden.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'You can apply for an interruption of your studies here. The reasons for the interruption and the intended continuation of the course must be proven or made credible. Compelling personal, health or professional reasons must be taken into account when deciding on the application. No exams can be taken during the interruption.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'calltoaction_Wiederholung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Studierenden steht einmalig das Recht auf Wiederholung eines Studienjahres in Folge einer negativ beurteilten kommissionellen Prüfung zu. Die Wiederholung ist bei der Studiengangsleitung binnen eines Monats ab Mitteilung des Prüfungsergebnisses bekannt zu geben. Die Studiengangsleitung hat Prüfungen und Lehrveranstaltungen für die Wiederholung des Studienjahres festzulegen, wobei nicht bestandene Prüfungen und Lehrveranstaltungen jedenfalls, bestandene Prüfungen und Lehrveranstaltungen nur, sofern es der Zweck des Studiums erforderlich macht, zu wiederholen oder erneut zu besuchen sind.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Students have the one-time right to repeat an academic year as a result of a negative examination by a committee. The head of the degree program must be notified of the repetition within one month of notification of the examination result. The head of the degree program must determine examinations and courses for the repetition of the academic year, whereby failed examinations and courses are to be repeated or attended again, in any case, passed examinations and courses only if the purpose of the course makes it necessary.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'textLong_studentNichtGezahlt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ausschlußgrund gemäß Ausbildungsvertrag (Punkt 7.4): \nNichterfüllung finanzieller Verpflichtungen trotz Mahnung (Studienbeitrag)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason for exclusion according to the training contract (point 7.4): \nFailure to meet financial obligations despite a reminder (tuition fees)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'textLong_studentNichtAnwesend',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ausschlußgrund gemäß Ausbildungsvertrag (Punkt 7.4): \nmehrmalig unentschuldigtes Verletzen der Anwesenheitspflicht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason for exclusion according to the training contract (point 7.4): \nmultiple unexcused breaches of attendance requirements',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'textLong_PruefunstermineNichtEingehalten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ausschlußgrund gemäß Ausbildungsvertrag (Punkt 7.4): \nwiederholtes Nichteinhalten von Prüfungsterminen bzw Abgabeterminen für Seminararbeiten bzw. Projektarbeiten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason for exclusion according to the training contract (point 7.4): \nrepeated non-compliance with examination dates or deadlines for seminar papers or project work',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'textLong_plageat',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ausschlußgrund gemäß Ausbildungsvertrag (Punkt 7.4): \nPlagiieren im Rahmen wissenschaftlicher Arbeiten bzw. unerlaubte Verwendung KI generierter Hilfsmittel bzw. Quellen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason for exclusion according to the training contract (point 7.4): \nPlagiarism in the context of scientific work or unauthorized use of AI-generated tools or sources',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'textLong_ungenuegendeLeistung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ausschlußgrund gemäß Ausbildungsvertrag (Punkt 7.4): \nnicht genügende Leistung im Sinne der Prüfungsordnung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason for exclusion according to the training contract (point 7.4): \ninsufficient performance in terms of the examination regulations',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'textLong_NichtantrittStudium',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ausschlußgrund gemäß Ausbildungsvertrag (Punkt 7.4): \nNichtantritt des Studiums zu Beginn des Studienjahres (=Unbegründetes Nichterscheinen zur ersten Studienveranstaltung)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Reason for exclusion according to the training contract (point 7.4): \nFailure to start the course at the beginning of the academic year (= unjustified non-attendance to the first course event)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'dropdown_nichtGezahlt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Student*in hat nicht bezahlt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Student has not paid',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'dropdown_nichtAnwesend',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Student*in war mehrmals unentschuldigt abwesend',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Student was absent without excuse several times',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'dropdown_PruefunstermineNichtEingehalten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Student*in hat Prüfunstermine nicht eingehalten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Student failed to meet exam dates',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'dropdown_plageat',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Student*in hat plagiiert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Student failed to meet exam dates',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'dropdown_ungenuegendeLeistung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Leistung ungenügend',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'performance insufficient',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'dropdown_NichtantrittStudium',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Nichtantritt des Studiums',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'non-commencement of the course',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'studierendenantrag',
+ 'phrase' => 'dropdown_bitteWaehlen',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'bitte auswählen, sofern zutreffend',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'please select if applicable',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ // Personalverwaltung begin
+ array(
+ 'app' => 'core',
+ 'category' => 'global',
+ 'phrase' => 'warnung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Warnung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Warning',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'vornamen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Vornamen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'middle names',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'sprache',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sprache',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'language',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'gemeinde',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Gemeinde',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'municipality',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'heimatadresse',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Heimatadresse',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'home address',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'zustelladresse',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zustelladresse',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'postal address',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'kontaktinformation',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kontaktinformation',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'contact information',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'zustellung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zustellung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'delivery',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'person',
+ 'phrase' => 'abweichenderEmpfaenger',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abweich.Empf. (c/o)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'dissenting recipient (c/o)',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'stammdatenGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Stammdaten gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Master data saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'stammdatenNochNichtGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Stammdaten schließen? Geänderte Daten gehen verloren!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Close master data? Changes will be lost!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'kontaktdatenGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kontaktdaten gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Contact data saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'kontaktdatenGeloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kontaktdaten gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Contact data deleted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'bankdatenGeaendert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bankdaten schließen? Geänderte Daten gehen verloren!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Close banking data? Changes will be lost!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'bankdatenGeloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bankdaten gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Banking data deleted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'bankdatenGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bankdaten gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Banking data saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'bank',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bank',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'bank',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'anschrift',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Anschrift',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'address',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'bic',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'BIC',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'BIC',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'iban',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'IBAN',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'IBAN',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'blz',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'BLZ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'bank no',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'kontonr',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kontonr',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'account no',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'bankverbindung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bankverbindung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'bank details',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'verrechnung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Verrechnung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'billing',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'mitarbeiterdaten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Mitarbeiterdaten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Employee Data',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'kontaktdaten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Kontaktdaten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Contact Data',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'bankdaten',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bankdaten',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Banking Data',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'stundensaetze',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Stundensätze',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Hourly Rates',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'sachaufwand',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sachaufwand',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Material Expenses',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'sachaufwandGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sachaufwand gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Material expenses saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'sachaufwandGeloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sachaufwand gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Material expenses deleted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'funktionGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Funktion gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Job function saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'funktionGeloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Funktion gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Job function deleted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'sachaufwandNochNichtGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Sachaufwand schließen? Geänderte Daten gehen verloren!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Close material expenses? Changes will be lost!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'funktionNochNichtGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Funktion schließen? Geänderte Daten gehen verloren!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Close job function? Changes will be lost!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'stundensatzGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Stundensatz gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Hourly rate saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+
+
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'stundensatzGeloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'stundensatz gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Hourly rate deleted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'stundensatzNochNichtGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Stundensätze schließen? Geänderte Daten gehen verloren!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Close hourly rates? Changes will be lost!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'stundensatzWirklichLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Stundensatz mit dem Typ',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Delete hourly rate of type',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'wirklichLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => ' wirklich löschen?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => '?',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+
+
+
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'core',
+ 'phrase' => 'unternehmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Unternehmen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'company',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'dv_unternehmen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'DV/Unternehmen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'ec/company',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'mitarbeiterdatenGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Mitarbeiterdaten gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Employee data saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'adresseGespeichert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Adresse gespeichert',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Address saved',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'adresseGeloescht',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Adresse gelöscht',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Address deleted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'kannNichtGeloeschtWerden',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'kann nicht gelöscht werden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'cannot be deleted',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'wirklichLoeschen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'wirklich löschen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'delete',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'alias',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Alias',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Alias',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'telefonklappe',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Telefonklappe',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Phone Ext.',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'ausbildung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Ausbildung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Higher Education',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'buero',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Büro',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Office',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'standort',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Standort',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Site',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'bismelden',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Bismelden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'report BIS',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'mitarbeiterdatenGeandert',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Mitarbeiterdaten schließen? Geänderte Daten gehen verloren!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Close employee data? Changes will bei lost!',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'fixangestellt',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fixangestellt',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'permanent employment',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'funktion',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Funktion',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'job function',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'funktionen',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Funktionen',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'job functions',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'fachbereich',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Fachbereich',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'specialist field',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'hrrelevant',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'HR relevant',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'HR-relevant',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'vertragsrelevant',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Vertragsrelevant',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Contract relevant',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'zuordnung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zuordnung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Attribution',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'zuordnung_taetigkeit',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Zuordnung/Tätigkeit',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Attribution/Job Title',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'wochenstunden',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Wochenstunden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'working hours',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'person',
+ 'phrase' => 'abteilung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'Abteilung',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Department',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'personalverwaltung',
+ 'category' => 'vbform',
+ 'phrase' => 'oder',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'oder',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'or',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'ui',
+ 'phrase' => 'ok',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'OK',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'OK',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ // Personalverwaltung end
);
diff --git a/system/vorlage_zip/AntragAbmeldung.odt b/system/vorlage_zip/AntragAbmeldung.odt
new file mode 100644
index 000000000..2e11ca60a
Binary files /dev/null and b/system/vorlage_zip/AntragAbmeldung.odt differ
diff --git a/system/vorlage_zip/AntragAbmeldungStgl.odt b/system/vorlage_zip/AntragAbmeldungStgl.odt
new file mode 100644
index 000000000..2e11ca60a
Binary files /dev/null and b/system/vorlage_zip/AntragAbmeldungStgl.odt differ
diff --git a/system/vorlage_zip/AntragUnterbrechung.odt b/system/vorlage_zip/AntragUnterbrechung.odt
new file mode 100644
index 000000000..aeaa82105
Binary files /dev/null and b/system/vorlage_zip/AntragUnterbrechung.odt differ
diff --git a/system/xsl/AntragAbmeldung.xsl b/system/xsl/AntragAbmeldung.xsl
new file mode 100644
index 000000000..ef67d6f15
--- /dev/null
+++ b/system/xsl/AntragAbmeldung.xsl
@@ -0,0 +1,378 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Studiengang:
+
+
+
+
+
+ Organisationsform:
+
+
+
+
+
+
+
+ Abmeldung vom Studium durch Studierende
+
+
+
+
+
+
+ Name der*des Studierenden
+
+
+
+
+
+
+
+
+
+
+ Personenkennzeichen
+
+
+
+
+
+
+
+
+
+ Studienjahr
+
+
+
+
+
+
+
+
+
+ Studiensemester
+
+
+
+
+
+
+
+
+
+ Semester
+
+
+
+
+
+
+
+
+
+ Grund der Abmeldung:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wir weisen Sie darauf hin, dass Ihr FHTW Account noch 21 Tage aktiv ist. Wir bitten Sie, alle benötigte Dateien (Zeugnisse, Studienerfolgsbestätigungen, Studienbestätigungen, etc.) innerhalb dieses Zeitraums herunterzuladen. Für die Ausstellung von Duplikaten fallen nach Inaktivsetzung des CIS-Accounts Kosten an.
+
+
+ Sie sind gem. Ausbildungsvertrag verpflichtet, unverzüglich alle zur Verfügung gestellten Gerätschaften, Bücher, Schlüssel und sonstige Materialien zurückzugeben.
+
+ Bei Abmeldung vor dem 01.09. bzw. 15.02. und bereits eingezahltem Studienbeitrag für das kommende Semester: Wir informieren Sie darüber, dass der Studienbeitrag für das kommende Semester von Ihnen zurückgefordert werden kann. Bitte geben Sie uns dafür innerhalb von 14 Tagen Ihre Bankdaten an folgende E-Mail-Adresse bekannt: billing@technikum-wien.at.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/system/xsl/AntragAbmeldungStgl.xsl b/system/xsl/AntragAbmeldungStgl.xsl
new file mode 100644
index 000000000..aa6a28073
--- /dev/null
+++ b/system/xsl/AntragAbmeldungStgl.xsl
@@ -0,0 +1,378 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Studiengang:
+
+
+
+
+
+ Organisationsform:
+
+
+
+
+
+
+
+ Abmeldung vom Studium durch Studiengang
+
+
+
+
+
+
+ Name der*des Studierenden
+
+
+
+
+
+
+
+
+
+
+ Personenkennzeichen
+
+
+
+
+
+
+
+
+
+ Studienjahr
+
+
+
+
+
+
+
+
+
+ Studiensemester
+
+
+
+
+
+
+
+
+
+ Semester
+
+
+
+
+
+
+
+
+
+ Grund der Abmeldung:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wir weisen Sie darauf hin, dass Ihr FHTW Account noch 21 Tage aktiv ist. Wir bitten Sie, alle benötigte Dateien (Zeugnisse, Studienerfolgsbestätigungen, Studienbestätigungen, etc.) innerhalb dieses Zeitraums herunterzuladen. Für die Ausstellung von Duplikaten fallen nach Inaktivsetzung des CIS-Accounts Kosten an.
+
+
+ Sie sind gem. Ausbildungsvertrag verpflichtet, unverzüglich alle zur Verfügung gestellten Gerätschaften, Bücher, Schlüssel und sonstige Materialien zurückzugeben.
+
+ Bei Abmeldung vor dem 01.09. bzw. 15.02. und bereits eingezahltem Studienbeitrag für das kommende Semester: Wir informieren Sie darüber, dass der Studienbeitrag für das kommende Semester von Ihnen zurückgefordert werden kann. Bitte geben Sie uns dafür innerhalb von 14 Tagen Ihre Bankdaten an folgende E-Mail-Adresse bekannt: billing@technikum-wien.at.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/system/xsl/AntragUnterbrechung.xsl b/system/xsl/AntragUnterbrechung.xsl
new file mode 100644
index 000000000..f1ab10d91
--- /dev/null
+++ b/system/xsl/AntragUnterbrechung.xsl
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Studiengang:
+
+
+
+
+
+
+
+ Organisationsform:
+
+
+
+
+
+
+
+
+ Antrag auf Unterbrechung des Studiums
+
+
+
+
+
+
+
+ Name der*des Studierenden
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Personenkennzeichen
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Studienjahr
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Aktuelles Semester
+
+
+
+
+
+
+
+
+
+
+
+ Grund der Unterbrechung:
+
+
+
+
+
+
+
+
+
+
+
+
+ Wiedereinstieg am
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Datum:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Infolge der Weiterentwicklung der Qualität des Studienganges kann es zu Änderungen der Studienbedingungen beim Wiedereinstieg kommen (z. B. Studienplan, Prüfungsordnung etc.)
+
+
+ Falls Sie das Studium im Wintersemester vor dem 15.10. bzw. im Sommersemester vor dem 15.3. beenden, wird Ihnen der Studienbeitrag für das aktuelle Semester rückerstattet. Bitte geben Sie uns innerhalb von 14 Tagen Ihre Bankdaten an folgende E-Mail-Adresse bekannt:
+
+
+ billing@technikum-wien.at
+
+
+ .
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vilesci/lehre/check/ueberbuchung.php b/vilesci/lehre/check/ueberbuchung.php
index 3cb6b62e5..1e133384a 100644
--- a/vilesci/lehre/check/ueberbuchung.php
+++ b/vilesci/lehre/check/ueberbuchung.php
@@ -50,31 +50,47 @@ echo '
-
-
-
+ ';
+
+ include('../../../include/meta/jquery.php');
+ include('../../../include/meta/jquery-tablesorter.php');
+
+echo '
-
-
+
+
LV-Plan Überbuchungen - '.$db_stpl_table.'
';
@@ -93,8 +109,8 @@ if($beginn=='' || $ende=='')
$dontloadcontent=true;
}
-echo " Beginn ";
-echo " Ende ";
+echo " Beginn ";
+echo " Ende ";
$stg = new studiengang();
$stg->getAll('typ, kurzbzlang', true);
@@ -128,7 +144,7 @@ foreach ($ort_obj->result as $row)
$ort[$row->ort_kurzbz] = new stdClass(); // Prevents the warning "Creating default object from empty value"
$ort[$row->ort_kurzbz]->max_person = $row->max_person;
}
-$qry = "SELECT DISTINCT vw_".$db_stpl_table.".unr,datum, stunde, ort_kurzbz, studiensemester_kurzbz, vw_".$db_stpl_table.".studiengang_kz, vw_".$db_stpl_table.".semester, verband, gruppe, gruppe_kurzbz, UPPER(stg_typ || stg_kurzbz) as stg_kurzbz, lehrfach, lehrfach_bez
+$qry = "SELECT DISTINCT vw_".$db_stpl_table.".unr,datum, stunde, ort_kurzbz, studiensemester_kurzbz, vw_".$db_stpl_table.".studiengang_kz, vw_".$db_stpl_table.".semester, verband, gruppe, gruppe_kurzbz, UPPER(stg_typ || stg_kurzbz) as stg_kurzbz, lehrfach, lehrfach_bez, lehrform
FROM lehre.vw_".$db_stpl_table." JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung ON(tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id)
WHERE datum>='".addslashes($beginn)."' AND datum<='".addslashes($ende)."'";
if($stg_kz!='')
@@ -144,7 +160,8 @@ echo '
Ort
Studierende aktuell (Plätze maximal)
Gruppen (Studierende aktuell)
- Lehrfach
+ Lehrveranstaltung
+ Lehrform
';
@@ -156,6 +173,7 @@ $lastort=0;
$anzahl_studenten=0;
$lehrfach='';
$lehrfach_bez='';
+$lehrform='';
$arr=array();
function getAnzahl($studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz, $studiensemester_kurzbz)
@@ -192,7 +210,7 @@ if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
- if($lastdatum==$row->datum && $laststunde==$row->stunde && $lastort==$row->ort_kurzbz && $lehrfach==$row->lehrfach && $lehrfach_bez==$row->lehrfach_bez)
+ if($lastdatum==$row->datum && $laststunde==$row->stunde && $lastort==$row->ort_kurzbz && $lehrfach==$row->lehrfach && $lehrfach_bez==$row->lehrfach_bez && $lehrform==$row->lehrform)
{
//Solange alles gleich ist zusammenzaehlen
$anzahl = getAnzahl($row->studiengang_kz, $row->semester, $row->verband, $row->gruppe, $row->gruppe_kurzbz, $row->studiensemester_kurzbz);
@@ -222,7 +240,13 @@ if($result = $db->db_query($qry))
$style='style="background-color: a00404; color: d3d3d3"';
//echo "$lastdatum $laststunde $lastort $anzahl_studenten (".$ort[$lastort]->max_person.") $gruppen $lehrfach - $lehrfach_bez ";
- $arr[]="$lastdatum $lastort $anzahl_studenten (".$ort[$lastort]->max_person.") $gruppen $lehrfach - $lehrfach_bez ";
+ $arr[]="
+ $lastdatum
+ $lastort
+ $anzahl_studenten (".$ort[$lastort]->max_person.")
+ $gruppen
+ $lehrfach - $lehrfach_bez
+ $lehrform ";
}
$anzahl_studenten=0;
@@ -238,6 +262,7 @@ if($result = $db->db_query($qry))
$lastort = $row->ort_kurzbz;
$lehrfach = $row->lehrfach;
$lehrfach_bez = $row->lehrfach_bez;
+ $lehrform = $row->lehrform;
}
}
else
diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php
index e5975b651..e52235fda 100644
--- a/vilesci/stammdaten/auswertung_fhtw.php
+++ b/vilesci/stammdaten/auswertung_fhtw.php
@@ -490,22 +490,67 @@ if ($rtprueflingEntSperren)
exit();
}
- if (isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id'])
+ if (isset($_POST['person_id']) && is_numeric($_POST['person_id'])
&& isset($_POST['art']))
{
- $qry = "UPDATE testtool.tbl_pruefling SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . "
- WHERE prestudent_id IN
- (SELECT prestudent_id FROM public.tbl_prestudent ps
- JOIN public.tbl_person tp ON tp.person_id = ps.person_id
- WHERE tp.person_id = (SELECT person_id FROM public.tbl_prestudent sps WHERE sps.prestudent_id = " . $db->db_add_param($_POST['prestudent_id']) . "));";
+ $qry = "SELECT pruefling_id
+ FROM testtool.tbl_pruefling
+ WHERE prestudent_id IN (
+ SELECT prestudent_id
+ FROM public.tbl_prestudent
+ WHERE person_id = ". $db->db_add_param($_POST['person_id']) . "
+ )";
if ($result = $db->db_query($qry))
{
- $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet';
- echo json_encode(array(
- 'status' => 'ok',
- 'msg' => $msg));
- exit();
+ if ($db->db_num_rows($result) === 0)
+ {
+ $ps = new prestudent();
+ $ps->getPrestudenten($_POST['person_id']);
+
+ $prestudent = new prestudent($ps->result[0]->prestudent_id);
+ $prestudent->getLastStatus($prestudent->prestudent_id);
+
+ $pruefling = new pruefling();
+ $pruefling->new = true;
+ $pruefling->studiengang_kz = $prestudent->studiengang_kz;
+ $pruefling->registriert = date('Y-m-d H:i:s');
+ $pruefling->semester = $prestudent->ausbildungssemester;
+ $pruefling->prestudent_id = $prestudent->prestudent_id;
+ $pruefling->gesperrt = true;
+
+ $resultSperre = $pruefling->save();
+ }
+ else
+ {
+ $pruefling_ids = array();
+
+ while ($row = $db->db_fetch_object($result))
+ $pruefling_ids[] = $row->pruefling_id;
+
+ $qry = "UPDATE testtool.tbl_pruefling
+ SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . "
+ WHERE pruefling_id IN (" . $db->db_implode4SQL($pruefling_ids) . ")";
+
+ $resultSperre = $db->db_query($qry);
+ }
+
+ if ($resultSperre)
+ {
+ $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet';
+ echo json_encode(array(
+ 'status' => 'ok',
+ 'msg' => $msg));
+ exit();
+ }
+ else
+ {
+ echo json_encode(array(
+ 'status' => 'fehler',
+ 'msg' => 'Fehler beim speichern der Daten'
+ ));
+ exit();
+ }
}
else
{
@@ -1248,6 +1293,7 @@ $semester = isset($_REQUEST['semester']) ? $_REQUEST['semester'] : '';
$prestudent_id = isset($_REQUEST['prestudent_id']) ? $_REQUEST['prestudent_id'] : '';
$orgform_kurzbz = isset($_REQUEST['orgform_kurzbz']) ? $_REQUEST['orgform_kurzbz'] : '';
$format = (isset($_REQUEST['format']) ? $_REQUEST['format'] : '');
+$stgtyp = (isset($_REQUEST['stgtyp']) ? $_REQUEST['stgtyp'] : '');
$rtStudiensemester = '';
if ($reihungstest != '' && (is_array($reihungstest) || is_numeric($reihungstest)))
@@ -1418,7 +1464,12 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
ORDER BY studienplan_id DESC LIMIT 1)
OR tbl_ablauf.studienplan_id IS NULL)";
}
- //$query .= " AND nachname='Al-Mafrachi'";
+
+ if ($stgtyp !== '')
+ {
+ $query .= " AND tbl_studiengang.typ = " .$db->db_add_param($stgtyp);
+ }
+
$query .= " ORDER BY tbl_ablauf.studiengang_kz, tbl_ablauf.semester, reihung";
if (!($result = $db->db_query($query)))
@@ -1638,18 +1689,23 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
//$query .= " AND tbl_ablauf.studienplan_id = 5";
$query .= " AND tbl_studienplan.orgform_kurzbz=" . $db->db_add_param($orgform_kurzbz);
}
+
+ if ($stgtyp !== '')
+ {
+ $query .= " AND tbl_studiengang.typ = " . $db->db_add_param($stgtyp);
+ }
+
//$query .= " AND nachname='Al-Mafrachi'";
$query .= " ORDER BY nachname,
vorname,
- person_id
- ";/*print_r($query);*/
- //echo '', var_dump($query), ' ';
+ person_id";
if (!($result = $db->db_query($query)))
{
die($db->db_last_error());
}
$gebiete_arr = array();
+ $gesperrt_arr = array();
while ($row = $db->db_fetch_object($result))
{
// Hack für BEW-BB, wenn auch BEW-DL-Ergebnisse vorliegen
@@ -1666,7 +1722,10 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id] = new stdClass();
$gebiete_arr[$row->prestudent_id] = array();
}
-
+
+ if (!isset($gesperrt_arr[$row->person_id]))
+ $gesperrt_arr[$row->person_id] = new stdClass();
+
$ergebnis[$row->prestudent_id]->prestudent_id = $row->prestudent_id;
$ergebnis[$row->prestudent_id]->person_id = $row->person_id;
$ergebnis[$row->prestudent_id]->reihungstest_id = $row->reihungstest_id;
@@ -1678,7 +1737,6 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id]->geschlecht = $row->geschlecht;
$ergebnis[$row->prestudent_id]->idnachweis = $row->idnachweis;
$ergebnis[$row->prestudent_id]->registriert = $row->registriert;
- $ergebnis[$row->prestudent_id]->gesperrt = $row->gesperrt;
$ergebnis[$row->prestudent_id]->stg_kurzbz = $row->stg_kurzbz;
$ergebnis[$row->prestudent_id]->stg_bez = $row->stg_bez;
$ergebnis[$row->prestudent_id]->ausbildungssemester = $row->ausbildungssemester;
@@ -1690,6 +1748,13 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id]->teilgenommen = $db->db_parse_bool($row->teilgenommen);
$ergebnis[$row->prestudent_id]->qualifikationskurs = $db->db_parse_bool($row->qualifikationskurs);
$ergebnis[$row->prestudent_id]->letzter_status = $row->letzter_status;
+ $ergebnis[$row->prestudent_id]->gesperrt = $row->gesperrt;
+
+ $gesperrt = $db->db_parse_bool($row->gesperrt);
+ if (!isset($gesperrt_arr[$row->person_id]->gesperrt) || ($gesperrt_arr[$row->person_id]->gesperrt !== true && $gesperrt === true))
+ {
+ $gesperrt_arr[$row->person_id]->gesperrt = $gesperrt;
+ }
if (!isset($ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]))
{
@@ -2440,7 +2505,7 @@ else
});
}
}
- function prueflingEntSperren(prestudent_id, name, art)
+ function prueflingEntSperren(person_id, name, art)
{
if (art === true)
var text = "sperren";
@@ -2450,7 +2515,7 @@ else
if (confirm("Wollen Sie den Studenten "+ name + " wirklich " + text + "?"))
{
data = {
- prestudent_id: prestudent_id,
+ person_id: person_id,
art: art,
rtprueflingEntSperren: true
};
@@ -2464,21 +2529,31 @@ else
{
if(data.status !== "ok")
{
- $("#msgbox").attr("class","alert alert-danger");
- $("#msgbox").show();
- $("#msgbox").html(data["msg"]);
+ if (data.status === "warning")
+ {
+ $("#msgbox").attr("class","alert alert-warning");
+ $("#msgbox").show();
+ $("#msgbox").html(data["msg"]);
+ $("#msgbox").html(data["msg"]).delay(2000).fadeOut();
+ }
+ else
+ {
+ $("#msgbox").attr("class","alert alert-danger");
+ $("#msgbox").show();
+ $("#msgbox").html(data["msg"]);
+ }
}
else
{
if (art === true)
{
- $("#prueflingentsperren_" + prestudent_id).removeClass("hidden");
- $("#prueflingsperren_" + prestudent_id).addClass("hidden");
+ $(".prueflingentsperren_" + person_id).removeClass("hidden");
+ $(".prueflingsperren_" + person_id).addClass("hidden");
}
else if (art === false)
{
- $("#prueflingsperren_" + prestudent_id).removeClass("hidden");
- $("#prueflingentsperren_" + prestudent_id).addClass("hidden");
+ $(".prueflingsperren_" + person_id).removeClass("hidden");
+ $(".prueflingentsperren_" + person_id).addClass("hidden");
}
}
},
@@ -3019,6 +3094,20 @@ else
echo ' von Datum: ';
echo 'bis Datum: ';
+
+ $studiengangtyp = ['b' => 'Bachelor', 'm' => 'Master'];
+ echo ' Studiengang Typ:
+
+ Alle ';
+ foreach ($studiengangtyp as $key => $typ)
+ {
+ $selected = "";
+ if (isset($_REQUEST['stgtyp']) && $_REQUEST['stgtyp'] !== '' && $_REQUEST['stgtyp'] === $key)
+ $selected = 'selected';
+
+ echo ''. $typ . ' ';
+ }
+ echo ' ';
echo '';
echo '';
echo 'PrestudentIn: ';
@@ -3032,6 +3121,7 @@ else
&prestudent_id=' . $prestudent_id . '
&' . http_build_query(array('reihungstest' => $reihungstest)) . '
&orgform_kurzbz=' . $orgform_kurzbz . '
+ &stgtyp=' . $stgtyp . '
&format=xls"
class="btn btn-primary"
role="button">
@@ -3293,10 +3383,10 @@ else
echo "
-
+
-
+
";
diff --git a/vilesci/stammdaten/benutzerberechtigung_autocomplete.php b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
index a888a5b67..f963da2d9 100644
--- a/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
+++ b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
@@ -36,9 +36,9 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'benutzer')
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
-
+
$benutzer = new benutzer();
-
+
if ($benutzer->search(array(
$search
)))
@@ -61,9 +61,9 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'berechtigu
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
-
+
$berechtigung = new berechtigung();
-
+
if ($berechtigung->searchBerechtigungen($search))
{
$result_obj = array();
@@ -98,17 +98,29 @@ if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'oe_kurzbz'
if(is_array($oe->result) && count($oe->result) > 0)
{
- $result_obj = array();
+ $resultArray = array();
foreach($oe->result as $row)
{
if($row->aktiv==true)
{
- $item['oe_kurzbz'] = html_entity_decode($row->oe_kurzbz);
- $item['organisationseinheittyp_kurzbz'] = html_entity_decode($row->organisationseinheittyp_kurzbz);
- $item['bezeichnung'] = html_entity_decode($row->bezeichnung);
- $result_obj[] = $item;
+ $resultArray[html_entity_decode($row->oe_kurzbz)] = array('organisationseinheittyp_kurzbz' => html_entity_decode($row->organisationseinheittyp_kurzbz),'bezeichnung' => html_entity_decode($row->bezeichnung));
}
}
+
+ uasort($resultArray, function($a, $b)
+ {
+ return $a['organisationseinheittyp_kurzbz'].$a['bezeichnung'] <=> $b['organisationseinheittyp_kurzbz'].$b['bezeichnung'];
+ });
+
+ $result_obj = array();
+ foreach($resultArray as $key => $value)
+ {
+ $item['oe_kurzbz'] = $key;
+ $item['organisationseinheittyp_kurzbz'] = $value['organisationseinheittyp_kurzbz'];
+ $item['bezeichnung'] = $value['bezeichnung'];
+ $result_obj[] = $item;
+ }
+
echo json_encode($result_obj);
}
exit();
diff --git a/vilesci/stammdaten/benutzerberechtigung_details.php b/vilesci/stammdaten/benutzerberechtigung_details.php
index 4cee06950..b230d702f 100644
--- a/vilesci/stammdaten/benutzerberechtigung_details.php
+++ b/vilesci/stammdaten/benutzerberechtigung_details.php
@@ -479,12 +479,11 @@ if(isset($_POST['copy']) && $_POST['copy'] != '')
if (!$b = new berechtigung())
die($b->errormsg);
-$b->getRollen();
+$b->getRollen('rolle_kurzbz');
foreach($b->result as $berechtigung)
{
$rolle_arr[$berechtigung->rolle_kurzbz] = $berechtigung->beschreibung;
}
-ksort($rolle_arr, SORT_STRING | SORT_FLAG_CASE);
$b->getBerechtigungen();
foreach($b->result as $berechtigung)
@@ -600,7 +599,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
}
if (count($bn) > 0)
{
- $htmlstr .= "Rechte Details
";
+ $htmlstr .= "Rechte Detailaufschlüsselung
";
}
}
elseif(isset($_REQUEST['funktion_kurzbz']) && $_REQUEST['funktion_kurzbz']!='')
diff --git a/vilesci/stammdaten/benutzerberechtigung_uebersicht.php b/vilesci/stammdaten/benutzerberechtigung_uebersicht.php
index ecc9c6e09..0be268b70 100644
--- a/vilesci/stammdaten/benutzerberechtigung_uebersicht.php
+++ b/vilesci/stammdaten/benutzerberechtigung_uebersicht.php
@@ -182,7 +182,7 @@ $(document).ready(function()
-Benutzerberechtigungen Übersicht ';
+Berechtigungen Übersicht ';
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -229,7 +229,7 @@ $htmlstr='