mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 08:22:17 +00:00
Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fd372375d0 | |||
| 45b9bae0b0 | |||
| 77ccfa46de | |||
| a52fcf1570 | |||
| 5d241b050a | |||
| 660f195c57 | |||
| 9b0e0fe135 | |||
| 867afa4411 | |||
| 94f0d43c4a | |||
| 80faf92dc2 | |||
| c3e978b56e | |||
| 7e83df51a8 | |||
| d677cee1f9 | |||
| 8786b60c4c | |||
| 9b9351fe9b | |||
| 02701dc0c5 | |||
| e9a373afb8 | |||
| 1222d33e6e | |||
| 2db7f812ab | |||
| 8b89d6f1cb | |||
| 310bd08648 | |||
| bc4514b2a0 | |||
| 3c08bc12cd | |||
| 6e56de1790 | |||
| 2417d1549e | |||
| a72dcdf8b0 | |||
| 419341f496 | |||
| 4bceddcc82 | |||
| 7030d5b822 | |||
| 6dfa7089e7 | |||
| 47917e42c3 | |||
| 3f607ec241 | |||
| 5abc48f568 | |||
| 1888c51a48 | |||
| ad93a0a84c | |||
| 6b6ec311c7 | |||
| 8218c915d5 | |||
| 4ee239dd62 | |||
| bcc712e900 | |||
| 8788cf17e2 | |||
| b4b2d8da49 | |||
| ba806c13fb | |||
| 0113c9d97a | |||
| 92db886a9f | |||
| a3e22da633 | |||
| fb2f8d5c53 | |||
| 19fdefc398 | |||
| 30c4245861 | |||
| b079d22e8d | |||
| c0e2cec556 |
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
// apps for which issues should be displayed
|
||||
$config['issues_list_apps'] = array('core', 'dvuh');
|
||||
|
||||
// functions which enable users to see issues
|
||||
$config['issues_list_functions'] = array('ass');
|
||||
|
||||
// functions which enable users to see issues
|
||||
$config['issues_list_status'] = array('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent');
|
||||
@@ -4,4 +4,6 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
// use vuejs dev version
|
||||
$config['use_vuejs_dev_version'] = false;
|
||||
// use bundled javascript
|
||||
$config['use_bundled_javascript'] = false;
|
||||
$config['use_bundled_javascript'] = false;
|
||||
// systemerror_mailto use in FHC-Alert Plugin - if empty Link will not be rendered
|
||||
$config['systemerror_mailto'] = '';
|
||||
@@ -85,7 +85,10 @@ class Kontakt extends FHCAPI_Controller
|
||||
|| $this->router->method == 'addNewBankverbindung'
|
||||
) {
|
||||
$person_id = current(array_slice($this->uri->rsegments, 2));
|
||||
|
||||
|
||||
if (is_null($person_id) || !ctype_digit((string)$person_id))
|
||||
$this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$this->checkPermissionsForPerson($person_id, $permsMa, $permsStud);
|
||||
} elseif ($this->router->method == 'loadAddress'
|
||||
|| $this->router->method == 'loadContact'
|
||||
@@ -119,6 +122,9 @@ class Kontakt extends FHCAPI_Controller
|
||||
$model = 'person/Bankverbindung_model';
|
||||
}
|
||||
|
||||
if (!isset($id) || !ctype_digit((string)$id))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$this->load->model($model, 'TempModel');
|
||||
$result = $this->TempModel->load($id);
|
||||
$data = $this->getDataOrTerminateWithError($result);
|
||||
@@ -387,8 +393,11 @@ class Kontakt extends FHCAPI_Controller
|
||||
$this->terminateWithSuccess(getData($result) ?: []);
|
||||
}
|
||||
|
||||
public function getFirmen($searchString)
|
||||
public function getFirmen($searchString = null)
|
||||
{
|
||||
if (is_null($searchString))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$this->load->model('ressource/firma_model', 'FirmaModel');
|
||||
|
||||
$result = $this->FirmaModel->searchFirmen($searchString);
|
||||
@@ -398,8 +407,11 @@ class Kontakt extends FHCAPI_Controller
|
||||
$this->terminateWithSuccess($result ?: []);
|
||||
}
|
||||
|
||||
public function getStandorte($searchString)
|
||||
public function getStandorte($searchString = null)
|
||||
{
|
||||
if (is_null($searchString))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$this->load->model('organisation/standort_model', 'StandortModel');
|
||||
|
||||
$result = $this->StandortModel->searchStandorte($searchString);
|
||||
@@ -409,8 +421,11 @@ class Kontakt extends FHCAPI_Controller
|
||||
$this->terminateWithSuccess($data);
|
||||
}
|
||||
|
||||
public function getStandorteByFirma($firma_id)
|
||||
public function getStandorteByFirma($firma_id = null)
|
||||
{
|
||||
if (is_null($firma_id) || !ctype_digit((string)$firma_id))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$this->load->model('organisation/standort_model', 'StandortModel');
|
||||
|
||||
$result = $this->StandortModel->getStandorteByFirma($firma_id);
|
||||
@@ -652,6 +667,9 @@ class Kontakt extends FHCAPI_Controller
|
||||
$bic = $this->input->post('bic');
|
||||
$blz = $this->input->post('blz');
|
||||
$kontonr = $this->input->post('kontonr');
|
||||
$iban = $this->input->post('iban');
|
||||
$typ = $this->input->post('typ');
|
||||
$verrechnung = $this->input->post('verrechnung');
|
||||
|
||||
$result = $this->BankverbindungModel->insert(
|
||||
[
|
||||
@@ -659,13 +677,13 @@ class Kontakt extends FHCAPI_Controller
|
||||
'name' => $name,
|
||||
'anschrift' => $anschrift,
|
||||
'bic' => $bic,
|
||||
'iban' => $_POST['iban'],
|
||||
'iban' => $iban,
|
||||
'blz' => $blz,
|
||||
'kontonr' => $kontonr,
|
||||
'insertvon' => 'uid',
|
||||
'insertamum' => date('c'),
|
||||
'typ' => $_POST['typ'],
|
||||
'verrechnung' => $_POST['verrechnung'],
|
||||
'typ' => $typ,
|
||||
'verrechnung' => $verrechnung,
|
||||
'ext_id' => $ext_id,
|
||||
'oe_kurzbz' => $oe_kurzbz,
|
||||
'orgform_kurzbz' => $orgform_kurzbz
|
||||
|
||||
@@ -48,7 +48,9 @@ class IssueResolver extends IssueResolver_Controller
|
||||
'CORE_PERSON_0001' => 'CORE_PERSON_0001',
|
||||
'CORE_PERSON_0002' => 'CORE_PERSON_0002',
|
||||
'CORE_PERSON_0003' => 'CORE_PERSON_0003',
|
||||
'CORE_PERSON_0004' => 'CORE_PERSON_0004'
|
||||
'CORE_PERSON_0004' => 'CORE_PERSON_0004',
|
||||
'CORE_PERSON_0005' => 'CORE_PERSON_0005',
|
||||
'CORE_PERSON_0006' => 'CORE_PERSON_0006'
|
||||
);
|
||||
|
||||
// fehler which are resolved by the job the same way as they are produced
|
||||
|
||||
@@ -2375,16 +2375,50 @@ class InfoCenter extends Auth_Controller
|
||||
if ($statusgrund === 'null' || $studiengang === 'null' || $abgeschickt === 'null' || empty($personen))
|
||||
$this->terminateWithJsonError("Bitte füllen Sie alle Felder aus");
|
||||
|
||||
foreach($personen as $person)
|
||||
if ($studiengang === 'all' && $abgeschickt === 'all')
|
||||
{
|
||||
$prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt);
|
||||
foreach($personen as $person)
|
||||
{
|
||||
$prestudenten = $this->PrestudentModel->getByPersonWithoutLehrgang($person, $studienSemester);
|
||||
|
||||
if (!hasData($prestudent))
|
||||
continue;
|
||||
if (!hasData($prestudenten))
|
||||
continue;
|
||||
|
||||
$prestudentData = getData($prestudent);
|
||||
$prestudentenData = getData($prestudenten);
|
||||
|
||||
foreach ($prestudentenData as $prestudent)
|
||||
{
|
||||
$this->saveAbsage($prestudent->prestudent_id, $statusgrund);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
|
||||
|
||||
$this->StudienplanModel->addSelect('1');
|
||||
$this->StudienplanModel->addJoin('lehre.tbl_studienordnung so', 'studienordnung_id');
|
||||
$escaped = $this->StudienplanModel->db->escape(strtoupper($studiengang));
|
||||
$this->StudienplanModel->db->where("UPPER(so.studiengangkurzbzlang || ':' || tbl_studienplan.orgform_kurzbz) = $escaped");
|
||||
$this->StudienplanModel->addLimit(1);
|
||||
$studiengangResult = $this->StudienplanModel->load();
|
||||
|
||||
if (hasData($studiengangResult))
|
||||
{
|
||||
foreach($personen as $person)
|
||||
{
|
||||
$prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt, $abgeschickt === 'all');
|
||||
|
||||
if (!hasData($prestudent))
|
||||
continue;
|
||||
|
||||
$prestudentData = getData($prestudent);
|
||||
$this->saveAbsage($prestudentData[0]->prestudent_id, $statusgrund);
|
||||
}
|
||||
}
|
||||
else
|
||||
$this->terminateWithJsonError("Falschen Studiengang übergeben!");
|
||||
|
||||
$this->saveAbsage($prestudentData[0]->prestudent_id, $statusgrund);
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess("Success");
|
||||
|
||||
@@ -14,7 +14,8 @@ class Rueckstellung extends Auth_Controller
|
||||
'get' => array('infocenter:r', 'lehre/zgvpruefung:r'),
|
||||
'set' => array('infocenter:r', 'lehre/zgvpruefung:r'),
|
||||
'delete' => array('infocenter:r', 'lehre/zgvpruefung:r'),
|
||||
'getStatus' => array('infocenter:rw', 'lehre/zgvpruefung:rw')
|
||||
'getStatus' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
|
||||
'setForPersonen' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
|
||||
)
|
||||
);
|
||||
|
||||
@@ -79,7 +80,34 @@ class Rueckstellung extends Auth_Controller
|
||||
|
||||
$this->outputJson($result);
|
||||
}
|
||||
|
||||
|
||||
public function setForPersonen()
|
||||
{
|
||||
$personen = $this->input->post('personen');
|
||||
$datum_bis = $this->input->post('datum_bis');
|
||||
$status_kurzbz = $this->input->post('status_kurzbz');
|
||||
|
||||
foreach ($personen as $person)
|
||||
{
|
||||
$rueckstellung = $this->_ci->RueckstellungModel->loadWhere(array('person_id' => $person));
|
||||
if (hasData($rueckstellung))
|
||||
continue;
|
||||
|
||||
$result = $this->_ci->RueckstellungModel->insert(
|
||||
array('person_id' => $person,
|
||||
'status_kurzbz' => $status_kurzbz,
|
||||
'datum_bis' => date_format(date_create($datum_bis), 'Y-m-d'),
|
||||
'insertvon' => $this->_uid
|
||||
)
|
||||
);
|
||||
|
||||
if (isError($result))
|
||||
$this->terminateWithJsonError(getError($result));
|
||||
$this->_log($person, $status_kurzbz);
|
||||
}
|
||||
$this->outputJsonSuccess("Erfolgreich gespeichert!");
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
$person_id = $this->input->post('person_id');
|
||||
|
||||
@@ -6,7 +6,6 @@ class Issues extends Auth_Controller
|
||||
{
|
||||
private $_uid;
|
||||
|
||||
const FUNKTION_KURZBZ = 'ass'; // user having this funktion can see issues for oes assigned with this funktion
|
||||
const BERECHTIGUNG_KURZBZ = 'system/issues_verwalten'; // user having this permission can see issues for oes assigned with this permission
|
||||
|
||||
public function __construct()
|
||||
@@ -28,6 +27,9 @@ class Issues extends Auth_Controller
|
||||
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
|
||||
$this->load->model('system/Sprache_model', 'SpracheModel');
|
||||
|
||||
// load config
|
||||
$this->load->config('issueList');
|
||||
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'global',
|
||||
@@ -47,10 +49,12 @@ class Issues extends Auth_Controller
|
||||
{
|
||||
$oes_for_issues = $this->_getOesForIssues();
|
||||
$language_index = $this->_getLanguageIndex();
|
||||
$apps = $this->config->item('issues_list_apps');
|
||||
$status = $this->config->item('issues_list_status');
|
||||
|
||||
$this->load->view(
|
||||
'system/issues/issues',
|
||||
array_merge($oes_for_issues, array('language_index' => $language_index))
|
||||
array_merge($oes_for_issues, array('language_index' => $language_index, 'apps' => $apps, 'status' => $status))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -121,6 +125,8 @@ class Issues extends Auth_Controller
|
||||
$oe_kurzbz_for_funktion = array();
|
||||
$benutzerfunktionRes = $this->BenutzerfunktionModel->getBenutzerFunktionByUid($this->_uid, null, date('Y-m-d'), date('Y-m-d'));
|
||||
|
||||
$functions = $this->config->item('issues_list_functions');
|
||||
|
||||
if (isError($benutzerfunktionRes))
|
||||
show_error(getError($benutzerfunktionRes));
|
||||
|
||||
@@ -130,8 +136,8 @@ class Issues extends Auth_Controller
|
||||
{
|
||||
$all_funktionen_oe_kurzbz[$benutzerfunktion->oe_kurzbz][] = $benutzerfunktion->funktion_kurzbz;
|
||||
|
||||
// separate oes for the additional funktion which enables displaying issues
|
||||
if ($benutzerfunktion->funktion_kurzbz == self::FUNKTION_KURZBZ)
|
||||
// separate oes for the additional functions which enables displaying issues
|
||||
if (in_array($benutzerfunktion->funktion_kurzbz, $functions))
|
||||
{
|
||||
$oe_kurzbz_for_funktion[] = $benutzerfunktion->oe_kurzbz;
|
||||
|
||||
|
||||
@@ -95,6 +95,9 @@ function generateJSDataStorageObject($indexPage, $calledPath, $calledMethod)
|
||||
}, $server_language);
|
||||
$user_language = getUserLanguage();
|
||||
|
||||
$ci->load->config('javascript');
|
||||
$systemerror_mailto = $ci->config->item('systemerror_mailto');
|
||||
|
||||
$FHC_JS_DATA_STORAGE_OBJECT = array(
|
||||
'app_root' => APP_ROOT,
|
||||
'ci_router' => $indexPage,
|
||||
@@ -103,6 +106,7 @@ function generateJSDataStorageObject($indexPage, $calledPath, $calledMethod)
|
||||
'server_languages' => $server_language,
|
||||
'user_language' => $user_language,
|
||||
'timezone' => date_default_timezone_get(),
|
||||
'systemerror_mailto' => $systemerror_mailto,
|
||||
);
|
||||
|
||||
$toPrint = "\n";
|
||||
|
||||
@@ -77,7 +77,9 @@ class AntragLib
|
||||
'studiensemester_kurzbz'=>$prestudentstatus->studiensemester_kurzbz,
|
||||
'ausbildungssemester'=>$prestudentstatus->ausbildungssemester
|
||||
], [
|
||||
'statusgrund_id' => null
|
||||
'statusgrund_id' => null,
|
||||
'updateamum' => date('c'),
|
||||
'updatevon' => $insertvon
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -335,7 +337,10 @@ class AntragLib
|
||||
'status_kurzbz'=>$prestudentstatus->status_kurzbz,
|
||||
'studiensemester_kurzbz'=>$prestudentstatus->studiensemester_kurzbz,
|
||||
'ausbildungssemester'=>$prestudentstatus->ausbildungssemester
|
||||
], []);
|
||||
], [
|
||||
'updateamum' => $insertam,
|
||||
'updatevon' => $insertvon
|
||||
]);
|
||||
if (isError($result))
|
||||
{
|
||||
$errors[] = getError($result);
|
||||
|
||||
@@ -13,7 +13,7 @@ class PlausicheckResolverLib
|
||||
private $_ci; // ci instance
|
||||
private $_extensionName; // name of extension
|
||||
private $_codeLibMappings = []; // mappings for issues which explicitly defined resolver
|
||||
private $_codeProducerLibMappings = []; // mappings for issues which are resolved as produced
|
||||
private $_codeProducerLibMappings = []; // mappings for issues which are resolved with the same check as they are produced
|
||||
|
||||
public function __construct($params = null)
|
||||
{
|
||||
@@ -99,10 +99,11 @@ class PlausicheckResolverLib
|
||||
$issueResolved = getData($issueResolvedRes) === true;
|
||||
}
|
||||
}
|
||||
elseif (isset($this->_codeProducerLibMappings[$issue->fehlercode]))
|
||||
elseif (isset($this->_codeProducerLibMappings[$issue->fehlercode])) // check if it is an issue without explicit resolver, "self-resolving"
|
||||
{
|
||||
$libName = $this->_codeProducerLibMappings[$issue->fehlercode];
|
||||
|
||||
// execute same check as used for issue production
|
||||
$issueResolvedRes = $this->_ci->plausicheckproducerlib->producePlausicheckIssue(
|
||||
$libName,
|
||||
$issue->fehler_kurzbz,
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Geburtsnation missing
|
||||
*/
|
||||
class CORE_PERSON_0005 implements IIssueResolvedChecker
|
||||
{
|
||||
public function checkIfIssueIsResolved($params)
|
||||
{
|
||||
if (!isset($params['issue_person_id']) || !is_numeric($params['issue_person_id']))
|
||||
return error('Person Id missing, issue_id: '.$params['issue_id']);
|
||||
|
||||
$this->_ci =& get_instance(); // get code igniter instance
|
||||
|
||||
$this->_ci->load->model('person/Person_model', 'PersonModel');
|
||||
|
||||
// load geburtsnation for the given person
|
||||
$this->_ci->PersonModel->addSelect('geburtsnation');
|
||||
$personRes = $this->_ci->PersonModel->load($params['issue_person_id']);
|
||||
|
||||
if (isError($personRes)) return $personRes;
|
||||
|
||||
if (hasData($personRes))
|
||||
{
|
||||
// get person data
|
||||
$personData = getData($personRes)[0];
|
||||
|
||||
// if geburtsnation present, issue is resolved
|
||||
return success(!isEmptyString($personData->geburtsnation));
|
||||
}
|
||||
else
|
||||
return success(false); // if no person found, not resolved
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Geburtsnation missing
|
||||
*/
|
||||
class CORE_PERSON_0006 implements IIssueResolvedChecker
|
||||
{
|
||||
public function checkIfIssueIsResolved($params)
|
||||
{
|
||||
if (!isset($params['issue_person_id']) || !is_numeric($params['issue_person_id']))
|
||||
return error('Person Id missing, issue_id: '.$params['issue_id']);
|
||||
|
||||
$this->_ci =& get_instance(); // get code igniter instance
|
||||
|
||||
$this->_ci->load->model('codex/Uhstat1daten_model', 'UhstatModel');
|
||||
|
||||
$personRes = $this->_ci->UhstatModel->getUHSTAT1PersonData([$params['issue_person_id']]);
|
||||
|
||||
if (isError($personRes)) return $personRes;
|
||||
|
||||
if (hasData($personRes))
|
||||
{
|
||||
// get person data
|
||||
$personData = getData($personRes)[0];
|
||||
|
||||
// if person identification data present, issue is resolved
|
||||
return success(
|
||||
!isEmptyString($personData->ersatzkennzeichen)
|
||||
|| (!isEmptyString($personData->vbpkAs) && !isEmptyString($personData->vbpkBf))
|
||||
);
|
||||
}
|
||||
else
|
||||
return success(false); // if no person found, not resolved
|
||||
}
|
||||
}
|
||||
@@ -11,4 +11,44 @@ class Uhstat1daten_model extends DB_Model
|
||||
$this->dbTable = 'bis.tbl_uhstat1daten';
|
||||
$this->pk = 'uhstat1daten_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets person data needed for sending as UHSTAT1 data.
|
||||
* @param array $person_id_arr
|
||||
* @param string $studiensemester
|
||||
* @param array $status_kurzbz
|
||||
* @return object success with prestudents or error
|
||||
*/
|
||||
public function getUHSTAT1PersonData($person_id_arr)
|
||||
{
|
||||
if (!isset($person_id_arr) || isEmptyArray($person_id_arr)) return success([]);
|
||||
|
||||
$params = array($person_id_arr);
|
||||
|
||||
$prstQry = "SELECT
|
||||
DISTINCT ON (pers.person_id)
|
||||
pers.person_id, uhstat_daten.uhstat1daten_id, pers.svnr, pers.ersatzkennzeichen, pers.geburtsnation,
|
||||
uhstat_daten.mutter_geburtsstaat, uhstat_daten.mutter_bildungsstaat, uhstat_daten.mutter_geburtsjahr,
|
||||
uhstat_daten.mutter_bildungmax, uhstat_daten.vater_geburtsstaat, uhstat_daten.vater_bildungsstaat,
|
||||
uhstat_daten.vater_geburtsjahr, uhstat_daten.vater_bildungmax,
|
||||
kzVbpkAs.inhalt AS \"vbpkAs\", kzVbpkBf.inhalt AS \"vbpkBf\"
|
||||
FROM
|
||||
public.tbl_person pers
|
||||
JOIN public.tbl_prestudent ps USING (person_id)
|
||||
JOIN public.tbl_studiengang stg USING (studiengang_kz)
|
||||
JOIN bis.tbl_uhstat1daten uhstat_daten USING (person_id)
|
||||
LEFT JOIN public.tbl_kennzeichen kzVbpkAs ON kzVbpkAs.kennzeichentyp_kurzbz = 'vbpkAs'AND kzVbpkAs.person_id = pers.person_id AND kzVbpkAs.aktiv
|
||||
LEFT JOIN public.tbl_kennzeichen kzVbpkBf ON kzVbpkBf.kennzeichentyp_kurzbz = 'vbpkBf'AND kzVbpkBf.person_id = pers.person_id AND kzVbpkBf.aktiv
|
||||
WHERE
|
||||
ps.bismelden
|
||||
AND stg.melderelevant
|
||||
AND pers.person_id IN ?
|
||||
ORDER BY
|
||||
pers.person_id";
|
||||
|
||||
return $this->execReadOnlyQuery(
|
||||
$prstQry,
|
||||
$params
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -677,7 +677,7 @@ class Prestudent_model extends DB_Model
|
||||
));
|
||||
}
|
||||
|
||||
public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt)
|
||||
public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt, $ignoreAbgeschickt = false)
|
||||
{
|
||||
$query = "SELECT ps.prestudent_id
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
@@ -687,22 +687,42 @@ class Prestudent_model extends DB_Model
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE ps.person_id = ?
|
||||
AND UPPER(so.studiengangkurzbzlang || ':' || sp.orgform_kurzbz) = ?
|
||||
AND pss.studiensemester_kurzbz = ?
|
||||
AND";
|
||||
AND pss.studiensemester_kurzbz = ?";
|
||||
|
||||
if ($abgeschickt === 'true')
|
||||
$query .= " EXISTS";
|
||||
else
|
||||
$query .= " NOT EXISTS";
|
||||
if (!$ignoreAbgeschickt)
|
||||
{
|
||||
$query .= "AND";
|
||||
|
||||
$query .= " (SELECT 1 FROM public.tbl_prestudentstatus spss
|
||||
if ($abgeschickt === 'true')
|
||||
$query .= " EXISTS";
|
||||
else
|
||||
$query .= " NOT EXISTS";
|
||||
|
||||
$query .= " (SELECT 1 FROM public.tbl_prestudentstatus spss
|
||||
JOIN public.tbl_prestudent sps USING(prestudent_id)
|
||||
WHERE sps.prestudent_id = ps.prestudent_id
|
||||
AND spss.bewerbung_abgeschicktamum IS NOT NULL)";
|
||||
}
|
||||
|
||||
return $this->execQuery($query, array($person, $studiengang, $studienSemester));
|
||||
}
|
||||
|
||||
public function getByPersonWithoutLehrgang($person, $studienSemester)
|
||||
{
|
||||
$query = "SELECT DISTINCT(ps.prestudent_id)
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE ps.person_id = ?
|
||||
AND (sg.typ = 'b' OR sg.typ = 'm')
|
||||
AND pss.studiensemester_kurzbz = ?";
|
||||
|
||||
return $this->execQuery($query, array($person, $studienSemester));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets förderrelevant flag for a prestudent, from prestudent, or, if not set on prestudent level, from studiengang
|
||||
* @param int $prestudent_id
|
||||
|
||||
@@ -14,12 +14,13 @@
|
||||
'navigationwidget' => true,
|
||||
'dialoglib' => true,
|
||||
'phrases' => array(
|
||||
'infocenter' => array('statusAuswahl'),
|
||||
'person' => array('vorname', 'nachname'),
|
||||
'global' => array('mailAnXversandt'),
|
||||
'ui' => array('bitteEintragWaehlen')
|
||||
),
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/rueckstellung.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
);
|
||||
|
||||
$this->load->view('templates/FHC-Header', $includesArray);
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
'ui' => array('bitteEintragWaehlen')
|
||||
),
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/rueckstellung.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
'ui' => array('bitteEintragWaehlen')
|
||||
),
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/rueckstellung.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
'ui' => array('bitteEintragWaehlen')
|
||||
),
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/rueckstellung.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
'ui' => array('bitteEintragWaehlen')
|
||||
),
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/rueckstellung.js', 'public/js/infocenter/infocenterPersonDataset.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
<?php
|
||||
|
||||
$PERSON_ID = getAuthPersonId();
|
||||
|
||||
// all oe kurzbz for which logged user has a funktion
|
||||
$ALL_FUNKTIONEN_OE_KURZBZ = "('" . implode("','", array_keys($all_funktionen_oe_kurzbz)) . "')";
|
||||
$ALL_FUNKTIONEN_OE_KURZBZ = isEmptyArray($all_funktionen_oe_kurzbz) ? "(NULL)"
|
||||
: "(" . implode(",", array_map(function($string) { return $this->db->escape($string); }, array_keys($all_funktionen_oe_kurzbz))) . ")";
|
||||
|
||||
// all oes for which logged user has issues permissions, including permissions for "special" issue funktion
|
||||
$ALL_OE_KURZBZ_BERECHTIGT = "('" . implode("','", $all_oe_kurzbz_berechtigt) . "')";
|
||||
$RELEVANT_PRESTUDENT_STATUS = "('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')";
|
||||
$ALL_OE_KURZBZ_BERECHTIGT = isEmptyArray($all_oe_kurzbz_berechtigt) ? "(NULL)"
|
||||
: "(" . implode(",", array_map(function($string) { return $this->db->escape($string); }, $all_oe_kurzbz_berechtigt)) . ")";
|
||||
|
||||
// app apps for which issues should be displayed
|
||||
$APPS = isEmptyArray($apps) ? "" : "(" . implode(",", array_map(function($string) { return $this->db->escape($string); }, $apps)) . ")";
|
||||
|
||||
// all prestudent status for which issues should be displayed
|
||||
$RELEVANT_PRESTUDENT_STATUS = isEmptyArray($status) ? ""
|
||||
: "(" . implode(",", array_map(function($string) { return $this->db->escape($string); }, $status)) . ")";
|
||||
|
||||
// get issues for the oes of the logged user or for the persons (students, oe-zuordnung) of the oes
|
||||
$query = "WITH zustaendigkeiten AS (
|
||||
@@ -37,8 +47,8 @@ $query .= "
|
||||
SELECT
|
||||
issue_id, fehlercode AS \"Fehlercode\", fehler_kurzbz AS \"Fehler Kurzbezeichnung\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\",
|
||||
inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\",
|
||||
ftyp.bezeichnung_mehrsprachig[".$language_index."] AS \"Fehlertyp\",
|
||||
stat.bezeichnung_mehrsprachig[".$language_index."] AS \"Fehlerstatus\",
|
||||
ftyp.bezeichnung_mehrsprachig[".$this->db->escape($language_index)."] AS \"Fehlertyp\",
|
||||
stat.bezeichnung_mehrsprachig[".$this->db->escape($language_index)."] AS \"Fehlerstatus\",
|
||||
verarbeitetvon AS \"Verarbeitet von\",verarbeitetamum AS \"Verarbeitet am\", fr.app AS \"Applikation\",
|
||||
fr.fehlertyp_kurzbz AS \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\",
|
||||
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\",
|
||||
@@ -118,44 +128,48 @@ $query .= "
|
||||
JOIN system.tbl_issue_status stat USING (status_kurzbz)
|
||||
LEFT JOIN public.tbl_person pers ON iss.person_id = pers.person_id
|
||||
WHERE
|
||||
fr.app IN ('core', 'dvuh')
|
||||
AND (
|
||||
(
|
||||
EXISTS ( /* if oe or person is specified in fehler_zustaendigkeiten */
|
||||
SELECT 1 FROM zustaendigkeiten
|
||||
WHERE fehlercode = iss.fehlercode
|
||||
AND zustaendig = TRUE)";
|
||||
|
||||
// show issue if it is assigend to oe of logged in user or to student of oe of logged in user
|
||||
if (!isEmptyArray($all_oe_kurzbz_berechtigt))
|
||||
{
|
||||
$query .= " OR iss.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT /* if issue is for oe */";
|
||||
$query .= " OR iss.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT /* if issue is for oe */";
|
||||
|
||||
$query .= " OR (iss.oe_kurzbz IS NULL AND EXISTS ( /* if person_id of issue is a student of studiengang oe */
|
||||
SELECT 1 FROM public.tbl_prestudent ps
|
||||
JOIN public.tbl_prestudentstatus pss USING (prestudent_id)
|
||||
JOIN public.tbl_studiengang stg USING (studiengang_kz)
|
||||
WHERE person_id = iss.person_id
|
||||
AND stg.oe_kurzbz IN ".$ALL_OE_KURZBZ_BERECHTIGT;
|
||||
|
||||
if (!isEmptyString($RELEVANT_PRESTUDENT_STATUS)) $query .= " AND pss.status_kurzbz IN ".$RELEVANT_PRESTUDENT_STATUS;
|
||||
|
||||
$query .= " AND NOT EXISTS (SELECT 1 /* irrelevant if already finished studies and studied a while ago */
|
||||
FROM public.tbl_prestudentstatus ps_finished
|
||||
JOIN public.tbl_studiensemester sem_finished USING (studiensemester_kurzbz)
|
||||
WHERE prestudent_id = ps.prestudent_id
|
||||
AND status_kurzbz IN ('Absolvent','Abbrecher','Abgewiesener')
|
||||
AND datum::date + interval '2 months' < NOW()
|
||||
AND EXISTS (SELECT 1 FROM public.tbl_prestudent /* if more recent prestudent exists, still display the issue */
|
||||
JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
|
||||
WHERE person_id = ps.person_id
|
||||
AND prestudent_id <> ps_finished.prestudent_id
|
||||
AND tbl_studiensemester.start::date > sem_finished.start::date";
|
||||
|
||||
if (!isEmptyString($RELEVANT_PRESTUDENT_STATUS)) $query .= " AND tbl_prestudentstatus.status_kurzbz IN ".$RELEVANT_PRESTUDENT_STATUS;
|
||||
|
||||
$query .= ")
|
||||
)
|
||||
)
|
||||
)";
|
||||
|
||||
$query .= " OR (iss.oe_kurzbz IS NULL AND EXISTS ( /* if person_id of issue is a student of studiengang oe */
|
||||
SELECT 1 FROM public.tbl_prestudent ps
|
||||
JOIN public.tbl_prestudentstatus pss USING (prestudent_id)
|
||||
JOIN public.tbl_studiengang stg USING (studiengang_kz)
|
||||
WHERE person_id = iss.person_id
|
||||
AND stg.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT
|
||||
AND pss.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
|
||||
AND NOT EXISTS (SELECT 1 /* irrelevant if already finished studies and studied a while ago */
|
||||
FROM public.tbl_prestudentstatus ps_finished
|
||||
JOIN public.tbl_studiensemester sem_finished USING (studiensemester_kurzbz)
|
||||
WHERE prestudent_id = ps.prestudent_id
|
||||
AND status_kurzbz IN ('Absolvent','Abbrecher','Abgewiesener')
|
||||
AND datum::date + interval '2 months' < NOW()
|
||||
AND EXISTS (SELECT 1 FROM public.tbl_prestudent /* if more recent prestudent exists, still display the issue */
|
||||
JOIN public.tbl_prestudentstatus USING (prestudent_id)
|
||||
JOIN public.tbl_studiensemester USING (studiensemester_kurzbz)
|
||||
WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS
|
||||
AND person_id = ps.person_id
|
||||
AND prestudent_id <> ps_finished.prestudent_id
|
||||
AND tbl_studiensemester.start::date > sem_finished.start::date)
|
||||
)
|
||||
)
|
||||
)";
|
||||
}
|
||||
$query .= ") ";
|
||||
|
||||
if (!isEmptyString($APPS)) $query .= " AND fr.app IN ".$APPS;
|
||||
|
||||
$query .= " ORDER BY
|
||||
CASE
|
||||
WHEN fehlertyp_kurzbz = '".IssuesLib::ERRORTYPE_CODE."' THEN 0
|
||||
|
||||
@@ -634,6 +634,7 @@ if(!$error)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE
|
||||
mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND
|
||||
lower(mitarbeiter_uid) NOT LIKE '_dummy%' AND
|
||||
studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND
|
||||
bismelden";
|
||||
|
||||
|
||||
@@ -575,5 +575,47 @@ class ampel extends basis_db
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Zählt die Anzahl der UIDs, welche mit einer Ampel adressiert werden
|
||||
* @param $ampel_id integer ID der Ampel, die geladen werden soll
|
||||
*/
|
||||
public function getAnzahlUserAmpel($ampel_id)
|
||||
{
|
||||
// Ampel laden
|
||||
$qry_ampel = "SELECT benutzer_select FROM public.tbl_ampel WHERE ampel_id=".$this->db_add_param($ampel_id, FHC_INTEGER);
|
||||
|
||||
if($result_ampel = $this->db_query($qry_ampel))
|
||||
{
|
||||
// Anzahl User laden
|
||||
if ($row_ampel = $this->db_fetch_object($result_ampel))
|
||||
{
|
||||
$qry_user = "SELECT count(*) AS anzahl FROM (SELECT uid FROM public.tbl_benutzer WHERE uid IN (".$row_ampel->benutzer_select."))subquery";
|
||||
}
|
||||
|
||||
if ($result = $this->db_query($qry_user))
|
||||
{
|
||||
if ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
return $row->anzahl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Anzahl UIDs konnte nicht geladen werden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Anzahl UIDs konnte nicht geladen werden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Ampel';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -200,7 +200,7 @@ class LehreListHelper
|
||||
//Studierende der LV laden und in ein Array schreiben
|
||||
|
||||
$qry = 'SELECT
|
||||
distinct on(nachname, vorname, person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid,
|
||||
distinct on(nachname, vorname, public.tbl_benutzer.person_id) vorname, nachname, wahlname, matrikelnr, public.tbl_student.student_uid,
|
||||
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
|
||||
(SELECT status_kurzbz FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id=tbl_student.prestudent_id
|
||||
@@ -209,7 +209,8 @@ class LehreListHelper
|
||||
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_person.geschlecht, tbl_studiengang.kurzbzlang,
|
||||
tbl_mobilitaet.mobilitaetstyp_kurzbz, tbl_zeugnisnote.note,
|
||||
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree,
|
||||
(tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout
|
||||
(tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout,
|
||||
public.tbl_prestudent.gsstudientyp_kurzbz as ddtype
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung
|
||||
JOIN public.tbl_benutzer USING(uid)
|
||||
@@ -223,6 +224,7 @@ class LehreListHelper
|
||||
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
|
||||
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
|
||||
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
|
||||
LEFT JOIN public.tbl_prestudent USING(prestudent_id)
|
||||
WHERE
|
||||
vw_student_lehrveranstaltung.lehrveranstaltung_id='.$this->db->db_add_param($this->lvid, FHC_INTEGER).' AND
|
||||
vw_student_lehrveranstaltung.studiensemester_kurzbz='.$this->db->db_add_param($this->studiensemester);
|
||||
@@ -231,7 +233,7 @@ class LehreListHelper
|
||||
if($this->lehreinheit!='')
|
||||
$qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$this->db->db_add_param($this->lehreinheit, FHC_INTEGER);
|
||||
|
||||
$qry.=' ORDER BY nachname, vorname, person_id, daysout DESC, doubledegree DESC';
|
||||
$qry.=' ORDER BY nachname, vorname, public.tbl_benutzer.person_id, daysout DESC, doubledegree DESC';
|
||||
|
||||
$stsem_obj = new studiensemester();
|
||||
$stsem_obj->load($this->studiensemester);
|
||||
@@ -263,8 +265,13 @@ class LehreListHelper
|
||||
|
||||
//Outgoing
|
||||
if($row->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '')
|
||||
&& $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30))
|
||||
&& $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30)) {
|
||||
$zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
|
||||
} else if ($row->bisio_id != '' && $row->status != 'Incoming' && ($row->von > $stsemdatumvon || $row->von == '')) {
|
||||
// if bis datum is not yet known but von is available already
|
||||
$zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
|
||||
}
|
||||
|
||||
|
||||
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
|
||||
$zusatz.= '('. $row->anmerkung. ')';
|
||||
@@ -275,8 +282,13 @@ class LehreListHelper
|
||||
if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende
|
||||
$zusatz.='(a.o.)';
|
||||
|
||||
if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) //Double Degree Student
|
||||
$zusatz .= '(d.d.)';
|
||||
if(($row->mobilitaetstyp_kurzbz != '') && ($row->doubledegree == 1)) {
|
||||
//Double Degree Student
|
||||
$zusatz .= '(d.d.';
|
||||
if($row->ddtype == 'Intern') $zusatz .= 'i.)';
|
||||
else if ($row->ddtype == 'Extern') $zusatz .='o.)';
|
||||
else $zusatz .= ')';
|
||||
}
|
||||
|
||||
if(($row->wahlname != ''))
|
||||
{
|
||||
|
||||
@@ -119,6 +119,7 @@ export default {
|
||||
<div class="modal-content">
|
||||
<div v-if="$slots.title" class="modal-header">
|
||||
<h5 class="modal-title"><slot name="title"/></h5>
|
||||
<slot name="popoutButton"></slot>
|
||||
<button v-if="!noCloseBtn" type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body" :class="bodyClass">
|
||||
|
||||
@@ -318,7 +318,7 @@ export default {
|
||||
>
|
||||
<slot></slot>
|
||||
</component>
|
||||
<label v-if="label && (lcType == 'radio' || lcType == 'checkbox')" :for="idCmp" :class="!noAutoClass && 'form-check-label'">{{label}}</label>
|
||||
<label v-if="label && (lcType == 'radio' || lcType == 'checkbox')" :for="idCmp" :class="!noAutoClass && 'form-check-label'" v-html="label"></label>
|
||||
<div v-if="valid !== undefined && feedback.length && !noFeedback" :class="feedbackClass">
|
||||
<template v-for="(msg, i) in feedback" :key="i">
|
||||
<hr v-if="i" class="m-0">
|
||||
|
||||
@@ -20,6 +20,10 @@ export default {
|
||||
accept: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -88,7 +92,7 @@ export default {
|
||||
},
|
||||
template: `
|
||||
<div class="form-upload-dms">
|
||||
<input ref="upload" class="form-control" :accept="accept" :class="inputClass" :id="id" :name="name" :multiple="multiple" type="file" @change="addFiles">
|
||||
<input ref="upload" class="form-control" :disabled="disabled" :accept="accept" :class="inputClass" :id="id" :name="name" :multiple="multiple" type="file" @change="addFiles">
|
||||
<ul v-if="modelValue.length && multiple && !noList" :accept="accept" class="list-unstyled m-0">
|
||||
<dms-item
|
||||
v-for="(file, index) in modelValue"
|
||||
|
||||
@@ -50,12 +50,21 @@ var InfocenterPersonDataset = {
|
||||
'</select>' +
|
||||
'<select class="form-control auswahlAbsageAbgeschickt" style="width:auto; float:left;">' +
|
||||
'<option value="null" selected="selected"> Bewerbung abgeschickt? </option>' +
|
||||
'<option value="all"> Beide </option>' +
|
||||
'<option value="true"> Ja </option>' +
|
||||
'<option value="false"> Nein </option>' +
|
||||
'</select>' +
|
||||
'<button class="btn btn-default auswahlAbsageBtn" style="float:left"> Absage </button>';
|
||||
|
||||
let rueckstellung = '<br />' +
|
||||
'<select id="rueckstellungtype" class="form-control" style="width:auto; float:left;">' +
|
||||
'<option disabled value="null" selected>' + FHC_PhrasesLib.t('infocenter', 'statusAuswahl') + '</option>' +
|
||||
'</select>' +
|
||||
'<input id="rueckstellungdate" type="text" class="form-control" style="width:auto; float:left;" placeholder="Parkdatum">' +
|
||||
'<button class="form-control btn btn-default rueckstellBtn" style="width:auto; float:left"> Zurückstellen </button>';
|
||||
|
||||
InfocenterPersonDataset.getAbsageData();
|
||||
Rueckstellung.getStatus()
|
||||
|
||||
var studienSemesterHtml = '<button class="btn btn-default btn-xs decStudiensemester">' +
|
||||
'<i class="fa fa-chevron-left"></i>' +
|
||||
@@ -98,10 +107,22 @@ var InfocenterPersonDataset = {
|
||||
"<div class='row'>"+
|
||||
"<div class='col-xs-12'>"+auswahlAbsageToggle+"</div>"+
|
||||
"<div class='col-xs-12' id='absagePunkte' style='display:none'>"+auswahlAbsage+"</div>"+
|
||||
"<div class='col-xs-12' id='rueckstellung' style='display:none'>"+rueckstellung+"</div>"+
|
||||
"</div>" +
|
||||
"<div class='h-divider'></div>" +
|
||||
"<hr class='studiensemesterline'>"
|
||||
)
|
||||
|
||||
let rueckstelldate = new Date();
|
||||
|
||||
rueckstelldate.setDate(rueckstelldate.getDate() + 14);
|
||||
$('#rueckstellungdate').attr("value", $.datepicker.formatDate("dd.mm.yy", rueckstelldate));
|
||||
|
||||
$("#rueckstellungdate").datepicker({
|
||||
"dateFormat": "dd.mm.yy",
|
||||
"minDate": 1
|
||||
});
|
||||
|
||||
$("button.incStudiensemester").click(function() {
|
||||
InfocenterPersonDataset.changeStudiensemesterUservar(1);
|
||||
});
|
||||
@@ -123,6 +144,29 @@ var InfocenterPersonDataset = {
|
||||
$(".absageModalForAll").modal("show");
|
||||
});
|
||||
|
||||
$('button.rueckstellBtn').click(function()
|
||||
{
|
||||
let idsel = $("#filterTableDataset input:checked[name=PersonId\\[\\]]");
|
||||
|
||||
if(idsel.length <= 0)
|
||||
return FHC_DialogLib.alertInfo("Bitte wählen Sie die Personen aus.");
|
||||
|
||||
let type = $('#rueckstellungtype').val()
|
||||
|
||||
if (type === null)
|
||||
return FHC_DialogLib.alertInfo("Bitte ein Rückstellgrund auswählen.");
|
||||
|
||||
let personen = [];
|
||||
|
||||
for (let i = 0; i < idsel.length; i++)
|
||||
{
|
||||
personen.push($(idsel[i]).val());
|
||||
}
|
||||
|
||||
let date = $("#rueckstellungdate").val();
|
||||
Rueckstellung.setForPersons(personen, type, date)
|
||||
});
|
||||
|
||||
$('#saveAbsageForAll').click(function()
|
||||
{
|
||||
InfocenterPersonDataset.saveAbsageForAll();
|
||||
@@ -131,6 +175,7 @@ var InfocenterPersonDataset = {
|
||||
$('a.absageToggle').click(function()
|
||||
{
|
||||
$('#absagePunkte').toggle();
|
||||
$('#rueckstellung').toggle();
|
||||
})
|
||||
|
||||
var personcount = 0;
|
||||
@@ -356,6 +401,11 @@ var InfocenterPersonDataset = {
|
||||
text: value.bezeichnung_mehrsprachig[0]
|
||||
}))
|
||||
})
|
||||
|
||||
$('.auswahlAbsageStg').append($("<option/>", {
|
||||
value: 'all',
|
||||
text: 'Alle'
|
||||
}))
|
||||
$.each(data.studiengaenge, function(key, value){
|
||||
$('.auswahlAbsageStg').append($("<option/>", {
|
||||
value: value.studiengang,
|
||||
|
||||
@@ -87,6 +87,33 @@ var Rueckstellung = {
|
||||
}
|
||||
);
|
||||
},
|
||||
setForPersons: function(personen, type, date)
|
||||
{
|
||||
if (type === null)
|
||||
return false;
|
||||
|
||||
FHC_AjaxClient.ajaxCallPost(
|
||||
CONTROLLER_RUECKSTELLUNG_URL + '/setForPersonen',
|
||||
{
|
||||
"personen": personen,
|
||||
"datum_bis": date,
|
||||
"status_kurzbz": type,
|
||||
},
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
if (FHC_AjaxClient.isError(data))
|
||||
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
|
||||
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
FHC_DialogLib.alertSuccess("Erfolgreich gespeichert.")
|
||||
},
|
||||
errorCallback: function(jqXHR, textStatus, errorThrown) {
|
||||
FHC_DialogLib.alertError(textStatus);
|
||||
},
|
||||
veilTimeout: 0
|
||||
}
|
||||
);
|
||||
},
|
||||
delete: function(personid, status = null)
|
||||
{
|
||||
FHC_AjaxClient.ajaxCallPost(
|
||||
|
||||
@@ -117,7 +117,7 @@ const helperApp = Vue.createApp({
|
||||
},
|
||||
methods: {
|
||||
mailToUrl(slotProps) {
|
||||
let mailTo = 'noreply@technikum-wien.at'; // TODO domain anpassen
|
||||
let mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;
|
||||
let subject = 'Meldung%20Systemfehler';
|
||||
let body = `
|
||||
Danke, dass Sie uns den Fehler melden. %0D%0A %0D%0A
|
||||
@@ -141,6 +141,11 @@ const helperApp = Vue.createApp({
|
||||
unmounted() {
|
||||
helperAppContainer.parentElement.removeChild(helperAppContainer);
|
||||
},
|
||||
computed: {
|
||||
showmaillink: function() {
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<pv-toast ref="toast" class="fhc-alert" :base-z-index="99999"></pv-toast>
|
||||
<pv-toast ref="alert" class="fhc-alert" :base-z-index="99999" position="center">
|
||||
@@ -162,6 +167,7 @@ const helperApp = Vue.createApp({
|
||||
Fehler anzeigen
|
||||
</a>
|
||||
<a
|
||||
v-if="showmaillink"
|
||||
class="btn btn-primary flex-fill"
|
||||
target="_blank"
|
||||
:href="mailToUrl(slotProps)"
|
||||
|
||||
@@ -109,7 +109,7 @@ const helperApp = Vue.createApp({
|
||||
},
|
||||
methods: {
|
||||
mailToUrl(slotProps) {
|
||||
let mailTo = 'noreply@technikum-wien.at'; // TODO domain anpassen
|
||||
let mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;
|
||||
let subject = 'Meldung%20Systemfehler';
|
||||
let body = `
|
||||
Danke, dass Sie uns den Fehler melden. %0D%0A %0D%0A
|
||||
@@ -133,6 +133,11 @@ const helperApp = Vue.createApp({
|
||||
unmounted() {
|
||||
helperAppContainer.parentElement.removeChild(helperAppContainer);
|
||||
},
|
||||
computed: {
|
||||
showmaillink: function() {
|
||||
return FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<pv-toast ref="toast" class="fhc-alert" :base-z-index="99999"></pv-toast>
|
||||
<pv-toast ref="alert" class="fhc-alert" :base-z-index="99999" position="center">
|
||||
@@ -154,6 +159,7 @@ const helperApp = Vue.createApp({
|
||||
Fehler anzeigen
|
||||
</a>
|
||||
<a
|
||||
v-if="showmaillink"
|
||||
class="btn btn-primary flex-fill"
|
||||
target="_blank"
|
||||
:href="mailToUrl(slotProps)"
|
||||
|
||||
@@ -386,6 +386,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
|
||||
echo ' <titel_en>'.$titel_en.'</titel_en>';
|
||||
$praktikum = false;
|
||||
$auslandssemester = false;
|
||||
$internationalskills = false;
|
||||
$qry = "SELECT
|
||||
projektarbeit_id
|
||||
FROM
|
||||
@@ -403,6 +404,56 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
|
||||
}
|
||||
}
|
||||
|
||||
if ($row->typ === 'b')
|
||||
{
|
||||
//check if extension international skills is active
|
||||
$qry = "SELECT 1
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'extension' AND table_name = 'tbl_internat_massnahme'";
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
if ($db->db_num_rows($result) === 1)
|
||||
{
|
||||
$qry = "SELECT bezeichnung_mehrsprachig[1] as \"internationalskill_deutsch\",
|
||||
bezeichnung_mehrsprachig[2] as \"internationalskill_english\"
|
||||
FROM extension.tbl_internat_massnahme_zuordnung zuordnung
|
||||
JOIN extension.tbl_internat_massnahme massnahme ON zuordnung.massnahme_id = massnahme.massnahme_id
|
||||
JOIN extension.tbl_internat_massnahme_zuordnung_status zstatus ON zuordnung.massnahme_zuordnung_id = zstatus.massnahme_zuordnung_id
|
||||
JOIN tbl_prestudent ON zuordnung.prestudent_id = tbl_prestudent.prestudent_id
|
||||
JOIN tbl_student ON tbl_prestudent.prestudent_id = tbl_student.prestudent_id
|
||||
WHERE zstatus.massnahme_status_kurzbz = 'confirmed'
|
||||
AND tbl_student.student_uid = ".$db->db_add_param($uid_arr[$i])."
|
||||
AND zstatus.massnahme_zuordnung_status_id = (
|
||||
SELECT MAX(sub_zstatus.massnahme_zuordnung_status_id)
|
||||
FROM extension.tbl_internat_massnahme_zuordnung_status sub_zstatus
|
||||
WHERE sub_zstatus.massnahme_zuordnung_id = zuordnung.massnahme_zuordnung_id
|
||||
)
|
||||
GROUP BY zuordnung.massnahme_zuordnung_id, tbl_student.student_uid, tbl_prestudent.prestudent_id, tbl_prestudent.studiengang_kz, bezeichnung_mehrsprachig;";
|
||||
|
||||
if($db->db_query($qry))
|
||||
{
|
||||
if($db->db_num_rows() > 0)
|
||||
{
|
||||
$internationalskills = true;
|
||||
echo "<internationalskills>";
|
||||
while($row1 = $db->db_fetch_object())
|
||||
{
|
||||
echo "<internationalskillsdeutsch>";
|
||||
echo "<internationalskilldeutsch><![CDATA[$row1->internationalskill_deutsch]]></internationalskilldeutsch>";
|
||||
echo "</internationalskillsdeutsch>";
|
||||
|
||||
echo "<internationalskillsenglisch>";
|
||||
echo "<internationalskillenglish><![CDATA[$row1->internationalskill_english]]></internationalskillenglish>";
|
||||
echo "</internationalskillsenglisch>";
|
||||
}
|
||||
echo "</internationalskills>";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$qry = "SELECT tbl_bisio.bisio_id, von, bis, lehreinheit_id,
|
||||
(SELECT STRING_AGG (
|
||||
tbl_zweck.bezeichnung,
|
||||
@@ -461,6 +512,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
|
||||
$abschlusspruefungsdatum = '';
|
||||
$abschlussbeurteilung='';
|
||||
$pruefungstyp_kurzbz='';
|
||||
$abschlussbeurteilung_deutsch = '';
|
||||
|
||||
if($db->db_query($qry))
|
||||
{
|
||||
|
||||
@@ -92,7 +92,22 @@ if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag LIMIT
|
||||
datum_wiedereinstieg TIMESTAMP NULL,
|
||||
grund TEXT NULL,
|
||||
dms_id INTEGER NULL,
|
||||
CONSTRAINT tbl_studierendenantrag_pk PRIMARY KEY(studierendenantrag_id)
|
||||
CONSTRAINT tbl_studierendenantrag_pk PRIMARY KEY(studierendenantrag_id),
|
||||
CONSTRAINT fk_tbl_studierendenantrag_prestudent_id
|
||||
FOREIGN KEY (prestudent_id)
|
||||
REFERENCES public.tbl_prestudent(prestudent_id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT,
|
||||
CONSTRAINT fk_tbl_studierendenantrag_studiensemester_kurzbz
|
||||
FOREIGN KEY (studiensemester_kurzbz)
|
||||
REFERENCES public.tbl_studiensemester(studiensemester_kurzbz)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT,
|
||||
CONSTRAINT fk_tbl_studierendenantrag_dms_id
|
||||
FOREIGN KEY (dms_id)
|
||||
REFERENCES campus.tbl_dms(dms_id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT
|
||||
);
|
||||
CREATE SEQUENCE campus.tbl_studierendenantrag_studierendenantrag_id_seq
|
||||
INCREMENT BY 1
|
||||
@@ -114,6 +129,44 @@ if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag LIMIT
|
||||
echo '<br>campus.tbl_studierendenantrag: table created';
|
||||
}
|
||||
|
||||
if ($result = @$db->db_query("
|
||||
SELECT 1
|
||||
FROM information_schema.table_constraints
|
||||
WHERE constraint_name='fk_tbl_studierendenantrag_prestudent_id'
|
||||
LIMIT 1
|
||||
")) {
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "
|
||||
ALTER TABLE campus.tbl_studierendenantrag
|
||||
ADD CONSTRAINT fk_tbl_studierendenantrag_prestudent_id
|
||||
FOREIGN KEY (prestudent_id)
|
||||
REFERENCES public.tbl_prestudent(prestudent_id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT;
|
||||
|
||||
ALTER TABLE campus.tbl_studierendenantrag
|
||||
ADD CONSTRAINT fk_tbl_studierendenantrag_studiensemester_kurzbz
|
||||
FOREIGN KEY (studiensemester_kurzbz)
|
||||
REFERENCES public.tbl_studiensemester(studiensemester_kurzbz)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT;
|
||||
|
||||
ALTER TABLE campus.tbl_studierendenantrag
|
||||
ADD CONSTRAINT fk_tbl_studierendenantrag_dms_id
|
||||
FOREIGN KEY (dms_id)
|
||||
REFERENCES campus.tbl_dms(dms_id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT;
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_studierendenantrag: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>campus.tbl_studierendenantrag: fks added';
|
||||
}
|
||||
}
|
||||
|
||||
if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_status LIMIT 1"))
|
||||
{
|
||||
$qry = "CREATE TABLE campus.tbl_studierendenantrag_status (
|
||||
@@ -183,6 +236,11 @@ if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_lehrve
|
||||
FOREIGN KEY (studierendenantrag_id)
|
||||
REFERENCES campus.tbl_studierendenantrag(studierendenantrag_id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT,
|
||||
CONSTRAINT fk_tbl_lehrveranstaltung_lehrveranstaltung_id
|
||||
FOREIGN KEY (lehrveranstaltung_id)
|
||||
REFERENCES lehre.tbl_lehrveranstaltung(lehrveranstaltung_id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT
|
||||
);
|
||||
CREATE SEQUENCE campus.tbl_studierendenantrag_lehrveranstaltung_studierendenantrag_lehrveranstaltung_id_seq
|
||||
@@ -205,6 +263,30 @@ if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_studierendenantrag_lehrve
|
||||
echo '<br>campus.tbl_studierendenantrag_lehrveranstaltung: table created';
|
||||
}
|
||||
|
||||
if ($result = @$db->db_query("
|
||||
SELECT 1
|
||||
FROM information_schema.table_constraints
|
||||
WHERE constraint_name='fk_tbl_lehrveranstaltung_lehrveranstaltung_id'
|
||||
LIMIT 1
|
||||
")) {
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "
|
||||
ALTER TABLE campus.tbl_studierendenantrag_lehrveranstaltung
|
||||
ADD CONSTRAINT fk_tbl_lehrveranstaltung_lehrveranstaltung_id
|
||||
FOREIGN KEY (lehrveranstaltung_id)
|
||||
REFERENCES lehre.tbl_lehrveranstaltung(lehrveranstaltung_id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT;
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_studierendenantrag_lehrveranstaltung: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo '<br>campus.tbl_studierendenantrag_lehrveranstaltung: fks added';
|
||||
}
|
||||
}
|
||||
|
||||
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/studierendenantrag';"))
|
||||
{
|
||||
if($db->db_num_rows($result) == 0)
|
||||
|
||||
@@ -324,6 +324,22 @@ $fehlerArr = array(
|
||||
'fehlertext' => 'Es sind mehrere oder keine Zustelladressen eingetragen',
|
||||
'fehlertyp_kurzbz' => 'error',
|
||||
'app' => 'core'
|
||||
),
|
||||
array(
|
||||
'fehlercode' => 'CORE_PERSON_0005',
|
||||
'fehler_kurzbz' => 'geburtsnationFehlt',
|
||||
'fehlercode_extern' => null,
|
||||
'fehlertext' => 'Geburtsnation nicht vorhanden',
|
||||
'fehlertyp_kurzbz' => 'error',
|
||||
'app' => 'core'
|
||||
),
|
||||
array(
|
||||
'fehlercode' => 'CORE_PERSON_0006',
|
||||
'fehler_kurzbz' => 'uhstatPersonkennungFehltCore',
|
||||
'fehlercode_extern' => null,
|
||||
'fehlertext' => 'Personkennung fehlt (vBpk AS, vBpk BF oder Ersatzkennzeichen fehlt)',
|
||||
'fehlertyp_kurzbz' => 'error',
|
||||
'app' => 'core'
|
||||
)
|
||||
/** Plausichecks end **/
|
||||
);
|
||||
|
||||
+491
-11
@@ -18428,6 +18428,26 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'international',
|
||||
'category' => 'international',
|
||||
'phrase' => 'studentstatus',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studentstatus',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Student status',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'international',
|
||||
'category' => 'international',
|
||||
@@ -19331,13 +19351,33 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Maßnahmen - geplant',
|
||||
'text' => 'Maßnahme - geplant',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Measures - planned',
|
||||
'text' => 'Measure - planned',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'international',
|
||||
'category' => 'international',
|
||||
'phrase' => 'geplanteMassnahmenDesc',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Maßhname wurde geplant.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The measure was planned.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -19391,13 +19431,13 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Maßnahmen - durchgeführt',
|
||||
'text' => 'Maßnahme - durchgeführt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Measures - performed',
|
||||
'text' => 'Measure - performed',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -19431,13 +19471,13 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Maßnahmen - abgelehnt',
|
||||
'text' => 'Maßnahme - abgelehnt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Measures - declined',
|
||||
'text' => 'Measure - declined',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -19531,13 +19571,13 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Anmerkung - Studiengangsleitung',
|
||||
'text' => 'Begründung - Studiengangsleitung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Note - Study course Director',
|
||||
'text' => 'Reason - Study course Director',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -19563,6 +19603,26 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'international',
|
||||
'category' => 'international',
|
||||
'phrase' => 'stgtodo',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nur offene Massnahmen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'only open measures',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'international',
|
||||
'category' => 'international',
|
||||
@@ -30024,6 +30084,26 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'entschuldigungStatusUpdateAutoEmailBetreff',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Entschuldigung Status Update.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Excuse note status update.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
@@ -31352,7 +31432,7 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Termine laut Stundenplan',
|
||||
'text' => 'Unterricht laut Stundenplan',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
@@ -31364,6 +31444,26 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'unterrichtDauer',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterricht Dauer',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lesson Duration',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
@@ -31432,13 +31532,13 @@ array(
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Keine zugeteilten Studenten gefunden!',
|
||||
'text' => 'Keine zugeteilten Studenten gefunden für den gewählten LV-Teil gefunden!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'No assigned students found!',
|
||||
'text' => 'No assigned students for the selected teaching unit found!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -31744,6 +31844,86 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'kontrollDauerUnterMindestwert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Kontrolle muss für eine Unterrichtsdauer von mindestens {0} Minuten gelten.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Attendance check must apply for a lesson duration of at least {0} minutes.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'zeitNichtAusStundenplanBeginn',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterrichtbeginn entspricht keinem Unterrichtstermin laut Stundenplan.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lecture Begin Time does not match a lesson as per timetable.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'zeitNichtAusStundenplanEnde',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterrichtende entspricht keinem Unterrichtstermin laut Stundenplan.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lecture End Time does not match a lesson as per timetable.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'datumNichtAusStundenplan',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Datum entspricht keinem Stundenplan Termin.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Date does not match a lesson as per timetable.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
@@ -31940,6 +32120,306 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'anwTimeline',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Digitale Anwesenheiten Timeline',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Digital Attendances Timeline',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'entschuldigungEdit',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Entschuldigung bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Excuse Note Edit',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'excuseUploadNoFile',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dokument wird nachgereicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Document will be submitted later',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'entschuldigungEditieren',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Entschuldigung bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit Excuse Note',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'missingEntschuldigungFile',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Fehlendes Dokument!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Missing Document!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'anwKontrolleVon',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterricht von',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lesson from',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'anwKontrolleBis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterricht bis',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lesson until',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'termineAusStundenplan',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterricht Termine laut Stundenplan',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lesson dates according to timetable',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'tooltipUnterrichtZeitCustom',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterrichtszeiten werden aus dem Stundenplan geladen, überschreiben Sie diese nur falls Ihre tatsächliche Unterrichtszeiten davon abweichen!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lesson times are loaded from the timetable, only overwrite them if your actual lesson times differ!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'tooltipUnterrichtDatumCustom',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterrichtsdaten werden aus dem Stundenplan geladen, überschreiben Sie dieses nur falls Ihr tatsächliches Unterrichtsdatum abweicht!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Class dates are loaded from the timetable, only overwrite this if your actual class date differs!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'unterrichtzeit',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Unterrichtszeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Lesson Times',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'statusLegende',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Status Legende',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Status Legend',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'download',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Herunterladen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Download',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'upload',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Hochladen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Upload',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'anwesenheiten',
|
||||
'category' => 'global',
|
||||
'phrase' => 'providedDateTooOld',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Angegebenes Datum ist älter als erlaubt.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Provided date is older than allowed date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
//
|
||||
// DIGITALE ANWESENHEITEN PHRASEN END
|
||||
//
|
||||
|
||||
@@ -30,8 +30,6 @@
|
||||
require_once('../../include/lehrmodus.class.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/studienplan.class.php');
|
||||
require_once('../../include/lehrveranstaltung_faktor.class.php');
|
||||
require_once('../../include/studiensemester.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
|
||||
@@ -141,31 +139,6 @@
|
||||
$reloadstr .= " window.location.href='".$_SERVER['PHP_SELF']."?stg_kz=$lv->studiengang_kz&semester=$lv->semester&neu=true';";
|
||||
}
|
||||
$reloadstr .= "</script>\n";
|
||||
|
||||
if (in_array($lv->lehrtyp_kurzbz, array('tpl', 'lv')) && $lv->new === true)
|
||||
{
|
||||
$lv_faktor = new lehrveranstaltung_faktor();
|
||||
$studiensemester = new studiensemester();
|
||||
$studiensemester_von = $studiensemester->getLastOrAktSemester();
|
||||
if ($lv->lehrtyp_kurzbz === 'lv' && $_POST['lehrveranstaltung_template_id'] !== '')
|
||||
{
|
||||
|
||||
$lv_faktor->getAkt($_POST['lehrveranstaltung_template_id']);
|
||||
//TODO Faktor in eine Config
|
||||
if (is_null($lv_faktor->faktor))
|
||||
$lv_faktor->addFaktor($lv->lehrveranstaltung_id, 2, $studiensemester_von);
|
||||
else
|
||||
$lv_faktor->addFaktor($lv->lehrveranstaltung_id, $lv_faktor->faktor, $studiensemester_von);
|
||||
}
|
||||
else
|
||||
{
|
||||
$lv_faktor->loadByLV($lv->lehrveranstaltung_id);
|
||||
if (empty($lv_faktor->lv_faktoren))
|
||||
{
|
||||
$lv_faktor->addFaktor($lv->lehrveranstaltung_id, 2, $studiensemester_von);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -192,6 +192,15 @@ $datum_obj = new datum();
|
||||
die('Invalid Action');
|
||||
break;
|
||||
}
|
||||
if(isset($ampel_id) && $ampel->benutzer_select != '')
|
||||
{
|
||||
$anzahlUser = $ampel->getAnzahlUserAmpel($ampel_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
$anzahlUser = 0;
|
||||
}
|
||||
|
||||
|
||||
echo '<form action="'.$_SERVER['PHP_SELF'].'?action=save" method="POST">
|
||||
<input type="hidden" name="new" value="'.htmlspecialchars($new).'">
|
||||
@@ -207,8 +216,11 @@ $datum_obj = new datum();
|
||||
<td><input type="text" class="datepicker_datum" name="deadline" size="10" maxlength="10" value="'.htmlspecialchars($datum_obj->formatDatum($ampel->deadline,'Y-m-d')).'" required></td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td rowspan="3">Benutzer Select</td>
|
||||
<td rowspan="3"><textarea name="benutzer_select" cols="60" rows="5" required>'.htmlspecialchars($ampel->benutzer_select).'</textarea></td>
|
||||
<td rowspan="3">Benutzer*innen Select</td>
|
||||
<td rowspan="3">
|
||||
<textarea name="benutzer_select" cols="60" rows="5" required>'.htmlspecialchars($ampel->benutzer_select).'</textarea>
|
||||
<br>Anzahl Benutzer*innen: '.$anzahlUser.'
|
||||
</td>
|
||||
<td></td>
|
||||
<td valign="middle">Vorlaufzeit (in Tagen) 
|
||||
<i class="fa fa-info-circle fa-lg" aria-hidden="true" data-toggle="tooltip" data-placement="left" title="Anzahl der Tage VOR der Deadline, an denen die Ampel gezeigt werden soll.
Wenn keine Angabe, dann wird die Ampel gleich nach ihrer Erstellung angezeigt."></i>
|
||||
|
||||
Reference in New Issue
Block a user