mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Merge branch 'master' into feature-63435/Studierendenverwaltung_Studierende_Verbandsgruppen_und_Spezialgruppen_zuordnen_Multiaktion
This commit is contained in:
@@ -116,20 +116,23 @@ $subdirs = ['application/config/extensions', 'application/config/' . ENVIRONMENT
|
||||
|
||||
foreach($subdirs as $subdir)
|
||||
{
|
||||
$dirlist = scandir($subdir);
|
||||
if ($dirlist)
|
||||
if(is_dir($subdir))
|
||||
{
|
||||
$files = array_diff($dirlist, array('.','..'));
|
||||
|
||||
foreach ($files as &$item)
|
||||
$dirlist = scandir($subdir);
|
||||
if ($dirlist)
|
||||
{
|
||||
if (is_dir($subdir . DIRECTORY_SEPARATOR . $item))
|
||||
{
|
||||
$routes_file = $subdir . DIRECTORY_SEPARATOR . $item . DIRECTORY_SEPARATOR . 'routes.php';
|
||||
$files = array_diff($dirlist, array('.','..'));
|
||||
|
||||
if (file_exists($routes_file))
|
||||
foreach ($files as &$item)
|
||||
{
|
||||
if (is_dir($subdir . DIRECTORY_SEPARATOR . $item))
|
||||
{
|
||||
require($routes_file);
|
||||
$routes_file = $subdir . DIRECTORY_SEPARATOR . $item . DIRECTORY_SEPARATOR . 'routes.php';
|
||||
|
||||
if (file_exists($routes_file))
|
||||
{
|
||||
require($routes_file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,7 +254,6 @@ class Student extends FHCAPI_Controller
|
||||
'gebdatum',
|
||||
'gebort',
|
||||
'geburtsnation',
|
||||
'svnr',
|
||||
'ersatzkennzeichen',
|
||||
'staatsbuergerschaft',
|
||||
'matr_nr',
|
||||
|
||||
@@ -761,7 +761,6 @@ class Students extends FHCAPI_Controller
|
||||
$this->PrestudentModel->addSelect('wahlname');
|
||||
$this->PrestudentModel->addSelect('vornamen');
|
||||
$this->PrestudentModel->addSelect('titelpost');
|
||||
$this->PrestudentModel->addSelect('svnr');
|
||||
$this->PrestudentModel->addSelect('ersatzkennzeichen');
|
||||
$this->PrestudentModel->addSelect('gebdatum');
|
||||
$this->PrestudentModel->addSelect('geschlecht');
|
||||
|
||||
@@ -843,7 +843,6 @@ function meine_uid_informationen_detail($db,$uid,$count=0)
|
||||
|
||||
$aktiv=$db->db_result($erg,0,"aktiv");
|
||||
|
||||
$svnr=$db->db_result($erg,0,"svnr");
|
||||
|
||||
$titelpre=$db->db_result($erg,0,"titelpre");
|
||||
$titelpost=$db->db_result($erg,0,"titelpost");
|
||||
|
||||
@@ -307,8 +307,6 @@ foreach($prestudent_ids as $pid)
|
||||
$nation->load($prestudent->zgvnation);
|
||||
$zgvnation = $nation->kurztext;
|
||||
|
||||
$svnr = ($prestudent->svnr == '')?($prestudent->ersatzkennzeichen != ''?'Ersatzkennzeichen: '.$prestudent->ersatzkennzeichen:''):$prestudent->svnr;
|
||||
|
||||
foreach($adresse->result as $row_adresse)
|
||||
{
|
||||
if($row_adresse->heimatadresse)
|
||||
@@ -439,7 +437,6 @@ foreach($prestudent_ids as $pid)
|
||||
'zustell_ort' => $zustellOrt,
|
||||
'zustell_bundesland' => $zustellBundesland,
|
||||
'geburtsnation' => $geburtsnation,
|
||||
'svnr' => $svnr,
|
||||
'staatsbuergerschaft' => $staatsbuergerschaft,
|
||||
'geschlecht' => $prestudent->geschlecht,
|
||||
'telefonnummer' => $telefonnummer,
|
||||
|
||||
@@ -125,8 +125,6 @@ $worksheet->write($zeile, ++$i, "PERSONENKENNZEICHEN", $format_bold);
|
||||
$maxlength[$i] = 19;
|
||||
$worksheet->write($zeile, ++$i, "STAATSBÜRGERSCHAFT", $format_bold);
|
||||
$maxlength[$i] = 16;
|
||||
$worksheet->write($zeile, ++$i, "SVNR", $format_bold);
|
||||
$maxlength[$i] = 4;
|
||||
$worksheet->write($zeile, ++$i, "PERSON_ID", $format_bold);
|
||||
$maxlength[$i] = 6;
|
||||
$worksheet->write($zeile, ++$i, "ERSATZKENNZEICHEN", $format_bold);
|
||||
@@ -396,12 +394,7 @@ function draw_content($row)
|
||||
$worksheet->write($zeile, $i, $row->staatsbuergerschaft);
|
||||
$i++;
|
||||
|
||||
//SVNR
|
||||
if (mb_strlen($row->svnr) > $maxlength[$i])
|
||||
$maxlength[$i] = mb_strlen($row->svnr);
|
||||
$worksheet->write($zeile, $i, $row->svnr);
|
||||
$i++;
|
||||
|
||||
|
||||
//Person_id
|
||||
if (mb_strlen($row->person_id) > $maxlength[$i])
|
||||
$maxlength[$i] = mb_strlen($row->person_id);
|
||||
|
||||
@@ -594,7 +594,6 @@ if(!$error)
|
||||
$student->anmerkungen = $_POST['anmerkung'];
|
||||
$student->homepage = $_POST['homepage'];
|
||||
$student->matr_nr = $_POST['matr_nr'];
|
||||
$student->svnr = $_POST['svnr'];
|
||||
$student->ersatzkennzeichen = $_POST['ersatzkennzeichen'];
|
||||
$student->familienstand = $_POST['familienstand'];
|
||||
$student->geschlecht = $_POST['geschlecht'];
|
||||
@@ -746,7 +745,6 @@ if(!$error)
|
||||
$person->gebzeit = $_POST['geburtszeit'];
|
||||
$person->anmerkungen = $_POST['anmerkung'];
|
||||
$person->homepage = $_POST['homepage'];
|
||||
$person->svnr = $_POST['svnr'];
|
||||
$person->ersatzkennzeichen = $_POST['ersatzkennzeichen'];
|
||||
$person->familienstand = $_POST['familienstand'];
|
||||
$person->geschlecht = $_POST['geschlecht'];
|
||||
|
||||
@@ -134,8 +134,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
|
||||
</row>
|
||||
<row>
|
||||
<label value="SVNR" control="student-detail-textbox-svnr"/>
|
||||
<hbox><textbox id="student-detail-textbox-svnr" disabled="true" maxlength="16" size="10"/></hbox>
|
||||
|
||||
<label value="Ersatzkennzeichen" control="student-detail-textbox-ersatzkennzeichen"/>
|
||||
<hbox><textbox id="student-detail-textbox-ersatzkennzeichen" disabled="true" maxlength="10" size="15"/></hbox>
|
||||
<label value="Geburtszeit" control="student-detail-textbox-geburtszeit" hidden="true"/>
|
||||
|
||||
@@ -284,10 +284,6 @@ else
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/student/rdf#titelpost" onclick="StudentTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-treecol-svnr" label="SVNR" flex="1" hidden="false" persist="hidden, width, ordinal"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/student/rdf#svnr" onclick="StudentTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="student-treecol-ersatzkennzeichen" label="Ersatzkennzeichen" flex="1" hidden="false" persist="hidden, width, ordinal"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/student/rdf#ersatzkennzeichen" onclick="StudentTreeSort()"/>
|
||||
@@ -445,7 +441,6 @@ else
|
||||
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/student/rdf#aktiv" label="rdf:http://www.technikum-wien.at/student/rdf#wahlname" />
|
||||
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/student/rdf#aktiv" label="rdf:http://www.technikum-wien.at/student/rdf#vornamen" />
|
||||
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/student/rdf#aktiv" label="rdf:http://www.technikum-wien.at/student/rdf#titelpost" />
|
||||
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/student/rdf#aktiv" label="rdf:http://www.technikum-wien.at/student/rdf#svnr" />
|
||||
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/student/rdf#aktiv" label="rdf:http://www.technikum-wien.at/student/rdf#ersatzkennzeichen" />
|
||||
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/student/rdf#aktiv" label="rdf:http://www.technikum-wien.at/student/rdf#geburtsdatum" />
|
||||
<treecell properties="Aktiv_rdf:http://www.technikum-wien.at/student/rdf#aktiv" label="rdf:http://www.technikum-wien.at/student/rdf#geschlecht" />
|
||||
|
||||
@@ -786,7 +786,6 @@ function StudentDetailReset()
|
||||
document.getElementById('student-detail-textbox-geburtszeit').value='';
|
||||
document.getElementById('student-detail-textbox-anmerkung').value='';
|
||||
document.getElementById('student-detail-textbox-homepage').value='';
|
||||
document.getElementById('student-detail-textbox-svnr').value='';
|
||||
document.getElementById('student-detail-textbox-ersatzkennzeichen').value='';
|
||||
document.getElementById('student-detail-menulist-familienstand').value='l';
|
||||
document.getElementById('student-detail-menulist-geschlecht').value='m';
|
||||
@@ -819,7 +818,6 @@ function StudentDetailDisableFields(val)
|
||||
document.getElementById('student-detail-textbox-geburtszeit').disabled=val;
|
||||
document.getElementById('student-detail-textbox-anmerkung').disabled=val;
|
||||
document.getElementById('student-detail-textbox-homepage').disabled=val;
|
||||
document.getElementById('student-detail-textbox-svnr').disabled=val;
|
||||
document.getElementById('student-detail-textbox-ersatzkennzeichen').disabled=val;
|
||||
document.getElementById('student-detail-menulist-familienstand').disabled=val;
|
||||
document.getElementById('student-detail-menulist-geschlecht').disabled=val;
|
||||
@@ -860,7 +858,6 @@ function StudentDetailSave()
|
||||
geburtszeit = document.getElementById('student-detail-textbox-geburtszeit').value;
|
||||
anmerkung = document.getElementById('student-detail-textbox-anmerkung').value;
|
||||
homepage = document.getElementById('student-detail-textbox-homepage').value;
|
||||
svnr = document.getElementById('student-detail-textbox-svnr').value;
|
||||
ersatzkennzeichen = document.getElementById('student-detail-textbox-ersatzkennzeichen').value;
|
||||
familienstand = document.getElementById('student-detail-menulist-familienstand').value;
|
||||
geschlecht = document.getElementById('student-detail-menulist-geschlecht').value;
|
||||
@@ -919,7 +916,6 @@ function StudentDetailSave()
|
||||
req.add('geburtszeit', geburtszeit);
|
||||
req.add('anmerkung', anmerkung);
|
||||
req.add('homepage', homepage);
|
||||
req.add('svnr', svnr);
|
||||
req.add('ersatzkennzeichen', ersatzkennzeichen);
|
||||
req.add('familienstand', familienstand);
|
||||
req.add('geschlecht', geschlecht);
|
||||
@@ -1167,7 +1163,6 @@ function StudentAuswahl()
|
||||
geburtszeit=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gebzeit" ));
|
||||
anmerkung=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkungen" ));
|
||||
homepage=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#homepage" ));
|
||||
svnr=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#svnr" ));
|
||||
ersatzkennzeichen=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ersatzkennzeichen" ));
|
||||
familienstand=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#familienstand" ));
|
||||
geschlecht=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#geschlecht" ));
|
||||
@@ -1211,7 +1206,6 @@ function StudentAuswahl()
|
||||
document.getElementById('student-detail-textbox-geburtszeit').value=geburtszeit;
|
||||
document.getElementById('student-detail-textbox-anmerkung').value=anmerkung;
|
||||
document.getElementById('student-detail-textbox-homepage').value=homepage;
|
||||
document.getElementById('student-detail-textbox-svnr').value=svnr;
|
||||
document.getElementById('student-detail-textbox-ersatzkennzeichen').value=ersatzkennzeichen;
|
||||
document.getElementById('student-detail-menulist-familienstand').value=familienstand;
|
||||
|
||||
|
||||
@@ -1051,7 +1051,6 @@ class prestudent extends person
|
||||
//$ps->foto = $row->foto;
|
||||
$ps->anmerkungen = $row->anmerkungen;
|
||||
$ps->homepage = $row->homepage;
|
||||
$ps->svnr = $row->svnr;
|
||||
$ps->ersatzkennzeichen = $row->ersatzkennzeichen;
|
||||
$ps->familienstand = $row->familienstand;
|
||||
$ps->geschlecht = $row->geschlecht;
|
||||
|
||||
@@ -294,7 +294,6 @@ class student extends benutzer
|
||||
$l->gebort=$row->gebort;
|
||||
$l->gebzeit=$row->gebzeit;
|
||||
$l->familienstand = $row->familienstand;
|
||||
$l->svnr=$row->svnr;
|
||||
$l->foto=$row->foto;
|
||||
$l->anmerkungen=$row->anmerkung;
|
||||
$l->aktiv=$this->db_parse_bool($row->aktiv);
|
||||
@@ -649,7 +648,7 @@ class student extends benutzer
|
||||
{
|
||||
$sql_query = "SELECT
|
||||
person_id, staatsbuergerschaft, geburtsnation, sprache, anrede, titelpost, titelpre,
|
||||
nachname, vorname, vornamen, gebdatum, gebort, gebzeit, anmerkung, homepage, svnr,
|
||||
nachname, vorname, vornamen, gebdatum, gebort, gebzeit, anmerkung, homepage,
|
||||
ersatzkennzeichen, familienstand, geschlecht, anzahlkinder, tbl_person.aktiv, kurzbeschreibung,
|
||||
tbl_benutzer.aktiv as bnaktiv, tbl_student.studiengang_kz, tbl_student.semester, tbl_student.verband,
|
||||
tbl_student.gruppe, tbl_student.prestudent_id, tbl_benutzer.uid
|
||||
@@ -691,7 +690,6 @@ class student extends benutzer
|
||||
$l->gebzeit = $row->gebzeit;
|
||||
$l->anmerkungen = $row->anmerkung;
|
||||
$l->homepage = $row->homepage;
|
||||
$l->svnr = $row->svnr;
|
||||
$l->ersatzkennzeichen = $row->ersatzkennzeichen;
|
||||
$l->familienstand = $row->familienstand;
|
||||
$l->geschlecht = $row->geschlecht;
|
||||
|
||||
@@ -318,16 +318,6 @@ export default {
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
v-if="!config.hiddenFields.includes('svnr')"
|
||||
container-class="col-4 stv-details-details-svnr"
|
||||
:label="$p.t('person', 'svnr')"
|
||||
type="text"
|
||||
v-model="data.svnr"
|
||||
name="svnr"
|
||||
maxlength="16"
|
||||
>
|
||||
</form-input>
|
||||
<form-input
|
||||
v-if="!config.hiddenFields.includes('ersatzkennzeichen')"
|
||||
container-class="col-4 stv-details-details-ersatzkennzeichen"
|
||||
|
||||
@@ -151,7 +151,17 @@ export default {
|
||||
ApiStvStatus.addStudent(prestudent_id, data),
|
||||
{ errorHeader: prestudent_id }
|
||||
]))
|
||||
.then(() => {
|
||||
.then(result => {
|
||||
const messagesSuccessful = result.filter(res => res.status == 'fulfilled');
|
||||
if (messagesSuccessful.length) {
|
||||
this.$fhcAlert.alertDefault(
|
||||
'info',
|
||||
'Feedback',
|
||||
messagesSuccessful.length + " erfolgreiche Statusänderung(en) durchgeführt", // TODO(chris): translate
|
||||
false,
|
||||
true
|
||||
);
|
||||
}
|
||||
this.$emit('reloadTable');
|
||||
this.$reloadList();
|
||||
});
|
||||
|
||||
@@ -50,7 +50,6 @@ export default {
|
||||
{title:"Wahlname", field:"wahlname", visible:false, headerFilter: true},
|
||||
{title:"Vornamen", field:"vornamen", visible:false, headerFilter: true},
|
||||
{title:"TitelPost", field:"titelpost", headerFilter: "list", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:"asc"}},
|
||||
{title:"SVNR", field:"svnr", headerFilter: true},
|
||||
{title:"Ersatzkennzeichen", field:"ersatzkennzeichen", headerFilter: true},
|
||||
{title:"Geburtsdatum", field:"gebdatum", formatter:dateFormatter,
|
||||
headerFilter: true, headerFilterFunc: function(headerValue, rowValue, rowData, filterParams) {
|
||||
|
||||
+406
-246
@@ -10,7 +10,232 @@ export default {
|
||||
if (!app.config.globalProperties.$fhcAlert)
|
||||
app.use(FhcAlert);
|
||||
|
||||
function _get_config(form, uri, data, config) {
|
||||
const $fhcAlert = app.config.globalProperties.$fhcAlert;
|
||||
|
||||
function _send_array_or_object(errors, func) {
|
||||
if (Array.isArray(errors))
|
||||
errors.forEach(func);
|
||||
else
|
||||
Object.entries(errors).forEach(
|
||||
([title, errs]) => errs.forEach(
|
||||
error => func(error, title)
|
||||
)
|
||||
);
|
||||
}
|
||||
let DEFAULT_ERROR_CONFIG = {
|
||||
success: true,
|
||||
fail: true,
|
||||
combine: {
|
||||
form: ['validation', 'general'],
|
||||
toast: ['validation', 'general', 'not_found', 'site_failed']
|
||||
},
|
||||
handler: {
|
||||
form(form, errors) {
|
||||
form.clearValidation();
|
||||
errors.forEach(err => form.setFeedback(
|
||||
false,
|
||||
err.messages || err.message
|
||||
));
|
||||
},
|
||||
async toast(errors) {
|
||||
const $p = app.config.globalProperties.$p;
|
||||
if (!$p)
|
||||
return Promise.reject('Phrasen plugin not loaded!');
|
||||
|
||||
async function _format_toast(errors) {
|
||||
errors = errors.reduce((result, err) => {
|
||||
switch (err.type) {
|
||||
case 'not_found':
|
||||
case 'site_failed':
|
||||
if (err.message)
|
||||
result[err.message] = [err.url];
|
||||
else
|
||||
result._default = [err.url];
|
||||
break;
|
||||
case 'general':
|
||||
if (!result._default)
|
||||
result._default = [];
|
||||
result._default.push(err.message);
|
||||
break;
|
||||
case 'validation':
|
||||
Object.entries(err.messages)
|
||||
.forEach(([field, msg]) => {
|
||||
if (!result[field])
|
||||
result[field] = [];
|
||||
if (Array.isArray(msg))
|
||||
result[field].push(...msg);
|
||||
else
|
||||
result[field].push(msg);
|
||||
});
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}, {});
|
||||
let counter = 0;
|
||||
const msgs = await Promise.all(Object.entries(errors)
|
||||
.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first
|
||||
.map(async ([field, msgs]) => {
|
||||
if (field == '_default') {
|
||||
await $p.loadCategory('dashboard');
|
||||
const general = $p.t('dashboard/general');
|
||||
field = '<dt class="d-none">' + general + '</dt>';
|
||||
} else {
|
||||
field = '<dt>' + field + '</dt>';
|
||||
}
|
||||
counter += msgs.length;
|
||||
return field
|
||||
+ '<dd>'
|
||||
+ msgs.join('</dd><dd>')
|
||||
+ '</dd>';
|
||||
}));
|
||||
return {
|
||||
counter,
|
||||
msgs
|
||||
}
|
||||
}
|
||||
|
||||
let counter, msgs;
|
||||
if (Array.isArray(errors)) {
|
||||
({ counter, msgs } = await _format_toast(errors));
|
||||
} else {
|
||||
({ counter, msgs } = await Object.entries(errors)
|
||||
.reduce(async (res, [title, errs]) => {
|
||||
const result = await res;
|
||||
const { counter, msgs } = await _format_toast(errs);
|
||||
result.counter += counter;
|
||||
result.msgs.push('<dt>'
|
||||
+ title
|
||||
+ '</dt><dd><dl>'
|
||||
+ msgs.join('')
|
||||
+ '</dl></dd>');
|
||||
return result;
|
||||
}, Promise.resolve({ counter: 0, msgs: []})));
|
||||
}
|
||||
|
||||
await $p.loadCategory('ui');
|
||||
const n_errors = $p.t('ui/n_errors', { n: counter });
|
||||
|
||||
$fhcAlert.alertDefault(
|
||||
'error',
|
||||
n_errors,
|
||||
'<dl>' + msgs.join('') + '</dl>',
|
||||
true,
|
||||
true
|
||||
);
|
||||
},
|
||||
php(errors) {
|
||||
_send_array_or_object(errors, (error, title) => {
|
||||
var message = '';
|
||||
message += 'Message: ' + error.message + '\n\n';
|
||||
message += 'Filename: ' + error.filename + '\n';
|
||||
message += 'Line Number: ' + error.line + '\n';
|
||||
if (error.backtrace && error.backtrace.length) {
|
||||
message += '\nBacktrace: ';
|
||||
error.backtrace.forEach(err => {
|
||||
message += '\n\tFile: ' + err.file + '\n';
|
||||
message += '\tLine: ' + err.line + '\n';
|
||||
message += '\tFunction: ' + err.function + '\n';
|
||||
});
|
||||
}
|
||||
switch (error.severity) {
|
||||
case 'Warning':
|
||||
case 'Core Warning':
|
||||
case 'Compile Warning':
|
||||
case 'User Warning':
|
||||
if (title)
|
||||
title += ': PHP ' + error.severity;
|
||||
else
|
||||
title = 'PHP ' + error.severity;
|
||||
$fhcAlert.alertDefault('warn', title, message, true);
|
||||
break;
|
||||
case 'Notice':
|
||||
case 'User Notice':
|
||||
case 'Runtime Notice':
|
||||
if (title)
|
||||
title += ': PHP ' + error.severity;
|
||||
else
|
||||
title = 'PHP ' + error.severity;
|
||||
$fhcAlert.alertDefault('info', title, message, true);
|
||||
break;
|
||||
default:
|
||||
message = 'Type: PHP ' + error.severity + '\n\n' + message;
|
||||
if (title)
|
||||
message = title + '\n\n' + message;
|
||||
$fhcAlert.alertSystemError(message);
|
||||
break;
|
||||
}
|
||||
});
|
||||
},
|
||||
exception(errors) {
|
||||
_send_array_or_object(errors, (error, title) => {
|
||||
var message = '';
|
||||
if (title)
|
||||
message += title + '\n\n';
|
||||
message += 'Type: ' + error.class + '\n\n';
|
||||
message += 'Message: ' + error.message + '\n\n';
|
||||
message += 'Filename: ' + error.filename + '\n';
|
||||
message += 'Line Number: ' + error.line + '\n';
|
||||
if (error.backtrace && error.backtrace.length) {
|
||||
message += '\nBacktrace: ';
|
||||
error.backtrace.forEach(err => {
|
||||
message += '\n\tFile: ' + err.file + '\n';
|
||||
message += '\tLine: ' + err.line + '\n';
|
||||
message += '\tFunction: ' + err.function + '\n';
|
||||
});
|
||||
}
|
||||
$fhcAlert.alertSystemError(message);
|
||||
});
|
||||
},
|
||||
db(errors) {
|
||||
_send_array_or_object(errors, (error, title) => {
|
||||
var message = '';
|
||||
if (title)
|
||||
message += title + '\n\n';
|
||||
if (error.heading !== undefined)
|
||||
message += error.heading + '\n\n';
|
||||
if (error.code !== undefined)
|
||||
message += 'Code: ' + error.code + '\n\n';
|
||||
if (error.sql !== undefined)
|
||||
message += 'SQL: ' + error.sql + '\n\n';
|
||||
if (error.message !== undefined)
|
||||
message += 'Message: ' + error.message + '\n\n';
|
||||
else if (error.messages !== undefined)
|
||||
message += 'Messages: ' + error.messages.join('\n\t') + '\n\n';
|
||||
if (error.filename !== undefined)
|
||||
message += 'Filename: ' + error.filename + '\n';
|
||||
if (error.line !== undefined)
|
||||
message += 'Line Number: ' + error.line + '\n';
|
||||
|
||||
$fhcAlert.alertSystemError(message);
|
||||
});
|
||||
},
|
||||
auth(errors) {
|
||||
_send_array_or_object(errors, (error, title) => {
|
||||
if (title)
|
||||
title += ': ' + error.message;
|
||||
else
|
||||
title = error.message;
|
||||
|
||||
var message = '';
|
||||
message += 'Controller name: ' + error.controller + '\n';
|
||||
message += 'Method name: ' + error.method + '\n';
|
||||
message += 'Required permissions: ' + error.required_permissions;
|
||||
|
||||
$fhcAlert.alertDefault(
|
||||
'error',
|
||||
title,
|
||||
message,
|
||||
true
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (options?.errorHandling !== undefined)
|
||||
DEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);
|
||||
|
||||
function get_config(form, uri, data, config) {
|
||||
if (typeof form == 'string' && config === undefined) {
|
||||
[uri, data, config] = [form, uri, data];
|
||||
form = undefined;
|
||||
@@ -40,10 +265,9 @@ export default {
|
||||
|
||||
return [uri, data, config];
|
||||
}
|
||||
|
||||
function _clean_return_value(response) {
|
||||
function clean_return_value(response) {
|
||||
if (typeof response.data === 'string' || response.data instanceof String)
|
||||
return _clean_return_value({ data: response });
|
||||
return clean_return_value({ data: response });
|
||||
|
||||
const result = response.data;
|
||||
delete response.data;
|
||||
@@ -55,10 +279,111 @@ export default {
|
||||
result.meta.response = response;
|
||||
return result;
|
||||
}
|
||||
const baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/";
|
||||
function _merge_error_config(config) {
|
||||
if (config === false || config === 'off')
|
||||
return { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };
|
||||
|
||||
if (!config || config === true)
|
||||
return { ...DEFAULT_ERROR_CONFIG };
|
||||
|
||||
if (config === 'success')
|
||||
return { ...DEFAULT_ERROR_CONFIG, fail: false };
|
||||
|
||||
if (config === 'fail')
|
||||
return { ...DEFAULT_ERROR_CONFIG, success: false };
|
||||
|
||||
const { success, fail, handler, combine } = config;
|
||||
|
||||
config = { ...DEFAULT_ERROR_CONFIG };
|
||||
|
||||
Object.entries({ fail, success }).forEach(([key, value]) => {
|
||||
if (value !== undefined)
|
||||
config[key] = value;
|
||||
});
|
||||
Object.entries({ handler, combine }).forEach(([key, value]) => {
|
||||
if (value !== undefined)
|
||||
config[key] = { ...config[key], ...value };
|
||||
});
|
||||
|
||||
return config;
|
||||
}
|
||||
function get_error_handler(config) {
|
||||
const result = _merge_error_config(config?.errorHandling);
|
||||
|
||||
if (!config?.form) {
|
||||
result.combine = { ...result.combine, form: [] };
|
||||
} else {
|
||||
const formHandler = result.handler.form;
|
||||
result.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
function get_error_list(error) {
|
||||
if (error.response) {
|
||||
if (error.response.status == 404) {
|
||||
return [{
|
||||
type: 'not_found',
|
||||
message: error.message,
|
||||
url: error.request.responseURL
|
||||
}];
|
||||
} else {
|
||||
return error.response.data.errors;
|
||||
}
|
||||
} else if (error.request) {
|
||||
return [{
|
||||
type: 'site_failed',
|
||||
message: error.message,
|
||||
url: error.request.responseURL
|
||||
}];
|
||||
} else {
|
||||
return [{
|
||||
type: 'script',
|
||||
message: error.message
|
||||
}];
|
||||
}
|
||||
}
|
||||
function popHandleableErrors(errorHandling, errors) {
|
||||
const result = {};
|
||||
const copy = [];
|
||||
while (errors.length)
|
||||
copy.push(errors.pop());
|
||||
for (var error of copy) {
|
||||
let type = error.type;
|
||||
let newType = null;
|
||||
for (var t in errorHandling.combine) {
|
||||
let newTypeCombinesType = errorHandling
|
||||
.combine[t]
|
||||
.includes(type);
|
||||
let newTypeHasHandler = errorHandling.handler[t];
|
||||
if (newTypeCombinesType && newTypeHasHandler) {
|
||||
newType = t;
|
||||
if (newType == 'form')
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (newType)
|
||||
type = newType;
|
||||
const handler = errorHandling.handler[type];
|
||||
if (handler) {
|
||||
if (!result[type])
|
||||
result[type] = [];
|
||||
if (Array.isArray(error))
|
||||
result[type].push(...error);
|
||||
else
|
||||
result[type].push(error);
|
||||
continue;
|
||||
}
|
||||
errors.push(error);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const fhcApiAxios = axios.create({
|
||||
timeout: 500000,
|
||||
baseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + "/"
|
||||
baseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root
|
||||
+ FHC_JS_DATA_STORAGE_OBJECT.ci_router
|
||||
+ "/"
|
||||
});
|
||||
|
||||
fhcApiAxios.interceptors.request.use(config => {
|
||||
@@ -100,57 +425,51 @@ export default {
|
||||
return config;
|
||||
});
|
||||
|
||||
fhcApiAxios.interceptors.response.use(response => {
|
||||
if (response.config?.errorHandling == 'off'
|
||||
|| response.config?.errorHandling === false
|
||||
|| response.config?.errorHandling == 'fail')
|
||||
return _clean_return_value(response);
|
||||
|
||||
// NOTE(chris): loop through errors
|
||||
if (response.data.errors)
|
||||
response.data.errors = response.data.errors.filter(
|
||||
err => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)
|
||||
);
|
||||
|
||||
return _clean_return_value(response);
|
||||
}, error => {
|
||||
if (error.code == 'ERR_CANCELED')
|
||||
return Promise.reject({...{handled: true}, ...error});
|
||||
|
||||
if (error.config?.errorHandling == 'off'
|
||||
|| error.config?.errorHandling === false
|
||||
|| error.config?.errorHandling == 'success')
|
||||
return Promise.reject(error);
|
||||
|
||||
if (error.response) {
|
||||
if (error.response.status == 404) {
|
||||
app.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);
|
||||
return Promise.reject({...{handled: true}, ...error});
|
||||
}
|
||||
fhcApiAxios.interceptors.response.use(
|
||||
response => {
|
||||
if (response.config?.errorHandling == 'off'
|
||||
|| response.config?.errorHandling === false
|
||||
|| response.config?.errorHandling == 'fail')
|
||||
return clean_return_value(response);
|
||||
|
||||
// NOTE(chris): loop through errors
|
||||
error.response.data.errors = error.response.data.errors.filter(
|
||||
err => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, error.config)
|
||||
);
|
||||
if (!error.response.data.errors.length)
|
||||
return Promise.reject({...{handled: true}, ...error});
|
||||
} else if (error.request) {
|
||||
app.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);
|
||||
return Promise.reject({...{handled: true}, ...error});
|
||||
} else {
|
||||
app.config.globalProperties.$fhcAlert.alertError(error.message);
|
||||
return Promise.reject({...{handled: true}, ...error});
|
||||
}
|
||||
if (response.data.errors)
|
||||
response.data.errors = response.data.errors.filter(
|
||||
err => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)
|
||||
);
|
||||
|
||||
return Promise.reject(error);
|
||||
});
|
||||
return clean_return_value(response);
|
||||
},
|
||||
error => {
|
||||
if (error.code == 'ERR_CANCELED')
|
||||
return Promise.reject({ handled: true, ...error });
|
||||
|
||||
const errorConfig = get_error_handler(error.config);
|
||||
|
||||
if (!errorConfig.fail)
|
||||
return Promise.reject(error);
|
||||
|
||||
const remaining = get_error_list(error);
|
||||
|
||||
const errors = popHandleableErrors(errorConfig, remaining);
|
||||
|
||||
for (var type in errors) {
|
||||
errorConfig.handler[type](errors[type]);
|
||||
}
|
||||
|
||||
if (remaining.length)
|
||||
return Promise.reject(error);
|
||||
|
||||
return Promise.reject({ handled: true, ...error });
|
||||
}
|
||||
);
|
||||
|
||||
app.config.globalProperties.$api = {
|
||||
getUri(url) {
|
||||
return fhcApiAxios.getUri({url});
|
||||
},
|
||||
get(form, uri, params, config) {
|
||||
[uri, params, config] = _get_config(form, uri, params, config);
|
||||
[uri, params, config] = get_config(form, uri, params, config);
|
||||
if (params) {
|
||||
if (config)
|
||||
config.params = params;
|
||||
@@ -160,82 +479,58 @@ export default {
|
||||
return fhcApiAxios.get(uri, config);
|
||||
},
|
||||
post(form, uri, data, config) {
|
||||
[uri, data, config] = _get_config(form, uri, data, config);
|
||||
[uri, data, config] = get_config(form, uri, data, config);
|
||||
return fhcApiAxios.post(uri, data, config);
|
||||
},
|
||||
call(factory, configoverwrite, form) {
|
||||
if (Array.isArray(factory)) {
|
||||
const $fhcAlert = app.config.globalProperties.$fhcAlert;
|
||||
const $api = app.config.globalProperties.$api;
|
||||
|
||||
Promise
|
||||
return Promise
|
||||
.allSettled(factory.map((config, index) => {
|
||||
if (Array.isArray(config))
|
||||
return $api.call(config[1], {
|
||||
errorHeader: config[0],
|
||||
errorHandling: false
|
||||
});
|
||||
else
|
||||
return $api.call(config, {
|
||||
errorHeader: '#' + index,
|
||||
errorHandling: false
|
||||
});
|
||||
}))
|
||||
.then(res => {
|
||||
// TODO(chris): obey form & configoverwrite
|
||||
let messagesError = [];
|
||||
let messagesSuccessful = [];
|
||||
|
||||
res.forEach(result => {
|
||||
if (result.status === 'fulfilled') {
|
||||
//console.log(JSON.parse(result.value.data));
|
||||
const successTitle = "<dt>" + result.value.data + "</dt>";
|
||||
messagesSuccessful.push(successTitle + "ok");
|
||||
} else {
|
||||
const errorTitle = "<dt>" + result.reason.config.errorHeader + "</dt>";
|
||||
const errorMsg = JSON.parse(result.reason.request.response);
|
||||
const fullMessage = errorMsg.errors.map(error => {
|
||||
if (error.type == 'validation') {
|
||||
// TODO(chris): do we want the keys?
|
||||
return '<dd>' + Object.values(error.messages).join("</dd><dd>") + '</dd>';
|
||||
}
|
||||
// TODO(chris): other types
|
||||
if (error.message)
|
||||
return '<dd>' + error.message + '</dd>';
|
||||
if (error.messages)
|
||||
return '<dd>' + error.messages.join("\n") + '</dd>';
|
||||
// TODO(chris): what to do here
|
||||
return '<dd>' + "Generic Error" + '</dd>'; // TODO(chris): translate
|
||||
}).join("\n");
|
||||
messagesError.push(errorTitle + fullMessage);
|
||||
}
|
||||
if (!Array.isArray(config))
|
||||
config = ['#' + index, config];
|
||||
return $api.call(config[1], {
|
||||
errorHeader: config[0],
|
||||
errorHandling: false
|
||||
});
|
||||
}))
|
||||
.then(result => {
|
||||
const [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});
|
||||
const errorConfig = get_error_handler(config);
|
||||
|
||||
if (messagesError.length)
|
||||
{
|
||||
const test = document.createElement('b');
|
||||
$fhcAlert.alertDefault(
|
||||
'error',
|
||||
messagesError.length + " Fehler", // TODO(chris): translate
|
||||
'<dl>' + messagesError.join("") + '</dl>',
|
||||
true,
|
||||
true
|
||||
);
|
||||
if (!errorConfig.success && !errorConfig.fail) {
|
||||
return result;
|
||||
}
|
||||
if (messagesSuccessful.length)
|
||||
{
|
||||
const test = document.createElement('b');
|
||||
$fhcAlert.alertDefault(
|
||||
'info',
|
||||
'Feedback',
|
||||
messagesSuccessful.length + " erfolgreiche Statusänderung(en) durchgeführt", // TODO(chris): translate
|
||||
false,
|
||||
true
|
||||
);
|
||||
|
||||
const typedErrors = {};
|
||||
for (var res of result) {
|
||||
const [ allowed, item ] = res.status === 'fulfilled'
|
||||
? [ errorConfig.success, res.value ]
|
||||
: [ errorConfig.fail, res.reason ];
|
||||
if (!allowed)
|
||||
return;
|
||||
|
||||
const errors = popHandleableErrors(errorConfig, get_error_list(item));
|
||||
|
||||
for (var type in errors) {
|
||||
if (!typedErrors[type])
|
||||
typedErrors[type] = {
|
||||
[item.config.errorHeader]: errors[type]
|
||||
};
|
||||
else
|
||||
typedErrors[type][item.config.errorHeader] = errors[type];
|
||||
}
|
||||
};
|
||||
|
||||
for (var errType in typedErrors) {
|
||||
errorConfig.handler[errType](typedErrors[errType]);
|
||||
}
|
||||
|
||||
return result;
|
||||
});
|
||||
}
|
||||
let {method, url, params, config} = factory;
|
||||
let { method, url, params, config } = factory;
|
||||
if (configoverwrite !== undefined) {
|
||||
config = configoverwrite;
|
||||
}
|
||||
@@ -251,141 +546,6 @@ export default {
|
||||
} else {
|
||||
console.error("FhcApi: method not allowed:", method);
|
||||
}
|
||||
},
|
||||
_defaultErrorHandlers: {
|
||||
validation(error, config) {
|
||||
const $fhcAlert = app.config.globalProperties.$fhcAlert;
|
||||
|
||||
if (config?.form) {
|
||||
config.form.clearValidation();
|
||||
config.form.setFeedback(false, error.messages);
|
||||
return false;
|
||||
}
|
||||
if (Array.isArray(error.messages)) {
|
||||
error.messages.forEach($fhcAlert.alertError);
|
||||
return false;
|
||||
} else if (typeof error.messages == 'object') {
|
||||
if (config?.errorHeader)
|
||||
Object.values(error.messages).forEach(
|
||||
value => $fhcAlert.alertDefault(
|
||||
'error',
|
||||
Array.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,
|
||||
value,
|
||||
true
|
||||
)
|
||||
);
|
||||
else
|
||||
Object.entries(error.messages).forEach(
|
||||
([key, value]) => $fhcAlert.alertDefault('error', key, value, true)
|
||||
);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
general(error, config) {
|
||||
const $fhcAlert = app.config.globalProperties.$fhcAlert;
|
||||
|
||||
if (config?.form)
|
||||
config.form.setFeedback(false, error.message);
|
||||
else if (config?.errorHeader)
|
||||
$fhcAlert.alertDefault(
|
||||
'error',
|
||||
Array.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,
|
||||
error.message,
|
||||
true
|
||||
);
|
||||
else
|
||||
$fhcAlert.alertError(error.message);
|
||||
},
|
||||
php(error) {
|
||||
const $fhcAlert = app.config.globalProperties.$fhcAlert;
|
||||
|
||||
var message = '';
|
||||
message += 'Message: ' + error.message + '\n\n';
|
||||
message += 'Filename: ' + error.filename + '\n';
|
||||
message += 'Line Number: ' + error.line + '\n';
|
||||
if (error.backtrace && error.backtrace.length) {
|
||||
message += '\nBacktrace: ';
|
||||
error.backtrace.forEach(err => {
|
||||
message += '\n\tFile: ' + err.file + '\n';
|
||||
message += '\tLine: ' + err.line + '\n';
|
||||
message += '\tFunction: ' + err.function + '\n';
|
||||
});
|
||||
}
|
||||
switch (error.severity) {
|
||||
case 'Warning':
|
||||
case 'Core Warning':
|
||||
case 'Compile Warning':
|
||||
case 'User Warning':
|
||||
$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);
|
||||
break;
|
||||
case 'Notice':
|
||||
case 'User Notice':
|
||||
case 'Runtime Notice':
|
||||
$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);
|
||||
break;
|
||||
default:
|
||||
message = 'Type: PHP ' + error.severity + '\n\n' + message;
|
||||
$fhcAlert.alertSystemError(message);
|
||||
break;
|
||||
}
|
||||
},
|
||||
exception(error) {
|
||||
const $fhcAlert = app.config.globalProperties.$fhcAlert;
|
||||
|
||||
var message = '';
|
||||
message += 'Type: ' + error.class + '\n\n';
|
||||
message += 'Message: ' + error.message + '\n\n';
|
||||
message += 'Filename: ' + error.filename + '\n';
|
||||
message += 'Line Number: ' + error.line + '\n';
|
||||
if (error.backtrace && error.backtrace.length) {
|
||||
message += '\nBacktrace: ';
|
||||
error.backtrace.forEach(err => {
|
||||
message += '\n\tFile: ' + err.file + '\n';
|
||||
message += '\tLine: ' + err.line + '\n';
|
||||
message += '\tFunction: ' + err.function + '\n';
|
||||
});
|
||||
}
|
||||
$fhcAlert.alertSystemError(message);
|
||||
},
|
||||
db(error) {
|
||||
const $fhcAlert = app.config.globalProperties.$fhcAlert;
|
||||
|
||||
var message = '';
|
||||
if (error.heading !== undefined)
|
||||
message += error.heading + '\n\n';
|
||||
if (error.code !== undefined)
|
||||
message += 'Code: ' + error.code + '\n\n';
|
||||
if (error.sql !== undefined)
|
||||
message += 'SQL: ' + error.sql + '\n\n';
|
||||
if (error.message !== undefined)
|
||||
message += 'Message: ' + error.message + '\n\n';
|
||||
else if (error.messages !== undefined)
|
||||
message += 'Messages: ' + error.messages.join('\n\t') + '\n\n';
|
||||
if (error.filename !== undefined)
|
||||
message += 'Filename: ' + error.filename + '\n';
|
||||
if (error.line !== undefined)
|
||||
message += 'Line Number: ' + error.line + '\n';
|
||||
|
||||
$fhcAlert.alertSystemError(message);
|
||||
},
|
||||
auth(error, config) {
|
||||
const $fhcAlert = app.config.globalProperties.$fhcAlert;
|
||||
|
||||
var message = '';
|
||||
message += 'Controller name: ' + error.controller + '\n';
|
||||
message += 'Method name: ' + error.method + '\n';
|
||||
message += 'Required permissions: ' + error.required_permissions;
|
||||
if (config?.errorHeader)
|
||||
$fhcAlert.alertDefault(
|
||||
'error',
|
||||
Array.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,
|
||||
error.message,
|
||||
true
|
||||
);
|
||||
else
|
||||
$fhcAlert.alertDefault('error', error.message, message);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -123,8 +123,6 @@ foreach($uid_arr as $uid)
|
||||
$studiengang_bezeichnung = empty($studiengangbezeichnung) ? $studiengang->bezeichnung : $studiengangbezeichnung;
|
||||
$studiengang_bezeichnung_englisch = empty($studiengangbezeichnung_englisch) ? $studiengang->english : $studiengangbezeichnung_englisch;
|
||||
|
||||
$svnr = ($student->svnr == '')?'Ersatzkennzeichen: '.$student->ersatzkennzeichen:$student->svnr;
|
||||
|
||||
//Wenn Lehrgang, dann Erhalter-KZ vor die Studiengangs-Kz hängen
|
||||
if ($studiengang->studiengang_kz<0)
|
||||
{
|
||||
@@ -146,7 +144,6 @@ foreach($uid_arr as $uid)
|
||||
echo "\t\t<gebdatum>".$gebdatum."</gebdatum>\n";
|
||||
echo "\t\t<gebort>".$student->gebort."</gebort>\n";
|
||||
echo "\t\t<staatsbuergerschaft>".$staatsbuergerschaft->langtext."</staatsbuergerschaft>\n";
|
||||
echo "\t\t<svnr>".$svnr."</svnr>\n";
|
||||
echo "\t\t<matrikelnr>".trim($student->matrikelnr)."</matrikelnr>\n";
|
||||
echo "\t\t<studiengang>".$db->convert_html_chars($studiengang_bezeichnung)."</studiengang>\n";
|
||||
echo "\t\t<studiengang_englisch>".$db->convert_html_chars($studiengang_bezeichnung_englisch)."</studiengang_englisch>\n";
|
||||
@@ -340,8 +337,6 @@ foreach($prestudent_arr as $prest_id)
|
||||
$studiengang_bezeichnung = empty($studiengangbezeichnung) ? $studiengang->bezeichnung : $studiengangbezeichnung;
|
||||
$studiengang_bezeichnung_englisch = empty($studiengangbezeichnung_englisch) ? $studiengang->english : $studiengangbezeichnung_englisch;
|
||||
|
||||
$svnr = ($person->svnr == '')?($person->ersatzkennzeichen != ''?'Ersatzkennzeichen: '.$person->ersatzkennzeichen:''):$person->svnr;
|
||||
|
||||
//Wenn Lehrgang, dann Erhalter-KZ vor die Studiengangs-Kz hängen
|
||||
if ($studiengang->studiengang_kz<0)
|
||||
{
|
||||
@@ -363,7 +358,6 @@ foreach($prestudent_arr as $prest_id)
|
||||
echo "\t\t<gebdatum>".$gebdatum."</gebdatum>\n";
|
||||
echo "\t\t<gebort>".$person->gebort."</gebort>\n";
|
||||
echo "\t\t<staatsbuergerschaft>".$staatsbuergerschaft->langtext."</staatsbuergerschaft>\n";
|
||||
echo "\t\t<svnr>".$svnr."</svnr>\n";
|
||||
echo "\t\t<studiengang>".$db->convert_html_chars($studiengang_bezeichnung)."</studiengang>\n";
|
||||
echo "\t\t<studiengang_englisch>".$db->convert_html_chars($studiengang_bezeichnung_englisch)."</studiengang_englisch>\n";
|
||||
echo "\t\t<studiengang_kurzbz>".$studiengang->kurzbzlang."</studiengang_kurzbz>\n";
|
||||
|
||||
+2
-7
@@ -235,7 +235,6 @@ function draw_content_liste($row)
|
||||
<STUDENT:vorname><![CDATA['.$row->vorname.']]></STUDENT:vorname>
|
||||
<STUDENT:nachname><![CDATA['.$row->nachname.']]></STUDENT:nachname>
|
||||
<STUDENT:geschlecht><![CDATA['.$row->geschlecht.']]></STUDENT:geschlecht>
|
||||
<STUDENT:svnr>'.($row->svnr==''?' ':'<![CDATA['.$row->svnr.']]>').'</STUDENT:svnr>
|
||||
<STUDENT:ersatzkennzeichen>'.($row->ersatzkennzeichen==''?' ':'<![CDATA['.$row->ersatzkennzeichen.']]>').'</STUDENT:ersatzkennzeichen>
|
||||
<STUDENT:geburtsdatum><![CDATA['.$datum_obj->convertISODate($row->gebdatum).']]></STUDENT:geburtsdatum>
|
||||
<STUDENT:geburtsdatum_iso><![CDATA['.$row->gebdatum.']]></STUDENT:geburtsdatum_iso>
|
||||
@@ -349,7 +348,6 @@ function draw_content($row)
|
||||
<STUDENT:gebzeit><![CDATA['.$row->gebzeit.']]></STUDENT:gebzeit>
|
||||
<STUDENT:anmerkungen>'.($row->anmerkungen==''?' ':'<![CDATA['.$row->anmerkungen.']]>').'</STUDENT:anmerkungen>
|
||||
<STUDENT:anrede><![CDATA['.$row->anrede.']]></STUDENT:anrede>
|
||||
<STUDENT:svnr><![CDATA['.$row->svnr.']]></STUDENT:svnr>
|
||||
<STUDENT:ersatzkennzeichen><![CDATA['.$row->ersatzkennzeichen.']]></STUDENT:ersatzkennzeichen>
|
||||
<STUDENT:familienstand><![CDATA['.$row->familienstand.']]></STUDENT:familienstand>
|
||||
<STUDENT:geschlecht><![CDATA['.$row->geschlecht.']]></STUDENT:geschlecht>
|
||||
@@ -470,7 +468,6 @@ function draw_empty_content()
|
||||
<STUDENT:gebzeit><![CDATA[]]></STUDENT:gebzeit>
|
||||
<STUDENT:anmerkungen><![CDATA[]]></STUDENT:anmerkungen>
|
||||
<STUDENT:anrede><![CDATA[]]></STUDENT:anrede>
|
||||
<STUDENT:svnr><![CDATA[]]></STUDENT:svnr>
|
||||
<STUDENT:ersatzkennzeichen><![CDATA[]]></STUDENT:ersatzkennzeichen>
|
||||
<STUDENT:familienstand><![CDATA[]]></STUDENT:familienstand>
|
||||
<STUDENT:geschlecht><![CDATA[]]></STUDENT:geschlecht>
|
||||
@@ -647,7 +644,7 @@ if($xmlformat=='rdf')
|
||||
$sql_query="
|
||||
SELECT
|
||||
p.person_id, tbl_student.prestudent_id, tbl_benutzer.uid, titelpre, titelpost,vorname, wahlname, vornamen, geschlecht,
|
||||
nachname, gebdatum, tbl_prestudent.anmerkung,ersatzkennzeichen,svnr, tbl_student.matrikelnr, p.anmerkung as anmerkungen,
|
||||
nachname, gebdatum, tbl_prestudent.anmerkung,ersatzkennzeichen, tbl_student.matrikelnr, p.anmerkung as anmerkungen,
|
||||
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
|
||||
tbl_student.studiengang_kz, aufmerksamdurch_kurzbz, mentor, public.tbl_benutzer.aktiv AS bnaktiv,
|
||||
( SELECT kontakt
|
||||
@@ -985,8 +982,7 @@ if($xmlformat=='rdf')
|
||||
$qry .= " prestudent_id = ".$db->db_add_param($searchItems_string_orig).";";
|
||||
else
|
||||
$qry .= " matrikelnr = ".$db->db_add_param($searchItems_string_orig)." OR
|
||||
matr_nr = ".$db->db_add_param($searchItems_string_orig)." OR
|
||||
svnr = ".$db->db_add_param($searchItems_string_orig).";";
|
||||
matr_nr = ".$db->db_add_param($searchItems_string_orig).";";
|
||||
}
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
@@ -1282,7 +1278,6 @@ else
|
||||
<lv_studiengang_art><![CDATA['.$lv_studiengang_art.']]></lv_studiengang_art>
|
||||
<anrede><![CDATA['.$student->anrede.']]></anrede>
|
||||
<geschlecht><![CDATA['.$student->geschlecht.']]></geschlecht>
|
||||
<svnr><![CDATA['.$student->svnr.']]></svnr>
|
||||
<ersatzkennzeichen><![CDATA['.$student->ersatzkennzeichen.']]></ersatzkennzeichen>
|
||||
<familienstand><![CDATA['.$student->familienstand.']]></familienstand>
|
||||
<rektor><![CDATA['.$rektor.']]></rektor>
|
||||
|
||||
@@ -105,9 +105,6 @@ foreach($uid_arr as $uid)
|
||||
$staatsbuergerschaft = new nation();
|
||||
$staatsbuergerschaft->load($student->staatsbuergerschaft);
|
||||
|
||||
|
||||
$svnr = ($student->svnr == '')?'Ersatzkennzeichen: '.$student->ersatzkennzeichen:$student->svnr;
|
||||
|
||||
$geschlecht_obj = new geschlecht();
|
||||
$geschlecht_obj->load($student->geschlecht);
|
||||
|
||||
@@ -143,7 +140,6 @@ foreach($uid_arr as $uid)
|
||||
echo "\t\t<gebdatum><![CDATA[".$gebdatum."]]></gebdatum>\n";
|
||||
echo "\t\t<gebort><![CDATA[".$student->gebort."]]></gebort>\n";
|
||||
echo "\t\t<staatsbuergerschaft><![CDATA[".$staatsbuergerschaft->langtext."]]></staatsbuergerschaft>\n";
|
||||
echo "\t\t<svnr><![CDATA[".$svnr."]]></svnr>\n";
|
||||
echo "\t\t<matr_nr><![CDATA[".trim($student->matr_nr)."]]></matr_nr>\n";
|
||||
echo "\t\t<matrikelnr><![CDATA[".trim($student->matrikelnr)."]]></matrikelnr>\n";
|
||||
echo "\t\t<studiengang><![CDATA[".$studienordnung->studiengangbezeichnung."]]></studiengang>\n";
|
||||
|
||||
@@ -1475,6 +1475,26 @@ $phrases = array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'n_errors',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => '{n} Fehler',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => '{n} Error(s)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
|
||||
@@ -1167,8 +1167,7 @@ if ($where != '')
|
||||
}
|
||||
}
|
||||
$status = mb_substr($status, 0, mb_strlen($status)-2);
|
||||
|
||||
echo '<tr valign="top"><td><input type="radio" name="person_id" value="'.$row->person_id.'" onclick="disablefields(this)"></td><td>'."$row->nachname</td><td>$row->vorname</td><td>$row->wahlname</td><td>$row->vornamen</td><td>$row->gebdatum</td><td>$row->svnr</td><td>".($row->geschlecht=='m'?'männlich':'weiblich')."</td><td>";
|
||||
echo '<tr valign="top"><td><input type="radio" name="person_id" value="'.$row->person_id.'" onclick="disablefields(this)"></td><td>'."$row->nachname</td><td>$row->vorname</td><td>$row->wahlname</td><td>$row->vornamen</td><td>$row->gebdatum</td><td>".((strpos($status, 'Mitarbeiter') !== false) ? $row->svnr : '')."</td><td>".($row->geschlecht=='m'?'männlich':'weiblich')."</td><td>";
|
||||
$qry_adr = "SELECT * FROM public.tbl_adresse WHERE person_id=".$db->db_add_param($row->person_id, FHC_INTEGER);
|
||||
if ($result_adr = $db->db_query($qry_adr))
|
||||
while ($row_adr = $db->db_fetch_object($result_adr))
|
||||
|
||||
@@ -125,6 +125,7 @@ $verband = (isset($_POST['verband'])?$_POST['verband']:'');
|
||||
$gruppe = (isset($_POST['gruppe'])?$_POST['gruppe']:'');
|
||||
$dms_id_lichtbild = '';
|
||||
|
||||
$is_mitarbeiter = false;
|
||||
if($uid!='')
|
||||
{
|
||||
$qry = "SELECT person_id, true as mitarbeiter FROM campus.vw_mitarbeiter WHERE uid=".$db->db_add_param($uid)."
|
||||
@@ -144,7 +145,17 @@ if($uid!='')
|
||||
else
|
||||
die('Fehler beim Ermitteln der UID');
|
||||
}
|
||||
|
||||
else if ($person_id !='')
|
||||
{
|
||||
$qry = "SELECT person_id, true as mitarbeiter FROM campus.vw_mitarbeiter WHERE person_id=".$db->db_add_param($person_id);
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
if($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$is_mitarbeiter = ($row->mitarbeiter=='t'?true:false);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isset($_POST['saveperson']))
|
||||
{
|
||||
if(!$rechte->isBerechtigt('student/stammdaten', null, 'su') && !$rechte->isBerechtigt('mitarbeiter/stammdaten', null, 'su'))
|
||||
@@ -163,7 +174,8 @@ if(isset($_POST['saveperson']))
|
||||
$person->gebdatum = $geburtsdatum;
|
||||
$person->gebort = $geburtsort;
|
||||
$person->geburtsnation = $geburtsnation;
|
||||
$person->svnr = $svnr;
|
||||
if ($is_mitarbeiter)
|
||||
$person->svnr = $svnr;
|
||||
$person->ersatzkennzeichen = $ersatzkennzeichen;
|
||||
$person->gebzeit = $geburtszeit;
|
||||
$person->staatsbuergerschaft = $staatsbuergerschaft;
|
||||
@@ -332,7 +344,8 @@ if(!$error_person_save)
|
||||
$geburtsdatum = $person->gebdatum;
|
||||
$geburtsort = $person->gebort;
|
||||
$geburtsnation = $person->geburtsnation;
|
||||
$svnr = $person->svnr;
|
||||
if ($is_mitarbeiter)
|
||||
$svnr = $person->svnr;
|
||||
$ersatzkennzeichen = $person->ersatzkennzeichen;
|
||||
$geburtszeit = $person->gebzeit;
|
||||
$staatsbuergerschaft = $person->staatsbuergerschaft;
|
||||
@@ -398,10 +411,16 @@ foreach ($nation->nation as $row_nation)
|
||||
echo "</SELECT>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>SVNR</td>
|
||||
<td><input type='text' name='svnr' value='".$svnr."'/></td>
|
||||
<td>Ersatzkennzeichen</td>
|
||||
<tr>";
|
||||
|
||||
if ($is_mitarbeiter)
|
||||
{
|
||||
echo "<td>SVNR</td>
|
||||
<td><input type='text' name='svnr' value='".$svnr."'/></td>";
|
||||
}
|
||||
|
||||
echo
|
||||
"<td>Ersatzkennzeichen</td>
|
||||
<td><input type='text' name='ersatzkennzeichen' value='".$ersatzkennzeichen."'/></td>
|
||||
<td>Geburtszeit</td>
|
||||
<td><input type='text' name='geburtszeit' value='".$geburtszeit."'/></td>
|
||||
|
||||
@@ -140,7 +140,6 @@ function disablefields(obj)
|
||||
document.getElementById('vorname').disabled=val;
|
||||
document.getElementById('geschlecht').disabled=val;
|
||||
document.getElementById('geburtsdatum').disabled=val;
|
||||
document.getElementById('svnr').disabled=val;
|
||||
document.getElementById('ersatzkennzeichen').disabled=val;
|
||||
//document.getElementById('adresse').disabled=val;
|
||||
//document.getElementById('plz').disabled=val;
|
||||
@@ -159,21 +158,6 @@ function disablefields(obj)
|
||||
}
|
||||
}
|
||||
|
||||
function GeburtsdatumEintragen()
|
||||
{
|
||||
svnr = document.getElementById('svnr').value;
|
||||
gebdat = document.getElementById('geburtsdatum');
|
||||
|
||||
if(svnr.length==10 && gebdat.value=='')
|
||||
{
|
||||
var tag = svnr.substr(4,2);
|
||||
var monat = svnr.substr(6,2);
|
||||
var jahr = svnr.substr(8,2);
|
||||
|
||||
gebdat.value='19'+jahr+'-'+monat+'-'+tag;
|
||||
}
|
||||
}
|
||||
|
||||
function disablefields2(val)
|
||||
{
|
||||
document.getElementById('adresse').disabled=val;
|
||||
@@ -368,7 +352,6 @@ $email = (isset($_REQUEST['email'])?$_REQUEST['email']:'');
|
||||
$telefon = (isset($_REQUEST['telefon'])?$_REQUEST['telefon']:'');
|
||||
$mobil = (isset($_REQUEST['mobil'])?$_REQUEST['mobil']:'');
|
||||
$person_id = (isset($_REQUEST['person_id'])?$_REQUEST['person_id']:'');
|
||||
$svnr = (isset($_REQUEST['svnr'])?$_REQUEST['svnr']:'');
|
||||
$ersatzkennzeichen = (isset($_REQUEST['ersatzkennzeichen'])?$_REQUEST['ersatzkennzeichen']:'');
|
||||
$ueberschreiben = (isset($_REQUEST['ueberschreiben'])?$_REQUEST['ueberschreiben']:'');
|
||||
|
||||
@@ -413,7 +396,6 @@ if(isset($_POST['save']))
|
||||
$person->geschlecht = $geschlecht;
|
||||
$person->gebdatum = $datum_obj->formatDatum($geburtsdatum,'Y-m-d');
|
||||
$person->staatsbuergerschaft = $nation;
|
||||
$person->svnr = $svnr;
|
||||
$person->ersatzkennzeichen = $ersatzkennzeichen;
|
||||
$person->aktiv = true;
|
||||
$person->insertamum = date('Y-m-d H:i:s');
|
||||
@@ -689,39 +671,38 @@ if($result = $db->db_query($qry))
|
||||
}
|
||||
echo '</SELECT>';
|
||||
echo '</td></tr>';
|
||||
echo '<tr><td>SVNR</td><td><input type="text" id="svnr" size="10" maxlength="10" name="svnr" value="'.$svnr.'" onblur="GeburtsdatumEintragen()" /></td></tr>';
|
||||
echo '<tr><td>Ersatzkennzeichen</td><td><input type="text" id="ersatzkennzeichen" size="10" maxlength="10" name="ersatzkennzeichen" value="'.$ersatzkennzeichen.'" /></td></tr>';
|
||||
echo '<tr><td>Geburtsdatum</td><td><input type="text" id="geburtsdatum" size="10" maxlength="10" name="geburtsdatum" value="'.$geburtsdatum.'" /> (Format dd.mm.JJJJ)</td></tr>';
|
||||
echo '<tr><td>Geburtsort</td><td><input type="text" id="gebort" size="30" maxlength="255" name="gebort" value="'.$gebort.'" /></td></tr>';
|
||||
echo '<tr><td>Geburtsnation</td><td><SELECT name="geburtsnation">';
|
||||
$qry = "SELECT nation_code, kurztext FROM bis.tbl_nation ORDER BY kurztext";
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
if($row->nation_code==$geburtsnation)
|
||||
$selected='selected';
|
||||
else
|
||||
$selected='';
|
||||
|
||||
echo "<option value='$row->nation_code' $selected>$row->kurztext</option>";
|
||||
}
|
||||
}
|
||||
echo '</SELECT>';
|
||||
echo '<tr><td>Geburtsnation</td><td><SELECT name="geburtsnation">';
|
||||
$qry = "SELECT nation_code, kurztext FROM bis.tbl_nation ORDER BY kurztext";
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
if($row->nation_code==$geburtsnation)
|
||||
$selected='selected';
|
||||
else
|
||||
$selected='';
|
||||
|
||||
echo "<option value='$row->nation_code' $selected>$row->kurztext</option>";
|
||||
}
|
||||
}
|
||||
echo '</SELECT>';
|
||||
echo '</td></tr>';
|
||||
echo '<tr><td>Sprache</td><td><SELECT name="sprache">';
|
||||
echo '<tr><td>Sprache</td><td><SELECT name="sprache">';
|
||||
$sprache_obj = new sprache();
|
||||
$sprache_obj->getAll();
|
||||
foreach($sprache_obj->result as $row)
|
||||
{
|
||||
if($row->sprache==$sprache)
|
||||
$selected='selected';
|
||||
else
|
||||
$selected='';
|
||||
|
||||
echo "<option value='$row->sprache' $selected>".$row->bezeichnung_arr['German']."</option>";
|
||||
}
|
||||
echo '</SELECT>';
|
||||
{
|
||||
if($row->sprache==$sprache)
|
||||
$selected='selected';
|
||||
else
|
||||
$selected='';
|
||||
|
||||
echo "<option value='$row->sprache' $selected>".$row->bezeichnung_arr['German']."</option>";
|
||||
}
|
||||
echo '</SELECT>';
|
||||
echo '</td></tr>';
|
||||
echo '<tr><td colspan="2"><fieldset><legend>Adresse</legend><table>';
|
||||
echo '<tr><td>Nation</td><td><SELECT name="adresse_nation" id="adresse_nation" onchange="loadGemeindeData()">';
|
||||
@@ -884,7 +865,7 @@ if($where!='')
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->getAll('typ, kurzbz', false);
|
||||
|
||||
echo '<table><tr><th></th><th>Nachname</th><th>Vorname</th><th>GebDatum</th><th>SVNR</th><th>Geschlecht</th><th>Adresse</th><th>Status</th><th>Details</th></tr>';
|
||||
echo '<table><tr><th></th><th>Nachname</th><th>Vorname</th><th>GebDatum</th><th>Geschlecht</th><th>Adresse</th><th>Status</th><th>Details</th></tr>';
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$status = '';
|
||||
@@ -905,7 +886,7 @@ if($where!='')
|
||||
}
|
||||
$status = mb_substr($status, 0, mb_strlen($status)-2);
|
||||
|
||||
echo '<tr valign="top"><td><input type="radio" name="person_id" value="'.$row->person_id.'" onclick="disablefields(this)"></td><td>'."$row->nachname</td><td>$row->vorname</td><td>$row->gebdatum</td><td>$row->svnr</td><td>".($row->geschlecht=='m'?'männlich':'weiblich')."</td><td>";
|
||||
echo '<tr valign="top"><td><input type="radio" name="person_id" value="'.$row->person_id.'" onclick="disablefields(this)"></td><td>'."$row->nachname</td><td>$row->vorname</td><td>$row->gebdatum</td><td>".((strpos($status, 'Mitarbeiter') !== false) ? $row->svnr : '')."</td><td>".($row->geschlecht=='m'?'männlich':'weiblich')."</td><td>";
|
||||
$qry_adr = "SELECT * FROM public.tbl_adresse WHERE person_id='$row->person_id'";
|
||||
if($result_adr = $db->db_query($qry_adr))
|
||||
while($row_adr=$db->db_fetch_object($result_adr))
|
||||
|
||||
@@ -338,7 +338,6 @@ if(isset($_POST['saveperson']))
|
||||
$person->gebzeit = $_POST['gebzeit'];
|
||||
$person->anmerkungen = $_POST['anmerkungen'];
|
||||
$person->homepage = $_POST['homepage'];
|
||||
$person->svnr = $_POST['svnr'];
|
||||
$person->ersatzkennzeichen = $_POST['ersatzkennzeichen'];
|
||||
$person->familienstand = $_POST['familienstand'];
|
||||
$person->geschlecht = $_POST['geschlecht'];
|
||||
@@ -606,8 +605,6 @@ if($result = $db->db_query($qry))
|
||||
}
|
||||
echo '</SELECT></td>';
|
||||
echo '</tr><tr>';
|
||||
//SVNR
|
||||
echo "<td>SVNR:</td><td><input type='text' name='svnr' ".($disabled?'disabled':'')." value='".$person->svnr."'></td>";
|
||||
//Ersatzkennzeichen
|
||||
echo "<td>Ersatzkennzeichen</td><td><input type='text' name='ersatzkennzeichen' ".($disabled?'disabled':'')." value='".$person->ersatzkennzeichen."'></td>";
|
||||
//Geschlecht
|
||||
|
||||
@@ -61,7 +61,6 @@ header( 'Content-Disposition: attachment;filename='.$filename);
|
||||
$qry="
|
||||
SELECT * FROM (
|
||||
SELECT DISTINCT ON (matrikelnr) matrikelnr AS personenkennzeichen,
|
||||
tbl_person.svnr,
|
||||
tbl_person.ersatzkennzeichen,
|
||||
tbl_person.gebdatum,
|
||||
tbl_person.nachname,
|
||||
|
||||
@@ -60,7 +60,6 @@ header( 'Content-Disposition: attachment;filename='.$filename);
|
||||
$qry="
|
||||
SELECT * FROM (
|
||||
SELECT DISTINCT ON (matrikelnr) matrikelnr AS personenkennzeichen,
|
||||
tbl_person.svnr,
|
||||
tbl_person.ersatzkennzeichen,
|
||||
tbl_person.gebdatum,
|
||||
tbl_person.nachname,
|
||||
|
||||
Reference in New Issue
Block a user