Merge branch 'master' into feature-17512/Issues_Plausibilitaetspruefungen

This commit is contained in:
Andreas Österreicher
2023-02-09 16:04:33 +01:00
77 changed files with 2963 additions and 1190 deletions
@@ -121,6 +121,7 @@ class InfoCenter extends Auth_Controller
'unlockPerson' => 'infocenter:rw',
'saveFormalGeprueft' => 'infocenter:rw',
'saveDocTyp' => 'infocenter:rw',
'updateStammdaten' => 'infocenter:rw',
'saveNachreichung' => 'infocenter:rw',
'getPrestudentData' => 'infocenter:r',
'getLastPrestudentWithZgvJson' => 'infocenter:r',
@@ -172,11 +173,16 @@ class InfoCenter extends Auth_Controller
$this->load->model('codex/Zgv_model', 'ZgvModel');
$this->load->model('codex/Zgvmaster_model', 'ZgvmasterModel');
$this->load->model('codex/Nation_model', 'NationModel');
$this->load->model('person/Kontakt_model', 'KontaktModel');
$this->load->model('person/Geschlecht_model', 'GeschlechtModel');
$this->load->model('person/adresse_model', 'AdresseModel');
// Loads libraries
$this->load->library('PersonLogLib');
$this->load->library('WidgetLib');
$this->load->config('infocenter');
$this->loadPhrases(
array(
'global',
@@ -1111,14 +1117,14 @@ class InfoCenter extends Auth_Controller
public function reloadDoks($person_id)
{
$dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true);
$dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true, false);
$this->load->view('system/infocenter/dokNachzureichend.php', array('dokumente_nachgereicht' => $dokumente_nachgereicht->retval));
}
public function reloadUebersichtDoks($person_id)
{
$dokumente = $this->AkteModel->getAktenWithDokInfo($person_id, null, false);
$dokumente = $this->AkteModel->getAktenWithDokInfo($person_id, null, false, false);
$this->DokumentModel->addOrder('bezeichnung');
$dokumentdata = array('dokumententypen' => (getData($this->DokumentModel->load())));
@@ -1320,6 +1326,126 @@ class InfoCenter extends Auth_Controller
$this->outputJsonSuccess('success');
}
public function updateStammdaten()
{
if (isEmptyString($this->input->post('nachname')) ||
isEmptyString($this->input->post('geschlecht')) ||
isEmptyString($this->input->post('gebdatum')))
{
$this->terminateWithJsonError($this->p->t('infocenter', 'stammdatenFeldFehlt'));
}
$datum = explode('.', $this->input->post('gebdatum'));
if (!checkdate($datum[1], $datum[0], $datum[2]))
{
$this->terminateWithJsonError($this->p->t('infocenter', 'datumUngueltig'));
}
$person_id = $this->input->post('personid');
$update = $this->PersonModel->update(
array
(
'person_id' => $person_id
),
array
(
'titelpre' => isEmptyString($this->input->post('titelpre')) ? null : $this->input->post('titelpre'),
'vorname' => isEmptyString($this->input->post('vorname')) ? null : $this->input->post('vorname'),
'nachname' => $this->input->post('nachname'),
'titelpost' => isEmptyString($this->input->post('titelpost')) ? null : $this->input->post('titelpost'),
'gebdatum' => isEmptyString($this->input->post('gebdatum')) ? null : date("Y-m-d", strtotime($this->input->post('gebdatum'))),
'svnr' => isEmptyString($this->input->post('svnr')) ? null : $this->input->post('svnr'),
'staatsbuergerschaft' => isEmptyString($this->input->post('buergerschaft')) ? null : $this->input->post('buergerschaft'),
'geschlecht' => $this->input->post('geschlecht'),
'geburtsnation' => isEmptyString($this->input->post('gebnation')) ? null : $this->input->post('gebnation'),
'gebort' => isEmptyString($this->input->post('gebort')) ? null : $this->input->post('gebort'),
'updateamum' => date('Y-m-d H:i:s'),
'updatevon' => $this->_uid
)
);
if (isError($update))
$this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern'));
$kontakte = $this->input->post('kontakt');
foreach ($kontakte as $kontakt)
{
$kontaktExists = $this->KontaktModel->loadWhere(array(
'kontakt_id' => $kontakt['id'],
'person_id' => $person_id,
));
if (hasData($kontaktExists))
{
$kontaktExists = getData($kontaktExists)[0];
if ($kontaktExists->kontakt === $kontakt['value'])
continue;
$update = $this->KontaktModel->update(
array
(
'kontakt_id' => $kontakt['id']
),
array
(
'kontakt' => isEmptyString($kontakt['value']) ? null : $kontakt['value'],
'updateamum' => date('Y-m-d H:i:s'),
'updatevon' => $this->_uid
)
);
if (isError($update))
$this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern'));
}
}
$adressen = $this->input->post('adresse');
foreach ($adressen as $adresse)
{
$adresseExists = $this->AdresseModel->loadWhere(array(
'adresse_id' => $adresse['id'],
'person_id' => $person_id,
));
if (hasData($adresseExists))
{
$adresse = $adresse['value'];
$adresseExists = getData($adresseExists)[0];
if ($adresseExists->strasse !== $adresse['strasse'] ||
$adresseExists->plz !== $adresse['plz'] ||
$adresseExists->ort !== $adresse['ort'] ||
$adresseExists->nation !== $adresse['nation'])
{
$update = $this->AdresseModel->update(
array
(
'adresse_id' => $adresseExists->adresse_id
),
array
(
'strasse' => isEmptyString($adresse['strasse']) ? null : $adresse['strasse'],
'plz' => isEmptyString($adresse['plz']) ? null : $adresse['plz'],
'ort' => isEmptyString($adresse['ort']) ? null : $adresse['ort'],
'nation' => isEmptyString($adresse['nation']) ? null : $adresse['nation'],
'updateamum' => date('Y-m-d H:i:s'),
'updatevon' => $this->_uid
)
);
if (isError($update))
$this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern'));
}
}
}
$this->outputJsonSuccess('Success');
}
public function saveNachreichung($person_id)
{
$nachreichungAm = $this->input->post('nachreichungAm');
@@ -1794,14 +1920,14 @@ class InfoCenter extends Auth_Controller
if (!isset($stammdaten->retval))
return null;
$dokumente = $this->AkteModel->getAktenWithDokInfo($person_id, null, false);
$dokumente = $this->AkteModel->getAktenWithDokInfo($person_id, null, false, false);
if (isError($dokumente))
{
show_error(getError($dokumente));
}
$dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true);
$dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true, false);
if (isError($dokumente_nachgereicht))
{
@@ -1996,6 +2122,12 @@ class InfoCenter extends Auth_Controller
$this->NationModel->addOrder('langtext');
$allNations = getData($this->NationModel->load());
$additional_stg = explode(',', ($this->config->item('infocenter_studiengang_kz')));
$this->GeschlechtModel->addOrder('sort');
$allGenders = getData($this->GeschlechtModel->load());
$data = array (
'zgvpruefungen' => $zgvpruefungen,
'abwstatusgruende' => $abwstatusgruende,
@@ -2004,6 +2136,8 @@ class InfoCenter extends Auth_Controller
'all_zgvs' => $allZGVs,
'all_zgvs_master' => $allZGVsMaster,
'all_nations' => $allNations,
'additional_stg' => $additional_stg,
'all_genders' => $allGenders
);
return $data;
@@ -2164,8 +2298,8 @@ class InfoCenter extends Auth_Controller
$prestudentstatus = $prestudent->prestudentstatus;
$person_id = $prestudent->person_id;
$person = $this->PersonModel->getPersonStammdaten($person_id, true)->retval;
$dokumente = $this->AkteModel->getAktenWithDokInfo($person_id, null, false)->retval;
$dokumenteNachzureichen = $this->AkteModel->getAktenWithDokInfo($person_id, null, true)->retval;
$dokumente = $this->AkteModel->getAktenWithDokInfo($person_id, null, false, false)->retval;
$dokumenteNachzureichen = $this->AkteModel->getAktenWithDokInfo($person_id, null, true, false)->retval;
//fill mail variables
$interessentbez = $person->geschlecht == 'm' ? 'Ein Interessent' : 'Eine Interessentin';
@@ -2262,12 +2396,10 @@ class InfoCenter extends Auth_Controller
public function getAbsageData()
{
$studiengang_kz_all = $this->permissionlib->getSTG_isEntitledFor('infocenter');
$stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, ['b', 'm']);
$stg_typ = $this->getStudienArtBerechtigung(['b', 'm']);
if (hasData($stg_typ))
if (!is_null($stg_typ))
{
$stg_typ = getData($stg_typ);
$statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
$studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(array_column($stg_typ, 'typ'), $studienSemester);
@@ -2283,15 +2415,16 @@ class InfoCenter extends Auth_Controller
$this->outputJsonSuccess(null);
}
public function getStudienArtBerechtigung()
public function getStudienArtBerechtigung($typ = null)
{
$studiengang_kz_all = $this->permissionlib->getSTG_isEntitledFor('infocenter');
$stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, ['b', 'm', 'l']);
$stg_typ = $this->StudiengangModel->getStudiengangTyp($studiengang_kz_all, $typ);
return getData($stg_typ);
}
public function getStudienartData()
{
$this->outputJsonSuccess($this->getStudienArtBerechtigung());
$this->outputJsonSuccess($this->getStudienArtBerechtigung(['b', 'm', 'l']));
}
public function saveAbsageForAll()
+4 -1
View File
@@ -171,7 +171,7 @@ class Akte_model extends DB_Model
* @param bool $nachgereicht if true, retrieves only nachgereichte Dokumente. if false, only not nachgereichte. default: null, all Dokumente
* @return array
*/
public function getAktenWithDokInfo($person_id, $dokument_kurzbz = null, $nachgereicht = null)
public function getAktenWithDokInfo($person_id, $dokument_kurzbz = null, $nachgereicht = null, $archiv = null)
{
$this->addSelect('public.tbl_akte.*, bezeichnung_mehrsprachig, dokumentbeschreibung_mehrsprachig, public.tbl_dokument.bezeichnung as dokument_bezeichnung, bis.tbl_nation.*, ausstellungsdetails');
$this->addJoin('public.tbl_dokument', 'dokument_kurzbz');
@@ -184,6 +184,9 @@ class Akte_model extends DB_Model
if(is_bool($nachgereicht))
$where['nachgereicht'] = $nachgereicht;
if (is_bool($archiv))
$where['archiv'] = $archiv;
$dokumente = $this->loadWhere($where);
if($dokumente->error) return $dokumente;
+29 -3
View File
@@ -309,13 +309,39 @@ class Prestudent_model extends DB_Model
*/
public function getLastPrestudent($person_id, $withzgv = false)
{
$qry = 'SELECT * FROM public.tbl_prestudent
WHERE person_id = ?
$qry = 'SELECT * FROM public.tbl_prestudent ps
%s
WHERE ps.person_id = ?
ORDER BY updateamum DESC NULLS LAST, insertamum DESC NULLS LAST
LIMIT 1';
$zgvwhere = $withzgv === true ? 'AND zgv_code IS NOT NULL' : '';
$zgvwhere = '';
if ($withzgv === true)
{
$zgvwhere = '
LEFT JOIN (
SELECT ps2.zgvmas_code,
ps2.zgvmanation,
ps2.zgvmadatum,
ps2.zgvmaort,
ps2.zgvmas_erfuellt,
ps2.person_id
FROM tbl_prestudent ps2
WHERE zgvmas_code IS NOT NULL
ORDER BY updateamum DESC NULLS LAST, insertamum DESC NULLS LAST
) zgvmas ON zgvmas.person_id = ps.person_id
LEFT JOIN (
SELECT ps2.zgv_code,
ps2.zgvnation,
ps2.zgvdatum,
ps2.zgvort,
ps2.zgv_erfuellt,
ps2.person_id
FROM tbl_prestudent ps2
WHERE zgv_code IS NOT NULL
ORDER BY updateamum DESC NULLS LAST, insertamum DESC NULLS LAST
)zgv ON zgv.person_id = ps.person_id';
}
$qry = sprintf($qry, $zgvwhere);
@@ -508,13 +508,20 @@ class Studiengang_model extends DB_Model
return $this->execQuery($query, array($typ, $semester));
}
public function getStudiengangTyp($studiengang_kz, $typ)
public function getStudiengangTyp($studiengang_kz, $typ = null)
{
$query = "SELECT DISTINCT(sgt.*)
FROM tbl_studiengangstyp sgt JOIN tbl_studiengang sg on sgt.typ = sg.typ
WHERE studiengang_kz IN ? and sgt.typ IN ?";
WHERE studiengang_kz IN ?";
return $this->execQuery($query, array($studiengang_kz, $typ));
$params[] = $studiengang_kz;
if (!is_null($typ))
{
$query .= " AND sgt.typ IN ?";
$params[] = $typ;
}
return $this->execQuery($query, $params);
}
}
@@ -0,0 +1,14 @@
<?php
class Geschlecht_model extends DB_Model
{
/**
*
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'public.tbl_geschlecht';
$this->pk = 'geschlecht';
}
}
@@ -25,7 +25,8 @@
'public/js/infocenter/messageList.js',
'public/js/infocenter/infocenterDetails.js',
'public/js/infocenter/zgvUeberpruefung.js',
'public/js/infocenter/docUeberpruefung.js'
'public/js/infocenter/docUeberpruefung.js',
'public/js/infocenter/stammdaten.js'
),
'phrases' => array(
'infocenter' => array(
@@ -1,60 +1,104 @@
<div class="row">
<div class="col-lg-6 table-responsive">
<div class="col-lg-6 table-responsive stammdaten_form">
<table class="table">
<?php if (!empty($stammdaten->titelpre)): ?>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','titelpre')) ?></strong></td>
<td><?php echo $stammdaten->titelpre ?></td>
<td>
<div class='stammdaten' id="titelpre"><?php echo $stammdaten->titelpre ?></div>
</td>
</tr>
<?php endif; ?>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','vorname')) ?></strong></td>
<td><?php echo $stammdaten->vorname ?></td>
<td>
<div class='stammdaten' id="vorname"><?php echo $stammdaten->vorname ?></div>
</td>
</tr>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','nachname')) ?></strong></td>
<td>
<?php echo $stammdaten->nachname ?></td>
<div class='stammdaten' id="nachname"><?php echo $stammdaten->nachname ?></div>
</td>
</tr>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','titelpost')) ?></strong></td>
<td>
<div class='stammdaten' id="titelpost"><?php echo $stammdaten->titelpost ?></div>
</td>
</tr>
<?php if (!empty($stammdaten->titelpost)): ?>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','titelpost')) ?></strong></td>
<td><?php echo $stammdaten->titelpost ?></td>
</tr>
<?php endif; ?>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','geburtsdatum')) ?></strong></td>
<td>
<?php echo date_format(date_create($stammdaten->gebdatum), 'd.m.Y') ?></td>
<div class='stammdaten' id="gebdatum"><?php echo date_format(date_create($stammdaten->gebdatum), 'd.m.Y') ?></div>
</td>
</tr>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','svnr')) ?></strong></td>
<td>
<?php echo $stammdaten->svnr ?></td>
<div class='stammdaten' id="svnr"><?php echo $stammdaten->svnr ?></div>
</td>
</tr>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','staatsbuergerschaft')) ?></strong></td>
<td>
<?php echo $stammdaten->staatsbuergerschaft ?></td>
<select id="buergerschaft" disabled>
<?php
foreach ($all_nations as $nation)
{
$selected = '';
if ($nation->nation_code === $stammdaten->staatsbuergerschaft_code)
$selected = 'selected';
echo "<option value='". $nation->nation_code ."' " . $selected . ">". $nation->langtext . "</option>";
}
?>
</select>
</tr>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','geschlecht')) ?></strong></td>
<td>
<?php echo $stammdaten->geschlecht ?></td>
<?php
$language = getUserLanguage() == 'German' ? 0 : 1;
?>
<select id="geschlecht" disabled>
<?php
foreach ($all_genders as $gender)
{
$selected = '';
if ($gender->geschlecht === $stammdaten->geschlecht)
$selected = 'selected';
echo "<option value='". $gender->geschlecht ."' " . $selected . ">". ucfirst($gender->bezeichnung_mehrsprachig[$language]) . "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','geburtsnation')) ?></strong></td>
<td>
<?php echo $stammdaten->geburtsnation ?></td>
<select id="gebnation" disabled>
<?php
foreach ($all_nations as $nation)
{
$selected = '';
if ($nation->nation_code === $stammdaten->geburtsnation_code)
$selected = 'selected';
echo "<option value='". $nation->nation_code ."' " . $selected . ">". $nation->langtext . "</option>";
}
?>
</select>
</tr>
<tr>
<td><strong><?php echo ucfirst($this->p->t('person','geburtsort')) ?></strong></td>
<td><?php echo $stammdaten->gebort ?></td>
<td>
<div class='stammdaten' id="gebort"><?php echo $stammdaten->gebort ?></div>
</td>
</tr>
</table>
</div>
<div class="col-lg-6 table-responsive">
<table class="table table-bordered">
<table class="table table-bordered stammdaten_form">
<thead>
<tr>
<th colspan="4" class="text-center"><?php echo ucfirst($this->p->t('global','kontakt')) ?></th>
@@ -78,7 +122,7 @@
<td><?php echo ucfirst($kontakt->kontakttyp) ?></td>
<?php endif; ?>
<td>
<?php echo '<span class="'.$kontakt->kontakttyp.'">';?>
<?php echo '<span class="kontakt '.$kontakt->kontakttyp.'" data-id="'. $kontakt->kontakt_id .'" data-value="' . $kontakt->kontakt .'">';?>
<?php if ($kontakt->kontakttyp === 'email'): ?>
<a href="mailto:<?php echo $kontakt->kontakt; ?>" target="_top">
<?php $lastMailAdress = $kontakt->kontakt;
@@ -99,8 +143,30 @@
<?php echo ucfirst($this->p->t('person','adresse')) ?>
</td>
<td>
<?php echo isset($adresse) ? $adresse->strasse.', '.$adresse->plz.' '.$adresse->ort : '' ?>
<?php echo isset($adresse->nationkurztext) ? '<br />'.$adresse->nationkurztext : '' ?>
<?php if (isset($adresse)): ?>
<div class="row adresse col-sm-12" data-id="<?php echo $adresse->adresse_id ?>">
<div class="float-left" data-value="<?php echo $adresse->strasse ?>" data-type="strasse"><?php echo $adresse->strasse ?></div>
<div class="float-left" data-value="<?php echo $adresse->plz ?>" data-type="plz"><?php echo $adresse->plz ?></div>
<div class="float-left" data-value="<?php echo $adresse->ort ?>" data-type="ort"><?php echo $adresse->ort ?></div>
<?php if (isset($adresse->nationkurztext)): ?>
<select id="nation_<?php echo $adresse->adresse_id ?>" disabled>
<?php
foreach ($all_nations as $nation)
{
$selected = '';
if ($nation->nation_code === $adresse->nation)
$selected = 'selected';
echo "<option value='". $nation->nation_code ."' " . $selected . ">". $nation->langtext . "</option>";
}
?>
</select>
</div>
<br />
<?php endif; ?>
<?php endif; ?>
</td>
<td>
<?php echo ($adresse->heimatadresse === true ? 'Heimatadresse' : '').
@@ -126,6 +192,16 @@
target='_blank'><i class="glyphicon glyphicon-new-window"></i>&nbsp;<?php echo $this->p->t('infocenter','zugangBewerbung') ?></a>
</div>
<?php endif; ?>
<div class="col-xs-6">
<a class="editStammdaten">
<i class="fa fa-edit"></i>&nbsp;<?php echo $this->p->t('ui','bearbeiten'); ?></a>
<div class="editActionStammdaten" style="display:none">
<a class="cancelStammdaten">
<i class="fa fa-trash"></i>&nbsp;<?php echo $this->p->t('ui','abbrechen');?></a>
<a class="saveStammdaten">
<i class="fa fa-save"></i>&nbsp;<?php echo $this->p->t('ui','speichern'); ?></a>
</div>
</div>
</div>
</div>
</div>
@@ -2,7 +2,7 @@
<?php
$unique_studsemester = array();
$first = true;
$fit_programme_studiengaenge = array(10021, 10027);
$fit_programme_studiengaenge = $additional_stg;
foreach ($zgvpruefungen as $zgvpruefung):
$infoonly = $zgvpruefung->infoonly;
$studiengangkurzbz = $studiengangbezeichnung = $studiengangtyp = '';
+17 -3
View File
@@ -56,7 +56,7 @@ $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern
WHERE person_id = pers.person_id
ORDER BY prestudent_id DESC
) prestudents
WHERE last_status IN ('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')
WHERE last_status IN ('Abgewiesener','Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')
GROUP BY person_id
LIMIT 1;
) AS \"Zugehörigkeit\",
@@ -89,7 +89,9 @@ $query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern
LEFT JOIN public.tbl_funktion fu USING (funktion_kurzbz)
WHERE fehlercode = fr.fehlercode
GROUP BY fehlercode
) AS \"Organisationseinheit Zuständigkeiten\"
) AS \"Organisationseinheit Zuständigkeiten\",
pers.bpk AS \"BPK\",
pers.matr_nr AS \"Matrikelnummer\"
FROM system.tbl_issue iss
JOIN system.tbl_fehler fr USING (fehlercode)
JOIN system.tbl_fehlertyp ftyp USING (fehlertyp_kurzbz)
@@ -173,7 +175,9 @@ $filterWidgetArray = array(
ucfirst($this->p->t('fehlermonitoring', 'zugehoerigkeit')),
ucfirst($this->p->t('fehlermonitoring', 'hauptzustaendig')),
ucfirst($this->p->t('fehlermonitoring', 'zustaendigePersonen')),
ucfirst($this->p->t('fehlermonitoring', 'zustaendigeOrganisationseinheiten'))
ucfirst($this->p->t('fehlermonitoring', 'zustaendigeOrganisationseinheiten')),
'BPK',
'Matrikelnummer'
),
'formatRow' => function($datasetRaw) {
@@ -222,6 +226,16 @@ $filterWidgetArray = array(
$datasetRaw->{'Organisationseinheit Zuständigkeiten'} = '-';
}
if ($datasetRaw->{'BPK'} == null)
{
$datasetRaw->{'BPK'} = '-';
}
if ($datasetRaw->{'Matrikelnummer'} == null)
{
$datasetRaw->{'Matrikelnummer'} = '-';
}
return $datasetRaw;
},
'markRow' => function($datasetRaw) {
+3 -2
View File
@@ -180,7 +180,8 @@ $qry = 'SELECT DISTINCT ON
tbl_person.matr_nr,
tbl_person.geschlecht,
tbl_person.foto,
tbl_person.foto_sperre
tbl_person.foto_sperre,
(tbl_bisio.bis::timestamp - tbl_bisio.von::timestamp) as daysout
FROM
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
@@ -200,7 +201,7 @@ $qry = 'SELECT DISTINCT ON
if ($lehreinheit != '')
$qry .= ' AND vw_student_lehrveranstaltung.lehreinheit_id=' . $db->db_add_param($lehreinheit, FHC_INTEGER);
$qry .= ' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC';
$qry .= ' ORDER BY nachname, vorname, person_id, daysout DESC';
$stsem_obj = new studiensemester();
$stsem_obj->load($studiensemester);
+2 -3
View File
@@ -353,10 +353,9 @@ function writePruefungsTable(e, data, anmeldung)
var time = termin[1].substring(0,5);
termin = termin[0].split("-");
// Wie viele Monate vor Prüfungen dürfen sich Studierende anmelden?
// Sperre "deaktiviert" indem man sich 24 Monate vorher anmelden darf
// Studierende dürfen sich 2 Monate vor Prüfungen anmelden
var minimumFrist = new Date(termin[0], termin[1]-1,termin[2]);
minimumFrist.setMonth(minimumFrist.getMonth() - 24);
minimumFrist.setMonth(minimumFrist.getMonth() - 2);
termin = new Date(termin[0], termin[1]-1,termin[2]);
var frist = termin;
+248 -206
View File
@@ -16,8 +16,9 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>,
* Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
/**
* Seite zum Eintragen von Urlaubstagen
@@ -30,11 +31,13 @@ require_once('../../../include/person.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/mitarbeiter.class.php');
require_once('../../../include/mail.class.php');
require_once('../../../include/sancho.inc.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/globals.inc.php');
require_once('../../../include/sprache.class.php');
require_once('../../../include/zeitaufzeichnung.class.php');
$datum_obj = new datum();
$sprache = getSprache();
$lang = new sprache();
$lang->load($sprache);
@@ -49,8 +52,8 @@ $mehrarbeitsstunden = '0';
$anspruch = '25';
$zaehl=1;
$tage=array(); //Array Tage für Kalenderanzeige
$hgfarbe=array_fill(0,44,'#E9ECEE'); //Array mit Hintegrundfarben der Kalenderfelder
$datensatz=array_fill(0,44,0);
$hgfarbe=array_fill(0, 44, '#E9ECEE'); //Array mit Hintegrundfarben der Kalenderfelder
$datensatz=array_fill(0, 44, 0);
$freigabevon=array();
$freigabeamum=array();
$vertretung_uid=array();
@@ -60,26 +63,26 @@ $erreichbarkeit_kurzbz=array();
//$monatsname = array("Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
$jahre = array(); //Array Jahreszahlen für Auswahl (immer aktuelles Jahr und die 4 nächsten Jahre)
$akette=array_fill(0,1,0);
$ekette=array_fill(0,1,0);
$links='';
$rechts='';
$tag=array();
$vertretung='';
$erreichbar='';
$vgmail='';
$vtmail='';
$spmonat=array();
$hgchange=false;
$wvon='';
$wbis='';
$datensatz='';
$t=getdate();
$akette = array_fill(0, 1, 0);
$ekette = array_fill(0, 1, 0);
$links = '';
$rechts = '';
$tag = array();
$vertretung = '';
$erreichbar = '';
$vgmail = '';
$vtmail = '';
$spmonat = array();
$hgchange = false;
$wvon = '';
$wbis = '';
$datensatz = '';
$t = getdate();
$uid = get_uid();
$taste=0;
$taste = 0;
$ma= new mitarbeiter();
for($i=0;$i<6;$i++)
$ma = new mitarbeiter();
for($i = 0; $i<6; $i++)
{
$jahre[$i]="$t[year]"+($i-1);
}
@@ -118,14 +121,13 @@ else
}
if (isset($_GET['hgfarbe']))
{
$hgfarbe=explode(",",$_GET['hgfarbe']);
$hgfarbe=explode(",", $_GET['hgfarbe']);
}
else
{
if (!isset($_GET['spmonat']))
{
for($i=0;$i<44;$i++)
for($i=0; $i<44; $i++)
{
if(!isset($hgfarbe[$i]) || $hgfarbe[$i]!='#FFFC7F')
$hgfarbe[$i]='#E9ECEE';
@@ -167,71 +169,76 @@ if (isset($_GET['rechts_x']) || isset($_POST['rechts_x']))
//Bereits freigegebenen Eintrag löschen
//Eintragung löschen
if((isset($_GET['delete']) && isset($_GET['informSupervisor'])) || (isset($_POST['delete']) && isset($_POST['informSupervisor'])))
{
$zeitsperre = new zeitsperre();
$zeitsperre->load($_GET['delete']);
$vondatum = $zeitsperre->getVonDatum();
$bisdatum = $zeitsperre->getBisDatum();
if(!$zeitsperre->delete($_GET['delete']))
echo $zeitsperre->errormsg;
//Mail an Vorgesetzten
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
{
$to='';
$fullName ='';
foreach($ma->vorgesetzte as $vg)
{
if($to!='')
{
$to.=', '.$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=', '.$name;
}
else
{
$to.=$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=$name;
}
}
$benutzer = new benutzer();
$benutzer->load($uid);
$message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n".
$p->t('urlaubstool/xHatUrlaubGeloescht',array($benutzer->nachname,$benutzer->vorname)).":\n";
$message.= $p->t('urlaubstool/von')." ".date("d.m.Y", strtotime($vondatum))." ".$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($bisdatum))."\n";
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigegebenerUrlaubGeloescht'), $message);
if($mail->send())
{
$vgmail="<span style='color:green;'>".$p->t('urlaubstool/VorgesetzteInformiert',array($fullName))."</span>";
}
else
{
$vgmail="<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."!</span>";
}
}
else
{
$vgmail="<br><span class='error'>".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden')."</span>";
}
}
//Eintragung löschen
if((isset($_GET['delete']) || isset($_POST['delete'])))
if(isset($_GET['delete']))
{
$zeitsperre = new zeitsperre();
$zeitsperre->load($_GET['delete']);
$vondatum = $zeitsperre->getVonDatum();
$bisdatum = $zeitsperre->getBisDatum();
$vondatum = $datum_obj->formatDatum($vondatum, 'd.m.Y');
$bisdatum = $datum_obj->formatDatum($bisdatum, 'd.m.Y');
if(!$zeitsperre->delete($_GET['delete']))
{
echo $zeitsperre->errormsg;
}
else
{
//Mail an Vorgesetzten
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
{
$to='';
$fullName ='';
foreach($ma->vorgesetzte as $vg)
{
if($to!='')
{
$to.=', '.$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=', '.$name;
}
else
{
$to.=$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=$name;
}
}
$benutzer = new benutzer();
$benutzer->load($uid);
//new sanchomail
$nameMitarbeiter = $benutzer->vorname. " ". $benutzer->nachname;
$beschreibung = $zeitsperre->bezeichnung;
$subject = "Urlaub wurde gelöscht";
$mailvorlage = 'Sancho_Mail_Urlaub_Loeschen';
$from='vilesci@'.DOMAIN;
//Sanchomail mit Vorlage Sancho Mail Urlaub
$template_data = array(
'vorgesetzter' => $fullName,
'nameMitarbeiter' => $nameMitarbeiter,
'beschreibung' =>$beschreibung,
'vonDatum' => $vondatum,
'bisDatum' => $bisdatum
);
if (sendSanchoMail($mailvorlage, $template_data, $to, $subject))
{
$vgmail="<span style='color:green;'>".$p->t('urlaubstool/VorgesetzteInformiert', array($fullName))."</span>";
}
else
{
$vgmail="<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten', array($fullName))."!</span>";
}
}
}
}
//Eintragung speichern
@@ -255,10 +262,10 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
$wtag=$_GET['wtag'];
$akette[0]=$wtag[0];
$ekette[0]=$wtag[0];
for($i=1,$j=0;$i<count($wtag);$i++)
for($i=1, $j=0; $i<count($wtag); $i++)
{
//ketten bilden
if($wtag[$i]==date("Y-m-d",strtotime("+1 Day",strtotime($wtag[$i-1]))))
if($wtag[$i]==date("Y-m-d", strtotime("+1 Day", strtotime($wtag[$i-1]))))
{
$ekette[$j]=$wtag[$i];
}
@@ -268,7 +275,6 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
$akette[$j]=$wtag[$i];
$ekette[$j]=$wtag[$i];
}
}
//Prüfen, ob eine Zeitaufzeichnung vorhanden ist und ggf Abbrechen
@@ -293,7 +299,7 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
for ($i = 0; $i < count($akette); $i++)
{
$zeitsperre = new zeitsperre();
$vonDatum = new DateTime($akette[$i]);
$vonDatum = new DateTime($akette[$i]);
$bisDatum = new DateTime($ekette[$i]);
//add here to array, weil in der foreach-Schleife, das bisdatum nicht inkludiert ist
@@ -301,34 +307,34 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
$daterange = new DatePeriod($vonDatum, new DateInterval('P1D'), $bisDatum);
foreach($daterange as $date)
{
$daysToCheck[] = $date->format("Y-m-d");
}
}
foreach ($daysToCheck AS $date)
{
$zeitsperre->getSperreByDate($uid, $date, null, zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN);
$daysToCheck[] = $date->format("Y-m-d");
}
}
foreach ($zeitsperre->result as $z)
foreach ($daysToCheck as $date)
{
$zeitsperre->getSperreByDate($uid, $date, null, zeitsperre::NUR_BLOCKIERENDE_ZEITSPERREN);
foreach ($zeitsperre->result as $z)
{
if ($z->zeitsperretyp_kurzbz)
{
if ($z->zeitsperretyp_kurzbz)
{
$error = true;
$error = true;
$z->zeitsperretyp_kurzbz == 'Urlaub' ?
$vgmail.='<br><span class="error">'.$p->t('zeitsperre/urlaubBereitsEingetragen').'</span>' :
$vgmail .= '<br><span class="error">'.$p->t('zeitsperre/zeitsperreEingetragen',[$date, $z->zeitsperretyp_kurzbz]). '</span>';
$z->zeitsperretyp_kurzbz == 'Urlaub' ?
$vgmail.='<br><span class="error">'.$p->t('zeitsperre/urlaubBereitsEingetragen').'</span>' :
$vgmail .= '<br><span class="error">'.$p->t('zeitsperre/zeitsperreEingetragen', [$date, $z->zeitsperretyp_kurzbz]). '</span>';
break;
}
break;
}
}
}
}
if(!$error)
{
for($i=0;$i<count($akette);$i++)
for($i=0; $i<count($akette); $i++)
{
$zeitsperre = new zeitsperre();
@@ -354,12 +360,11 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
$error = true;
echo $zeitsperre->errormsg;
}
}
if(!$error)
{
//Mail an Vorgesetzten
$prsn = new person();
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
@@ -384,31 +389,67 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
$benutzer = new benutzer();
$benutzer->load($uid);
$message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n".
$p->t('urlaubstool/xHatNeuenUrlaubEingetragen',array($benutzer->nachname,$benutzer->vorname)).":\n";
for($i=0;$i<count($akette);$i++)
$nameMitarbeiter = $benutzer->vorname. " ". $benutzer->nachname;
$beschreibung = (!empty($zeitsperre->bezeichnung) ? $zeitsperre->bezeichnung : $zeitsperre->beschreibung);
// $message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n".
// $p->t('urlaubstool/xHatNeuenUrlaubEingetragen',array($benutzer->nachname,$benutzer->vorname)).":\n";
for($i=0; $i<count($akette); $i++)
{
$message.= $p->t('urlaubstool/von')." ".date("d.m.Y", strtotime($akette[$i]))." ".$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($ekette[$i]))."\n";
$von = date("d.m.Y", strtotime($akette[$i]));
$bis = date("d.m.Y", strtotime($ekette[$i]));
}
//Ab September wird das neue Jahr uebergeben
if(date("m",strtotime($akette[0]))>=9)
$jahr = date("Y", strtotime($akette[0]))+1;
else
$jahr = date("Y", strtotime($akette[0]));
if(date("m", strtotime($akette[0]))>=9)
$jahr = date("Y", strtotime($akette[0]))+1;
else
$jahr = date("Y", strtotime($akette[0]));
$message.="\n".$p->t('urlaubstool/sieKoennenDiesenUnterFolgenderAdresseFreigeben').":\n".
APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr;
$link = " <a href=". APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr .">Link Urlaubstool</a> ";
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigabeansuchenUrlaub'), $message);
if($mail->send())
$subject = "Freigabeansuchen Urlaub";
$mailvorlage = 'Sancho_Mail_Urlaub_Neu';
$from='vilesci@'.DOMAIN;
// Überprüfen, ob addon casetime aktiv ist
$addon_obj = new addon();
$addoncasetime = $addon_obj->checkActiveAddon("casetime");
$urlaubssaldo = "";
if($addoncasetime)
{
$vgmail="<span style='color:green;'>".$p->t('urlaubstool/freigabemailWurdeVersandt',array($fullName))."</span>";
require_once('../../../addons/casetime/config.inc.php');
require_once('../../../addons/casetime/include/functions.inc.php');
$urlaubssaldo = getCastTimeUrlaubssaldo($uid);
$urlaubssaldo = $urlaubssaldo->{'AktuellerStand'};
}
//Sanchomail mit Vorlage Sancho Mail Urlaub Neu
$template_data = array(
'vorgesetzter' => $fullName,
'nameMitarbeiter' => $nameMitarbeiter,
'beschreibung' =>$beschreibung,
'vonDatum' => $von,
'bisDatum' => $bis,
'Link'=> $link,
'urlaubssaldo' => $urlaubssaldo
);
if (sendSanchoMail($mailvorlage, $template_data, $to, $subject))
// $mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigabeansuchenUrlaub'), $message);
//if($mail->send())
{
$vgmail="<span style='color:green;'>".$p->t('urlaubstool/freigabemailWurdeVersandt', array($fullName))."</span>";
}
else
{
$vgmail="<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($to))."!</span>";
$vgmail="<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten', array($to))."!</span>";
}
}
else
@@ -422,14 +463,13 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
}
}
}
}
//Eintragungen laden
if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr)))
if ((isset($wmonat) || isset($wmonat)) && (isset($wjahr) || isset($wjahr)))
{
//Urlaubstageage markieren
$mbeginn=mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr]);
$mbeginn=mktime(0, 0, 0, ($wmonat+1), 1, $jahre[$wjahr]);
$ttt=getdate($mbeginn);
$wotag="$ttt[wday]";
if ($wotag==0)
@@ -447,22 +487,22 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr)))
}
//$wvon=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr]));
//$wbis=date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr]));
$ttt=getdate(mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr]));
$ttt=getdate(mktime(0, 0, 0, ($wmonat+1), $mende, $jahre[$wjahr]));
if($wmonat==0)
{
$wvon=date("Y-m-d",mktime(0, 0, 0, 12 , $mendev-($wotag-1), ($jahre[$wjahr])-1));
$wvon=date("Y-m-d", mktime(0, 0, 0, 12, $mendev-($wotag-1), ($jahre[$wjahr])-1));
}
else
{
$wvon=date("Y-m-d",mktime(0, 0, 0, ($wmonat) , $mendev-($wotag-1), ($jahre[$wjahr])));
$wvon=date("Y-m-d", mktime(0, 0, 0, ($wmonat), $mendev-($wotag-1), ($jahre[$wjahr])));
}
if($wmonat==11)
{
$wbis=date("Y-m-d",mktime(0, 0, 0, 1 , (7-($ttt['wday']==0?7:$ttt['wday'])), $jahre[$wjahr]+1));
$wbis=date("Y-m-d", mktime(0, 0, 0, 1, (7-($ttt['wday']==0?7:$ttt['wday'])), $jahre[$wjahr]+1));
}
else
{
$wbis=date("Y-m-d",mktime(0, 0, 0, ($wmonat+2) , (7-($ttt['wday']==0?7:$ttt['wday'])), $jahre[$wjahr]));
$wbis=date("Y-m-d", mktime(0, 0, 0, ($wmonat+2), (7-($ttt['wday']==0?7:$ttt['wday'])), $jahre[$wjahr]));
}
$qry="SELECT * FROM campus.tbl_zeitsperre
WHERE zeitsperretyp_kurzbz='Urlaub'
@@ -477,19 +517,19 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr)))
{
//echo " ".$row->vondatum;
//echo "-".$row->bisdatum;
for($i=1;$i<=$mende+($wotag-1)+(7-($ttt['wday']==0?7:$ttt['wday']));$i++)
for($i=1; $i<=$mende+($wotag-1)+(7-($ttt['wday']==0?7:$ttt['wday'])); $i++)
{
if(date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $i-$wotag+1, $jahre[$wjahr]))>=$row->vondatum
&& date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $i-$wotag+1, $jahre[$wjahr]))<=$row->bisdatum)
if(date("Y-m-d", mktime(0, 0, 0, ($wmonat+1), $i-$wotag+1, $jahre[$wjahr]))>=$row->vondatum
&& date("Y-m-d", mktime(0, 0, 0, ($wmonat+1), $i-$wotag+1, $jahre[$wjahr]))<=$row->bisdatum)
{
if($row->freigabevon!='' && $row->vondatum<=date("Y-m-d",time()))
if($row->freigabevon!='' && $row->vondatum<=date("Y-m-d", time()))
{
$hgfarbe[$i]='#bbb';
}
elseif ($row->freigabevon!='' && $row->vondatum>date("Y-m-d",time()))
{
elseif ($row->freigabevon!='' && $row->vondatum>date("Y-m-d", time()))
{
$hgfarbe[$i]='#CDDDEE';
}
}
else
{
$hgfarbe[$i]='#FFFC7F';
@@ -513,7 +553,7 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr)))
}
}
}
for($i=$mende+$wotag+(7-($ttt['wday']==0?7:$ttt['wday']));$i<44;$i++)
for($i=$mende+$wotag+(7-($ttt['wday']==0?7:$ttt['wday'])); $i<44; $i++)
{
$hgfarbe[$i]='#E9ECEE';
$datensatz[$i]=0;
@@ -567,58 +607,60 @@ echo '
}
});
</script>';
?>
<script language="Javascript">
function conf_del()
{
return confirm('<?php echo $p->t('urlaubstool/eintragWirklichLoeschen');?>');
}
function checkval()
?>
<script language="Javascript">
function conf_del()
{
return confirm('<?php echo $p->t('urlaubstool/eintragWirklichLoeschen');?>');
}
function checkval()
{
if(document.getElementById('vertretung_uid').value=='')
{
alert('<?php echo $p->t('urlaubstool/zuerstVertretungAuswaehlen');?>');
return false;
}
else
return true;
}
$(document).ready(function()
{
$("#vertretung").autocomplete({
source: "urlaubstool_autocomplete.php?autocomplete=mitarbeiter",
minLength:2,
response: function(event, ui)
{
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
if(document.getElementById('vertretung_uid').value=='')
{
alert('<?php echo $p->t('urlaubstool/zuerstVertretungAuswaehlen');?>');
return false;
}
else
return true;
ui.content[i].value=ui.content[i].uid;
ui.content[i].label=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
}
$(document).ready(function()
{
$("#vertretung").autocomplete({
source: "urlaubstool_autocomplete.php?autocomplete=mitarbeiter",
minLength:2,
response: function(event, ui)
{
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].uid;
ui.content[i].label=ui.content[i].vorname+" "+ui.content[i].nachname+" ("+ui.content[i].uid+")";
}
},
select: function(event, ui)
{
//Ausgeaehlte Ressource zuweisen und Textfeld wieder leeren
$("#vertretung").val(ui.item.uid);
}
});
})
</script>
<style type="text/css">
.urlaube th, .urlaube td, .urlaube
{
-moz-border-radius:10px;
-khtml-border-radius:10px;
}
</style>
<title><?php echo $p->t('urlaubstool/urlaubstool');?></title>
</head>
},
select: function(event, ui)
{
//Ausgeaehlte Ressource zuweisen und Textfeld wieder leeren
$("#vertretung").val(ui.item.uid);
}
});
})
</script>
<style type="text/css">
.urlaube th, .urlaube td, .urlaube
{
-moz-border-radius:10px;
-khtml-border-radius:10px;
}
</style>
<title><?php echo $p->t('urlaubstool/urlaubstool');?></title>
</head>
<body>
<?php
echo "<H1>".$p->t('urlaubstool/urlaubstool')." (".$uid.")</H1>";
//Anzeige Resturlaubsberechnung
echo '<table width="100%">';
echo '<tr><td colspan=2>';
@@ -664,7 +706,7 @@ echo '
style="vertical-align: middle;" alt="links">&nbsp;
<SELECT name="wmonat">';
for($i=0;$i<12;$i++)
for($i=0; $i<12; $i++)
{
if($wmonat==$i)
{
@@ -680,7 +722,7 @@ echo "</SELECT>\n";
echo '&nbsp;<INPUT name="rechts" type="image" src="../../../skin/images/right_lvplan.png" style="vertical-align: middle;" alt="rechts">';
echo '&nbsp;<SELECT name="wjahr">';
for($i=0;$i<5;$i++)
for($i=0; $i<5; $i++)
{
if($wjahr==$i)
{
@@ -725,7 +767,7 @@ if($result = $db->db_query($qry))
echo '</SELECT>';
//Tage
$mbeginn=mktime(0, 0, 0, ($wmonat+1) , 1, $jahre[$wjahr]);
$mbeginn=mktime(0, 0, 0, ($wmonat+1), 1, $jahre[$wjahr]);
$ttt=getdate($mbeginn);
$wotag="$ttt[wday]";
if ($wotag==0)
@@ -742,9 +784,9 @@ else
{
$mendev = cal_days_in_month(CAL_GREGORIAN, ($wmonat), $jahre[$wjahr]);
}
$ttt=getdate(mktime(0, 0, 0, ($wmonat+1) , $mende, $jahre[$wjahr]));
$ttt=getdate(mktime(0, 0, 0, ($wmonat+1), $mende, $jahre[$wjahr]));
//echo "monatsende:".$mende;
for($i=1;$i<43;$i++)
for($i=1; $i<43; $i++)
{
if($i>=$wotag && $zaehl<=$mende)
{
@@ -755,22 +797,22 @@ for($i=1;$i<43;$i++)
{
if($wmonat==0)
{
$tage[$i]=date("d.m.Y", mktime(0, 0, 0, 12 , $mendev+$i-($wotag-1), $jahre[$wjahr]-1));
$tage[$i]=date("d.m.Y", mktime(0, 0, 0, 12, $mendev+$i-($wotag-1), $jahre[$wjahr]-1));
}
else
{
$tage[$i]=date("d.m.Y", mktime(0, 0, 0, ($wmonat) , $mendev+$i-($wotag-1), $jahre[$wjahr]));
$tage[$i]=date("d.m.Y", mktime(0, 0, 0, ($wmonat), $mendev+$i-($wotag-1), $jahre[$wjahr]));
}
}
elseif ($i>$mende && $i<=$mende+($wotag-1)+(7-($ttt['wday']==0?7:$ttt['wday'])))
{
if($wmonat==11)
{
$tage[$i]=date("d.m.Y", mktime(0, 0, 0, 1 , $i-$mende-$wotag+1, $jahre[$wjahr+1]));
$tage[$i]=date("d.m.Y", mktime(0, 0, 0, 1, $i-$mende-$wotag+1, $jahre[$wjahr+1]));
}
else
{
$tage[$i]=date("d.m.Y", mktime(0, 0, 0, ($wmonat+2) , $i-$mende-$wotag+1, $jahre[$wjahr]));
$tage[$i]=date("d.m.Y", mktime(0, 0, 0, ($wmonat+2), $i-$mende-$wotag+1, $jahre[$wjahr]));
}
}
else
@@ -788,17 +830,17 @@ echo ' <input type="submit" name="speichern" value="'.$p->t('urlaubstool/eintrag
<table border=0 width="95%" align="left" class="urlaube">
<tr>';
for($i=1;$i<=7;$i++)
for($i=1; $i<=7; $i++)
echo "\n".'<th style="width:14%; background-color: #A5AFB6">'.$tagbez[$lang->index][$i].'</th>';
echo '</tr>';
for ($i=0;$i<6;$i++)
for ($i=0; $i<6; $i++)
{
echo "\n".'<tr height="50" style="font-family:Arial,sans-serif; font-size:30px; color:black">';
for ($j=1;$j<8;$j++)
for ($j=1; $j<8; $j++)
{
echo "\n";
if(strlen(stristr($tage[$j+7*$i],"."))>0)
if(strlen(stristr($tage[$j+7*$i], "."))>0)
{
if($j%6==0 || $j==7)
{
@@ -822,7 +864,7 @@ for ($i=0;$i<6;$i++)
}
if($tage[$j+7*$i]!='')
{
if($hgfarbe[$j+7*$i]=='#FFFC7F' )//|| $hgfarbe[$j+7*$i]=='#CDDDEE')
if($hgfarbe[$j+7*$i]=='#FFFC7F')//|| $hgfarbe[$j+7*$i]=='#CDDDEE')
{
echo '<b title='.$p->t('urlaubstool/vertretung').': '.$vertretung_uid[$j+7*$i].' - '.$p->t('urlaubstool/erreichbar').': '.$erreichbarkeit_kurzbz[$j+7*$i].'">'.$tage[$j+7*$i].'</b><br>';;
$k=$j+7*$i;
@@ -832,16 +874,16 @@ for ($i=0;$i<6;$i++)
elseif($hgfarbe[$j+7*$i]=='#E9ECEE')
{
echo '<b>'.$tage[$j+7*$i].'</b><br>';
if(strlen(stristr($tage[$j+7*$i],"."))>0)
if(strlen(stristr($tage[$j+7*$i], "."))>0)
{
echo '<input type="checkbox" name="wtag[]"
value="'.date("Y-m-d",mktime(0, 0, 0, substr($tage[$j+7*$i],3,2) , substr($tage[$j+7*$i],0,2), substr($tage[$j+7*$i],6,4))).'"
id="'.date("d.m.Y",mktime(0, 0, 0, substr($tage[$j+7*$i],3,2) , substr($tage[$j+7*$i],0,2), substr($tage[$j+7*$i],6,4))).'"></td>';
value="'.date("Y-m-d", mktime(0, 0, 0, substr($tage[$j+7*$i], 3, 2), substr($tage[$j+7*$i], 0, 2), substr($tage[$j+7*$i], 6, 4))).'"
id="'.date("d.m.Y", mktime(0, 0, 0, substr($tage[$j+7*$i], 3, 2), substr($tage[$j+7*$i], 0, 2), substr($tage[$j+7*$i], 6, 4))).'"></td>';
}
else
{
echo '<input type="checkbox" name="wtag[]" value="'.date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $tage[$j+7*$i], $jahre[$wjahr])).'"
id="'.date("d.m.Y",mktime(0, 0, 0, ($wmonat+1) , $tage[$j+7*$i], $jahre[$wjahr])).'"></td>';
echo '<input type="checkbox" name="wtag[]" value="'.date("Y-m-d", mktime(0, 0, 0, ($wmonat+1), $tage[$j+7*$i], $jahre[$wjahr])).'"
id="'.date("d.m.Y", mktime(0, 0, 0, ($wmonat+1), $tage[$j+7*$i], $jahre[$wjahr])).'"></td>';
}
}
else
@@ -853,12 +895,12 @@ for ($i=0;$i<6;$i++)
}
elseif(isset($freigabeamum[$j+7*$i]))
{
echo '<img src="../../../skin/images/flag-green.png" alt="freigegeben" title="'.$p->t('urlaubstool/freigegebenDurch', array($freigabevon[$j+7*$i])).': '.$freigabevon[$j+7*$i].'"><span> </span>';
echo '<img src="../../../skin/images/flag-green.png" alt="freigegeben" title="'.$p->t('urlaubstool/freigegebenDurch', array($freigabevon[$j+7*$i])).': '.$freigabevon[$j+7*$i].'"><span> </span>';
if($hgfarbe[$j+7*$i]=='#CDDDEE')
{
$k=$j+7*$i;
echo "<a href='$PHP_SELF?wmonat=$wmonat&wjahr=$wjahr&delete=$datensatz[$k]&informSupervisor=True' onclick='return conf_del()'>";
echo '<img src="../../../skin/images/delete_x.png" alt="loeschen" title="'.$p->t('urlaubstool/eintragungLoeschen').'"></a></td>';
echo "<a href='$PHP_SELF?wmonat=$wmonat&wjahr=$wjahr&delete=$datensatz[$k]' onclick='return conf_del()'>";
echo '<img src="../../../skin/images/delete_x.png" alt="loeschen" title="'.$p->t('urlaubstool/eintragungLoeschen').'"></a></td>';
}
}
else
+140 -22
View File
@@ -31,6 +31,7 @@ require_once('../../../include/person.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/mitarbeiter.class.php');
require_once('../../../include/mail.class.php');
require_once('../../../include/sancho.inc.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/zeitaufzeichnung.class.php');
@@ -65,6 +66,7 @@ if(isset($_GET['uid']))
die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte'));
}
}
$datum_obj = new datum();
$ma= new mitarbeiter();
@@ -100,6 +102,7 @@ $num_rows_stunde=$db->db_num_rows($result_stunde);
<link href="../../../vendor/fgelinas/timepicker/jquery.ui.timepicker.css" rel="stylesheet" type="text/css"/>
<link href="../../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
<?php
// ADDONS laden
$addon_obj = new addon();
$addon_obj->loadAddons();
@@ -109,6 +112,9 @@ foreach($addon_obj->result as $addon)
echo '<script type="application/x-javascript" src="../../../addons/'.$addon->kurzbz.'/cis/init.js.php" ></script>';
}
// Überprüfen, ob addon casetime aktiv ist
$addoncasetime = $addon_obj->checkActiveAddon("casetime");
// Wenn Seite fertig geladen ist Addons aufrufen
echo '
<script>
@@ -119,7 +125,8 @@ $( document ).ready(function()
{
for(i in addon)
{
addon[i].init("cis/private/profile/zeitsperre_resturlaub.php", {uid:\''.$uid.'\', holiDays: holiDays});
addon[i].init("cis/private/profile/zeitsperre_resturlaub.php", {uid:\''.$uid.'\', holiDays: holiDays});
}
}
@@ -158,6 +165,7 @@ $( document ).ready(function()
}
return [true, ""];
}
</script>';
?>
@@ -316,6 +324,10 @@ function showHideStudeDropDown()
{
document.getElementById('vonStd').style.visibility = 'hidden';
document.getElementById('bisStd').style.visibility = 'hidden';
// Stunde entfernen
document.getElementById('vonstunde').selectedIndex = 0;
document.getElementById('bisstunde').selectedIndex = 0;
}
else
{
@@ -339,6 +351,17 @@ function showHideStudeDropDown()
<?php
$zeitsaldo = "";
$urlaubssaldo = "";
if($addoncasetime)
{
require_once('../../../addons/casetime/config.inc.php');
require_once('../../../addons/casetime/include/functions.inc.php');
$zeitsaldo = getCaseTimeZeitsaldo($uid);
$zeitsaldo = formatZeitsaldo($zeitsaldo);
$urlaubssaldo = getCastTimeUrlaubssaldo($uid);
$urlaubssaldo = $urlaubssaldo->{'AktuellerStand'};
}
//Zeitsperre Speichern
if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_sperre'))
@@ -502,17 +525,24 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$zeitsperre->updateamum = date('Y-m-d H:i:s');
$zeitsperre->updatevon = $uid;
// Zeitsperretyp Beschreibung
$zeitsperre->loadZeitsperretyp($zeitsperre->zeitsperretyp_kurzbz);
$zeitsperre->beschreibung = $zeitsperre->result[0]->beschreibung;
if($zeitsperre->save())
{
echo "<h3>".$p->t('global/erfolgreichgespeichert')."</h3>";
if(URLAUB_TOOLS)
{
if($zeitsperre->new && $zeitsperre->zeitsperretyp_kurzbz=='Urlaub')
//Beim Anlegen von neuen Urlauben oder neuem Zeitausgleich wird ein Mail an den Vorgesetzten versendet
if($zeitsperre->new && ($zeitsperre->zeitsperretyp_kurzbz=='Urlaub' || $zeitsperre->zeitsperretyp_kurzbz == 'ZA')
|| !$zeitsperre->new && $zeitsperre->zeitsperretyp_kurzbz == 'ZA')
{
//Beim Anlegen von neuen Urlauben wird ein Mail an den Vorgesetzten versendet um diesen Freizugeben
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
{
$to='';
@@ -531,21 +561,75 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$benutzer = new benutzer();
$benutzer->load($uid);
$nameMitarbeiter = $benutzer->vorname. " ". $benutzer->nachname;
$beschreibung = (!empty($zeitsperre->bezeichnung) ? $zeitsperre->bezeichnung : $zeitsperre->beschreibung);
if($datum_obj->formatDatum($zeitsperre->vondatum, 'm')>=9)
$jahr = $datum_obj->formatDatum($zeitsperre->vondatum, 'Y')+1;
else
$jahr = $datum_obj->formatDatum($zeitsperre->vondatum, 'Y');
$message = "Dies ist eine automatische Mail! \n".
"$benutzer->nachname $benutzer->vorname hat einen neuen Urlaub eingetragen:\n".
"$zeitsperre->bezeichnung von ".$datum_obj->formatDatum($zeitsperre->vondatum,'d.m.Y')." bis ".$datum_obj->formatDatum($zeitsperre->bisdatum,'d.m.Y')."\n\n".
"Sie können diesen unter folgender Adresse freigeben:\n".
APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr;
$from='vilesci@'.DOMAIN;
$mail = new mail($to, $from, 'Freigabeansuchen', $message);
if($mail->send())
$von = $datum_obj->formatDatum($zeitsperre->vondatum,'d.m.Y');
$bis = $datum_obj->formatDatum($zeitsperre->bisdatum,'d.m.Y');
// Wenn ein neuer Urlaub eingetragen wurde, Freigabemail-Text
if ($zeitsperre->zeitsperretyp_kurzbz=='Urlaub')
{
echo "<br><b>".$p->t('urlaubstool/freigabemailWurdeVersandt',array($fullName))."</b>";
$link = " <a href=". APP_ROOT."cis/private/profile/urlaubsfreigabe.php?uid=$uid&year=".$jahr .">Link Urlaubstool</a> ";
$subject = "Freigabeansuchen Urlaub";
$mailvorlage = 'Sancho_Mail_Urlaub_Neu';
$template_data = array(
'vorgesetzter' => $fullName,
'nameMitarbeiter' => $nameMitarbeiter,
'beschreibung' =>$beschreibung,
'vonDatum' => $von,
'bisDatum' => $bis,
'Link'=> $link,
'urlaubssaldo' => $urlaubssaldo
);
}
// Wenn ein Zeitausgleich eingetragen wurde...
if ($zeitsperre->zeitsperretyp_kurzbz == 'ZA')
{
// ...Mail-Text für neuen Zeitausgleich
if ($zeitsperre->new)
{
$subject = $p->t('urlaubstool/zeitausgleichNeu');
$mailvorlage = 'Sancho_Content_Zeitausgleich';
}
// ...Mail-Text für geaenderten Zeitausgleich
else
{
$subject = $subject = $p->t('urlaubstool/zeitausgleichGeaendert');
$mailvorlage = 'Sancho_Content_ZA_Aendern';
}
$template_data = array(
'vorgesetzter' => $fullName,
'nameMitarbeiter' => $nameMitarbeiter,
'beschreibung' =>$beschreibung,
'vonDatum' => $von,
'bisDatum' => $bis,
'Saldo'=> $zeitsaldo
);
}
$from='vilesci@'.DOMAIN;
//Sanchomail mit Vorlage Sancho Mail Zeitausgleich
if (sendSanchoMail($mailvorlage, $template_data, $to, $subject))
{
if ($zeitsperre->zeitsperretyp_kurzbz=='Urlaub')
{
echo "<br><b>". $p->t('urlaubstool/freigabemailWurdeVersandt', array($fullName)). "</b>";
}
if ($zeitsperre->zeitsperretyp_kurzbz == 'ZA')
{
echo "<br><b>". $p->t('urlaubstool/VorgesetzteInformiert', array($fullName)). "</b>";
}
}
else
{
@@ -572,8 +656,15 @@ if((isset($_GET['type']) && $_GET['type']=='delete_sperre' && isset($_GET['infor
$zeitsperre = new zeitsperre();
$zeitsperre->load($_GET['id']);
$vondatum = $zeitsperre->getVonDatum();
$bisdatum = $zeitsperre->getBisDatum();
$zeitsperre->loadZeitsperretyp($zeitsperre->zeitsperretyp_kurzbz);
$zeitsperre->beschreibung = $zeitsperre->result[0]->beschreibung;
$vonDatum = $zeitsperre->getVonDatum();
$bisDatum = $zeitsperre->getBisDatum();
$vonDatum = $datum_obj->formatDatum($vonDatum ,'d.m.Y');
$bisDatum = $datum_obj->formatDatum($bisDatum,'d.m.Y');
if(!$zeitsperre->delete($_GET['id']))
echo $zeitsperre->errormsg;
@@ -604,16 +695,32 @@ if((isset($_GET['type']) && $_GET['type']=='delete_sperre' && isset($_GET['infor
$benutzer = new benutzer();
$benutzer->load($uid);
$message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n".
$p->t('urlaubstool/xHatUrlaubGeloescht',array($benutzer->nachname,$benutzer->vorname)).":\n";
$nameMitarbeiter = $benutzer->vorname. " ". $benutzer->nachname;
$beschreibung = (!empty($zeitsperre->bezeichnung) ? $zeitsperre->bezeichnung : $zeitsperre->beschreibung);
if ($zeitsperre->zeitsperretyp_kurzbz == 'Urlaub')
{
$subject = $p->t('urlaubstool/UrlaubGeloescht');
$mailvorlage = 'Sancho_Mail_Urlaub_Loeschen';
}
$message.= $p->t('urlaubstool/von')." ".date("d.m.Y", strtotime($vondatum))." ".$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($bisdatum))."\n";
if ($zeitsperre->zeitsperretyp_kurzbz == 'ZA')
{
$subject = $p->t('urlaubstool/zeitausgleichGeloescht');
$mailvorlage = 'Sancho_Mail_ZA_loeschen';
}
$template_data = array(
'vorgesetzter' => $fullName,
'nameMitarbeiter' => $nameMitarbeiter,
'beschreibung' =>$beschreibung,
'vonDatum' => $vonDatum,
'bisDatum' => $bisDatum
);
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigegebenerUrlaubGeloescht'), $message);
if($mail->send())
if (sendSanchoMail($mailvorlage, $template_data, $to, $subject))
{
echo "<b>" . $p->t('global/erfolgreichgelöscht') . '</b><br>';
echo "<br><b>".$p->t('urlaubstool/VorgesetzteInformiert',array($fullName))."</b>";
}
else
@@ -621,6 +728,7 @@ if((isset($_GET['type']) && $_GET['type']=='delete_sperre' && isset($_GET['infor
echo "<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."!</span>";
}
}
else
{
$vgmail="<br><span class='error'>".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden')."</span>";
@@ -632,6 +740,7 @@ if(isset($_GET['type']) && $_GET['type']=='delete_sperre' && !isset($_GET['infor
{
$zeit = new zeitsperre();
$zeit->load($_GET['id']);
//pruefen ob die person die den datensatz loeschen will auch der
//besitzer dieses datensatzes ist
if($zeit->mitarbeiter_uid==$uid)
@@ -698,7 +807,7 @@ if(count($zeit->result)>0)
$content_table.="<td><a href='$PHP_SELF?type=edit&id=$row->zeitsperre_id' class='Item'>".$p->t('zeitsperre/edit')."</a></td>";
if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
$content_table .= '<td>&nbsp;</td>';
else if($row->vondatum>=date("Y-m-d",time()) && $row->zeitsperretyp_kurzbz=='Urlaub')
else if($row->vondatum>=date("Y-m-d",time()) && ($row->zeitsperretyp_kurzbz=='Urlaub' || $row->zeitsperretyp_kurzbz == 'ZA'))
{
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id&informSupervisor=True' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
}
@@ -779,7 +888,7 @@ $content_form.= '<tr><td>'.$p->t('global/von').'</td><td><input'.$style.' type="
//dropdown fuer vonstunde
$content_form.= $p->t('zeitsperre/stundeInklusive');
$content_form.= " <SELECT name='vonstunde'$style>\n";
$content_form.= " <SELECT id='vonstunde' name='vonstunde'$style>\n";
if($zeitsperre->vonstunde=='')
$content_form.= "<OPTION value='' selectd>*</OPTION>\n";
else
@@ -800,7 +909,7 @@ $content_form.= "</SELECT></td></tr>";
$content_form.= '<tr><td>'.$p->t('global/bis').'</td><td><input'.$style.' type="text" '.$class.' size="10" maxlength="10" name="bisdatum" id="bisdatum" value="'.($zeitsperre->bisdatum!=''?date('d.m.Y',$datum_obj->mktime_fromdate($zeitsperre->bisdatum)):(!isset($_POST['bisdatum'])?date('d.m.Y'):$_POST['bisdatum'])).'"'.$readonly.'></td><td id="bisStd" style="text-align:right;"> ';
//dropdown fuer bisstunde
$content_form.= $p->t('zeitsperre/stundeInklusive');
$content_form.= " <SELECT name='bisstunde'$style>\n";
$content_form.= " <SELECT id='bisstunde' name='bisstunde'$style>\n";
if($zeitsperre->bisstunde=='')
$content_form.= "<OPTION value='' selectd>*</OPTION>\n";
@@ -836,6 +945,10 @@ if($result = $db->db_query($qry))
}
$content_form.= '</SELECT></td></tr>';
//$content_form.= '<tr><td>'.$p->t('global/bezeichnung').'</td>
//<td colspan="2"><span id="dienstv_span"><input'.$style.' type="text" size="32" name="bezeichnung" maxlength="32" value="'.$zeitsperre->bezeichnung.'"'.$readonly.'></span></td></tr>';
$content_form.= "<tr><td>".$p->t('urlaubstool/erreichbarkeit')."</td><td><SELECT name='erreichbarkeit'>";
foreach ($erreichbarkeit_arr as $erreichbarkeit_key=>$erreichbarkeit_beschreibung)
{
@@ -847,8 +960,12 @@ foreach ($erreichbarkeit_arr as $erreichbarkeit_key=>$erreichbarkeit_beschreibun
$content_form.= '</SELECT></td>';
$content_form.= '<td style="text-align:right;">';
if(isset($_GET['type']) && $_GET['type']=='edit')
$content_form.= "<input type='submit' name='submit_zeitsperre' value='".$p->t('global/speichern')."'>";
@@ -875,6 +992,7 @@ echo '</table>';
?>
</td></tr></table>
</div>
<body>
</html>
<?php echo '<script>showHideStudeDropDown();</script>'; ?>
+37 -3
View File
@@ -605,9 +605,14 @@ echo '
{
projphasenhtml += "<option value = \'" + json[i].projektphase_id + "\'>";
projphasenhtml += json[i].bezeichnung;
if(json[i].start != \'\' && json[i].ende !=\'\')
{
projphasenhtml += " ( "+json[i].start+" - "+json[i].ende+" )";
projphasenhtml += " ( "+json[i].start+" - "+json[i].ende+ " )";
}
if (!json[i].zeitaufzeichnung_erlaubt)
{
projphasenhtml += " ---AP NICHT bebuchbar---";
}
projphasenhtml += "<\/option>";
}
@@ -665,6 +670,7 @@ echo '
);
}
// Pausenblock
function checkPausenblock()
@@ -840,6 +846,10 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
$projektph_of_user = new projektphase();
$projektphasen = $projektph_of_user->getProjectphaseForMitarbeiter($user);
$phaseBebuchbar = $projektph_of_user->getPhasenZA($projektphase_id);
$projekt = new projekt();
$projekt->load($projekt_kurzbz);
if ($_FILES['csv']['error'] == 0 && isset($_POST['import']))
{
$zeit_csv_import = new zeitaufzeichnung_import_csv($p, $user, $sperrdatum, $_FILES['csv']['tmp_name']);
@@ -848,9 +858,11 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
}
else if ($datum->formatDatum($von, $format='Y-m-d H:i:s') < $sperrdatum)
echo '<span id="triggerPhasenReset" style="color:#ff0000"><b>' .$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum</b></span>';
// NOTE(chris): Save
else if (isset($_POST['save']) || isset($_POST['edit']))
{
$zeit_post_import = new zeitaufzeichnung_import_post($p, $user, isset($_POST['edit']), [
'aktivitaet_kurzbz' => $aktivitaet_kurzbz,
'beschreibung' => $beschreibung,
@@ -867,6 +879,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
'von_pause' => $von_pause,
'zeitaufzeichnung_id' => $zeitaufzeichnung_id,
]);
$zeit_post_import->import();
echo $zeit_post_import->OutputToHTML();
if (!$zeit_post_import->hasErrors() && !$zeit_post_import->hasWarnings())
@@ -1239,7 +1252,8 @@ if ($projekt->getProjekteMitarbeiter($user, true))
else
$selected = '';
echo '<option value="'.$db->convert_html_chars($projektphase->projektphase_id).'" '.$selected.'>'.$db->convert_html_chars($projektphase->bezeichnung). $phasentext.'</option>';
echo '<option value="'.$db->convert_html_chars($projektphase->projektphase_id).'" '.$selected.'>'.$db->convert_html_chars($projektphase->bezeichnung).
$phasentext. '</option>';
}
echo '</SELECT></span>';
}
@@ -1379,7 +1393,27 @@ if ($projekt->getProjekteMitarbeiter($user, true))
}
}
echo '</table>';
echo '</td><td valign="top"><span id="zeitsaldo"></span><br><br>';
echo '</td><td valign="top"><span id="zeitsaldo"></span><br>';
if (defined('DEFAULT_ALLIN_DIENSTVERTRAG') && DEFAULT_ALLIN_DIENSTVERTRAG != '')
{
$bisver = new bisverwendung();
$bisver->getLastVerwendung($user);
// $ba1code = $bisver->ba1code;
$ba1code = null;
if (in_array($bisver->ba1code, DEFAULT_ALLIN_DIENSTVERTRAG))
{
echo '<span id="saldoAllin"></span><br><br>';
}
else
echo '<br>';
}
else
echo '<br>';
if (!$adminView)
{
@@ -86,6 +86,7 @@ if (isset($_GET['projekt_kurzbz']))
$item['bezeichnung'] = $row->bezeichnung;
$item['start'] = $datum_obj->formatDatum($row->start, 'd.m.Y');
$item['ende'] = $datum_obj->formatDatum($row->ende, 'd.m.Y');
$item['zeitaufzeichnung_erlaubt'] = $row->zeitaufzeichnung;
$result_obj[] = $item;
}
}
+338 -262
View File
@@ -1,263 +1,339 @@
<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Karl Burkhart <burkhart@technikum-wien.at>,
*/
require_once("../../../config/cis.config.inc.php");
require_once('../../../include/basis_db.class.php');
require_once("../../../include/gebiet.class.php");
require_once("../../../include/frage.class.php");
require_once("../../../include/vorschlag.class.php");
require_once('../../../include/functions.inc.php');
require_once("../../../include/benutzerberechtigung.class.php");
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testool Fragen Übersicht</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body style="padding: 10px">
<?php
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
die('<span class="error">Sie haben keine Berechtigung für diese Seite</span>');
$gebiet = new gebiet();
$gebiet->getAll();
$sprache = (isset($_REQUEST['Sprache'])?$_REQUEST['Sprache']:'German');
$Auswahlgebiet = (isset($_REQUEST['AuswahlGebiet'])?$_REQUEST['AuswahlGebiet']:'');
$loesungen = (isset($_REQUEST['loesungen']) && $_REQUEST['loesungen'] != '' ? true:false);
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" name="TesttoolUebersicht">
<table>
<tr>
<td>Gebiet:</td>
<td><select name="AuswahlGebiet"><option value="auswahl"> - Bitte Auswählen - </option>';
foreach ($gebiet->result as $gebietResult)
{
$selected ='';
if($Auswahlgebiet == $gebietResult->gebiet_id)
$selected = 'selected';
echo '<option value="'.$gebietResult->gebiet_id.'" '.$selected.'>'.$gebietResult->gebiet_id.' - '.$gebietResult->bezeichnung.' - '.$gebietResult->kurzbz.'</option>';
}
echo '</select></td></tr>
<tr>
<td>Sprache: </td>
<td><select name="Sprache">';
if($sprache == 'German')
echo '<option selected value="German">Deutsch</option>';
else
echo '<option value="German">Deutsch</option>';
if($sprache == 'English')
echo '<option selected value="English">Englisch</option>';
else
echo '<option value="English">Englisch</option>';
echo'</select>
</td>
</tr>
<tr>
<td>
Mit Lösungen
</td>
<td><input type="checkbox" name="loesungen" '.($loesungen ? 'checked':'').'></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Anzeigen"></td></tr>
</table><br>';
if(isset($_REQUEST['AuswahlGebiet']))
{
$gebiet_id = $_REQUEST['AuswahlGebiet'];
$gebietdetails = new gebiet();
$gebietdetails->load($gebiet_id);
$qry = "SELECT DISTINCT UPPER(typ||kurzbz) AS studiengang
FROM testtool.tbl_ablauf JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE gebiet_id=".$db->db_add_param($gebiet_id)."
ORDER BY studiengang";
$result = $db->db_query($qry);
if ($gebietdetails)
{
echo '
<table>
<tr>
<td align="right">Gebiet:</td>
<td>'.$gebietdetails->bezeichnung.'</td>
</tr>
<tr>
<td valign="top">Verwendet in den Studiengängen:</td>
<td>';
$i=1;
while ($row = $db->db_fetch_object($result))
{
echo $row->studiengang.($db->db_num_rows($result)>1 && $db->db_num_rows($result)>$i?', ':'');
$i++;
if ($i % 10 == 0)
echo '<br>';
}
echo '</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right">Beschreibung:</td>
<td>'.($gebietdetails->beschreibung!=''?$gebietdetails->beschreibung:'-').'</td>
</tr>
<tr>
<td align="right">Zeit:</td>
<td>'.$gebietdetails->zeit.'</td>
</tr>
<tr>
<td align="right">Multipleresponse:</td>
<td>'.($gebietdetails->multipleresponse==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Gestellte Fragen:</td>
<td>'.$gebietdetails->maxfragen.'</td>
</tr>
<tr>
<td align="right">Zufallsfrage:</td>
<td>'.($gebietdetails->zufallfrage==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Zufallsvorschlag:</td>
<td>'.($gebietdetails->zufallvorschlag==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Startlevel:</td>
<td>'.($gebietdetails->level_start!=''?$gebietdetails->level_start:'Keines').'</td>
</tr>
<tr>
<td align="right">Höheres Level nach:</td>
<td>'.($gebietdetails->level_sprung_auf!=''?$gebietdetails->level_sprung_auf.' richtigen Antwort(en)':'-').'</td>
</tr>
<tr>
<td align="right">Niedrigeres Level nach:</td>
<td>'.($gebietdetails->level_sprung_ab!=''?$gebietdetails->level_sprung_ab.' falschen Antwort(en)':'-').'</td>
</tr>
<tr>
<td align="right">Levelgleichverteilung:</td>
<td>'.($gebietdetails->levelgleichverteilung==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Maximalpunkte:</td>
<td>'.$gebietdetails->maxpunkte.'</td>
</tr>
<tr>
<td align="right">Antworten pro Zeile:</td>
<td>'.$gebietdetails->antwortenprozeile.'</td>
</tr>
</table><br><hr>';
}
$frage = new frage();
$frage->getFragenGebiet($gebiet_id);
foreach($frage->result as $fragen)
{
$sprachevorschlag = new vorschlag();
$spracheFrage = new frage();
$spracheFrage->getFrageSprache($fragen->frage_id, $sprache);
echo "<b>&lt;NR:".$fragen->nummer.($fragen->level!=""?"&nbsp;&nbsp;Level: ".$fragen->level."":"").($fragen->demo=="t"?"&nbsp;&nbsp;Demo":"")."&gt;</b><br> ";
//Sound einbinden
if($spracheFrage->audio!='')
{
echo ' <audio src="../sound.php?src=frage&amp;frage_id='.$spracheFrage->frage_id.'&amp;sprache='.$sprache.'" controls="controls">
<div>
<p>Ihr Browser unterstützt dieses Audioelement leider nicht.</p>
</div>
</audio>';
}
// FRAGE anzeigen
echo "$spracheFrage->text<br/><br/>\n";
// Bild einbinden wenn vorhanden
if($spracheFrage->bild!='')
echo "<img class='testtoolfrage' src='../bild.php?src=frage&amp;frage_id=$spracheFrage->frage_id&amp;sprache=".$sprache."' /><br/><br/>\n";
echo"<br><table>";
// ANTWORTEN anzeigen
$sprachevorschlag->getVorschlag($fragen->frage_id, $sprache, $random=false);
$anzahlBild = 0;
foreach($sprachevorschlag->result as $vor)
{
$vorschlag = new vorschlag();
$vorschlag->loadVorschlagSprache($vor->vorschlag_id, $sprache);
if($vorschlag->bild == '')
{
if ($loesungen)
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td></td><td align="right"><b>'.$vor->punkte.'</b></td><td style="border-left:1px solid;">&nbsp;'.$vorschlag->text.'</td></tr>';
}
else
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td><td>&nbsp;'.$vorschlag->text.'</td></tr>';
}
}
if($vorschlag->bild!='')
{
// zeilenumbruch nach 4 bilder
if($anzahlBild%4==0)
echo "</tr>";
echo "<td>";
echo "<img class='testtoolvorschlag' src='../bild.php?src=vorschlag&amp;vorschlag_id=$vor->vorschlag_id&amp;sprache=".$sprache."' /><br/>";
if ($loesungen)
{
echo "<br>".$vor->punkte."</td>";
}
else
{
echo "</td>";
}
$anzahlBild++;
}
if($vorschlag->audio!='')
{
echo ' <audio src="../sound.php?src=vorschlag&amp;vorschlag_id='.$vorschlag->vorschlag_id.'&amp;sprache='.$sprache.'" controls="controls">
<div>
<p>Ihr Browser unterstützt dieses Audioelement leider nicht.</p>
</div>
</audio>';
}
}
echo "</table><br><hr>";
}
}
?>
<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Karl Burkhart <burkhart@technikum-wien.at>,
*/
require_once("../../../config/cis.config.inc.php");
require_once('../../../include/basis_db.class.php');
require_once("../../../include/gebiet.class.php");
require_once("../../../include/frage.class.php");
require_once("../../../include/vorschlag.class.php");
require_once('../../../include/functions.inc.php');
require_once("../../../include/benutzerberechtigung.class.php");
require_once('../../../include/studiengang.class.php');
require_once('../../../include/ablauf.class.php');
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testool Fragen Übersicht</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body style="padding: 10px">
<?php
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
die('<span class="error">Sie haben keine Berechtigung für diese Seite</span>');
$gebiet = new gebiet();
$gebiet->getAll();
$sprache = (isset($_REQUEST['Sprache'])?$_REQUEST['Sprache']:'German');
$Auswahlgebiet = (isset($_REQUEST['AuswahlGebiet'])?$_REQUEST['AuswahlGebiet']:'');
$loesungen = (isset($_REQUEST['loesungen']) && $_REQUEST['loesungen'] != '' ? true:false);
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz', false);
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1');
$gebiet_id = (isset($_GET['gebiet_id'])?$_GET['gebiet_id']:'');
echo '<form action="'.$_SERVER['PHP_SELF'].'?stg_kz='.$stg_kz.'" method="post" name="TesttoolUebersicht">
<table>
<tr>
<td>Studiengang:</td><td>';
//Liste der Studiengänge
echo '<select onchange="window.location.href=this.value">';
echo '<option value="'.$_SERVER['PHP_SELF'].'?" >Alle Studiengänge</option>';
foreach ($studiengang->result as $row)
{
$stg_arr[$row->studiengang_kz] = $row->kuerzel;
if ($stg_kz == '')
$stg_kz = $row->studiengang_kz;
if ($row->studiengang_kz == $stg_kz)
$selected = 'selected="selected"';
else
$selected = '';
echo '<option value="'.$_SERVER['PHP_SELF'].'?stg_kz='.$row->studiengang_kz.'" '.$selected.'>'.$db->convert_html_chars($row->kuerzel).' - '.$db->convert_html_chars($row->bezeichnung).'</option>'."\n";
}
echo '</select>';
echo '</td>
</tr>
<tr>
<td>Gebiet:</td><td>';
//Liste der Gebiete
$qry = "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$db->db_add_param($stg_kz);
$anzahl = $db->db_num_rows($db->db_query($qry));
if ($stg_kz !== "-1" && $anzahl !== 0)
{
$qry = "SELECT * FROM testtool.tbl_gebiet LEFT JOIN testtool.tbl_ablauf USING (gebiet_id)
WHERE studiengang_kz=".$db->db_add_param($stg_kz)." ORDER BY semester,reihung";
}
else
$qry = "SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung";
if (($anzahl !== 0) || ($stg_kz == '-1') && ($stg_kz !== ''))
{
if ($result = $db->db_query($qry))
{
echo ' <select name="AuswahlGebiet">';
echo '<option value="auswahl"> - Bitte Auswählen - </option>';
while ($row = $db->db_fetch_object($result))
{
if ($Auswahlgebiet == $row->gebiet_id)
{
$selected = 'selected="selected"';
}
else
{
$selected = '';
}
if ($stg_kz == "-1")
{
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - ID:'.$row->gebiet_id.'</option>'."\n";
}
else
{
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>('.$row->semester.') - '.$row->bezeichnung.' - '.$row->kurzbz.' - ID:'.$row->gebiet_id.'</option>'."\n";
}
}
echo '</select>';
}
}
elseif (($anzahl == 0))
{
echo 'Keine Gebiete für diesen Studiengang';
}
echo '</td>';
/*echo '<td><select name="AuswahlGebiet"><option value="auswahl"> - Bitte Auswählen - </option>';
foreach ($gebiet->result as $gebietResult)
{
$selected ='';
if($Auswahlgebiet == $gebietResult->gebiet_id)
$selected = 'selected';
echo '<option value="'.$gebietResult->gebiet_id.'" '.$selected.'>'.$gebietResult->gebiet_id.' - '.$gebietResult->bezeichnung.' - '.$gebietResult->kurzbz.'</option>';
}
echo '</select></td>';*/
echo '</tr>
<tr>
<td>Sprache: </td>
<td><select name="Sprache">';
if($sprache == 'German')
echo '<option selected value="German">Deutsch</option>';
else
echo '<option value="German">Deutsch</option>';
if($sprache == 'English')
echo '<option selected value="English">Englisch</option>';
else
echo '<option value="English">Englisch</option>';
echo'</select>
</td>
</tr>
<tr>
<td>
Mit Lösungen
</td>
<td><input type="checkbox" name="loesungen" '.($loesungen ? 'checked':'').'></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Anzeigen"></td></tr>
</table><br>';
if(isset($_REQUEST['AuswahlGebiet']))
{
$gebiet_id = $_REQUEST['AuswahlGebiet'];
$gebietdetails = new gebiet();
$gebietdetails->load($gebiet_id);
$qry = "SELECT DISTINCT UPPER(typ||kurzbz) AS studiengang
FROM testtool.tbl_ablauf JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE gebiet_id=".$db->db_add_param($gebiet_id)."
ORDER BY studiengang";
$result = $db->db_query($qry);
if ($gebietdetails)
{
echo '
<table>
<tr>
<td align="right">Gebiet:</td>
<td>'.$gebietdetails->bezeichnung.'</td>
</tr>
<tr>
<td valign="top">Verwendet in den Studiengängen:</td>
<td>';
$i=1;
while ($row = $db->db_fetch_object($result))
{
echo $row->studiengang.($db->db_num_rows($result)>1 && $db->db_num_rows($result)>$i?', ':'');
$i++;
if ($i % 10 == 0)
echo '<br>';
}
echo '</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right">Beschreibung:</td>
<td>'.($gebietdetails->beschreibung!=''?$gebietdetails->beschreibung:'-').'</td>
</tr>
<tr>
<td align="right">Zeit:</td>
<td>'.$gebietdetails->zeit.'</td>
</tr>
<tr>
<td align="right">Multipleresponse:</td>
<td>'.($gebietdetails->multipleresponse==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Gestellte Fragen:</td>
<td>'.$gebietdetails->maxfragen.'</td>
</tr>
<tr>
<td align="right">Zufallsfrage:</td>
<td>'.($gebietdetails->zufallfrage==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Zufallsvorschlag:</td>
<td>'.($gebietdetails->zufallvorschlag==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Startlevel:</td>
<td>'.($gebietdetails->level_start!=''?$gebietdetails->level_start:'Keines').'</td>
</tr>
<tr>
<td align="right">Höheres Level nach:</td>
<td>'.($gebietdetails->level_sprung_auf!=''?$gebietdetails->level_sprung_auf.' richtigen Antwort(en)':'-').'</td>
</tr>
<tr>
<td align="right">Niedrigeres Level nach:</td>
<td>'.($gebietdetails->level_sprung_ab!=''?$gebietdetails->level_sprung_ab.' falschen Antwort(en)':'-').'</td>
</tr>
<tr>
<td align="right">Levelgleichverteilung:</td>
<td>'.($gebietdetails->levelgleichverteilung==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Maximalpunkte:</td>
<td>'.$gebietdetails->maxpunkte.'</td>
</tr>
<tr>
<td align="right">Antworten pro Zeile:</td>
<td>'.$gebietdetails->antwortenprozeile.'</td>
</tr>
</table><br><hr>';
}
$frage = new frage();
$frage->getFragenGebiet($gebiet_id);
foreach($frage->result as $fragen)
{
$sprachevorschlag = new vorschlag();
$spracheFrage = new frage();
$spracheFrage->getFrageSprache($fragen->frage_id, $sprache);
echo "<b>&lt;NR:".$fragen->nummer.($fragen->level!=""?"&nbsp;&nbsp;Level: ".$fragen->level."":"").($fragen->demo=="t"?"&nbsp;&nbsp;Demo":"")."&gt;</b><br> ";
//Sound einbinden
if($spracheFrage->audio!='')
{
echo ' <audio src="../sound.php?src=frage&amp;frage_id='.$spracheFrage->frage_id.'&amp;sprache='.$sprache.'" controls="controls">
<div>
<p>Ihr Browser unterstützt dieses Audioelement leider nicht.</p>
</div>
</audio>';
}
// FRAGE anzeigen
echo "$spracheFrage->text<br/><br/>\n";
// Bild einbinden wenn vorhanden
if($spracheFrage->bild!='')
echo "<img class='testtoolfrage' src='../bild.php?src=frage&amp;frage_id=$spracheFrage->frage_id&amp;sprache=".$sprache."' /><br/><br/>\n";
echo"<br><table>";
// ANTWORTEN anzeigen
$sprachevorschlag->getVorschlag($fragen->frage_id, $sprache, $random=false);
$anzahlBild = 0;
foreach($sprachevorschlag->result as $vor)
{
$vorschlag = new vorschlag();
$vorschlag->loadVorschlagSprache($vor->vorschlag_id, $sprache);
if($vorschlag->bild == '')
{
if ($loesungen)
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td></td><td align="right"><b>'.$vor->punkte.'</b></td><td style="border-left:1px solid;">&nbsp;'.$vorschlag->text.'</td></tr>';
}
else
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td><td>&nbsp;'.$vorschlag->text.'</td></tr>';
}
}
if($vorschlag->bild!='')
{
// zeilenumbruch nach 4 bilder
if($anzahlBild%4==0)
echo "</tr>";
echo "<td>";
echo "<img class='testtoolvorschlag' src='../bild.php?src=vorschlag&amp;vorschlag_id=$vor->vorschlag_id&amp;sprache=".$sprache."' /><br/>";
if ($loesungen)
{
echo "<br>".$vor->punkte."</td>";
}
else
{
echo "</td>";
}
$anzahlBild++;
}
if($vorschlag->audio!='')
{
echo ' <audio src="../sound.php?src=vorschlag&amp;vorschlag_id='.$vorschlag->vorschlag_id.'&amp;sprache='.$sprache.'" controls="controls">
<div>
<p>Ihr Browser unterstützt dieses Audioelement leider nicht.</p>
</div>
</audio>';
}
}
echo "</table><br><hr>";
}
}
?>
</body>
+3
View File
@@ -164,6 +164,9 @@ $pruefling->load($_SESSION['pruefling_id']);
if ($pruefling->gesperrt === 't')
die("<script>document.location.href='prueflinggesperrt.php';</script>");
if (!in_array($gebiet_id, $_SESSION['alleGebiete']))
die($p->t('testtool/dasGebietIstNichtFuerSieBestimmt'));
$gebiet = new gebiet($gebiet_id);
if($gebiet->level_start!='')
+59 -4
View File
@@ -82,7 +82,8 @@ if (isset($_REQUEST['prestudent']))
$ps = new prestudent($_REQUEST['prestudent']);
$login_ok = false;
if (defined('TESTTOOL_LOGIN_BEWERBUNGSTOOL') && TESTTOOL_LOGIN_BEWERBUNGSTOOL && isset($_GET['confirmation']))
if (defined('TESTTOOL_LOGIN_BEWERBUNGSTOOL') && TESTTOOL_LOGIN_BEWERBUNGSTOOL &&
(isset($_GET['confirmation']) || isset($_GET['confirmed_code'])))
{
if (isset($_SESSION['bewerbung/personId']) && $ps->person_id == $_SESSION['bewerbung/personId'])
{
@@ -153,6 +154,33 @@ if (isset($_REQUEST['prestudent']))
{
// regenerate Session ID after Login
session_regenerate_id();
if (defined('TESTTOOL_LOGIN_BEWERBUNGSTOOL') && TESTTOOL_LOGIN_BEWERBUNGSTOOL)
{
if ($rt->zugangs_ueberpruefung && !is_null($rt->zugangscode))
{
$_SESSION['confirmed_code'] = false;
if (isset($_SESSION['confirmation_needed']) && $_SESSION['confirmation_needed'] === true)
{
if (isset($_GET['confirmed_code']))
{
if ($_GET['confirmed_code'] === $_SESSION['reihungstest_code'])
{
$_SESSION['confirmed_code'] = true;
}
else
$alertmsg .= '<div class="alert alert-danger">Code ist nicht korrekt.</div>';
}
}
if ($_SESSION['confirmed_code'] === false)
{
$_SESSION['reihungstest_code'] = $rt->zugangscode;
$_SESSION['confirmation_needed'] = true;
}
else
$reload_menu = true;
}
}
$pruefling = new pruefling();
if ($pruefling->getPruefling($ps->prestudent_id))
@@ -314,8 +342,11 @@ else
}
}
if (isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']))
if ((isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) &&
!isset($_SESSION['confirmation_needed']) && !isset($_SESSION['confirmed_code'])) ||
(isset($_SESSION['confirmation_needed']) && $_SESSION['confirmation_needed'] === true &&
isset($_SESSION['confirmed_code']) && $_SESSION['confirmed_code'] === true &&
isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id'])))
{
$pruefling = new pruefling();
@@ -421,8 +452,32 @@ if (isset($_POST['save']) && isset($_SESSION['prestudent_id']))
<?php
if (isset($_SESSION['confirmation_needed']) && $_SESSION['confirmation_needed'] === true &&
isset($_SESSION['confirmed_code']) && $_SESSION['confirmed_code'] === false)
{
echo '
<div class="col-xs-11">
<div id="alertmsgdiv"></div>
<div id="alert">'.$alertmsg.'</div>
<div class="row text-center">
'.$p->t('testtool/freischalttext').'
<br />
<br />
<b>'.$p->t('testtool/freischaltcode').':</b>
<form action="login.php">
<input type="hidden" name="prestudent" value="'.$_REQUEST['prestudent'].'" />
<input id="confirmed_code" type="number" name="confirmed_code"/>
<br />
<br />
<button id="confirmation_access_submit" type="submit" class="btn btn-primary"/>
'.$p->t('testtool/start').'
</button>
</form>
</div>
</div>';
}
//REIHUNGSTEST STARTSEITE (nach Login)
if (isset($prestudent_id))
elseif (isset($prestudent_id))
{
$prestudent = new prestudent($prestudent_id);
$stg_obj = new studiengang($prestudent->studiengang_kz);
+2
View File
@@ -277,6 +277,7 @@ if (isset($_SESSION['pruefling_id']))
$anzahlGebiete = $db->db_num_rows($result);
$lastsemester = '';
$quereinsteiger_stg = '';
$_SESSION['alleGebiete']= [];
while($row = $db->db_fetch_object($result))
{
//Jedes Semester in einer eigenen Tabelle anzeigen
@@ -385,6 +386,7 @@ if (isset($_SESSION['pruefling_id']))
</td>
<!--<td width="10" class="ItemTesttoolRight" nowrap>&nbsp;</td>-->
</tr>';
$_SESSION['alleGebiete'][] = $row->gebiet_id;
}
else
{
+7
View File
@@ -259,4 +259,11 @@ define('CIS_ZEITWUNSCH_GD', false);
// Covid-Status anzeigen
define('CIS_SHOW_COVID_STATUS', false);
//Vertrag Allin
define ('DEFAULT_ALLIN_DIENSTVERTRAG',[111]);
//Echter Dienstvertrag
define ('DEFAULT_ECHTER_DIENSTVERTRAG',[103,111]);
?>
+3
View File
@@ -268,4 +268,7 @@ define('ZEUGNISNOTE_NICHT_ANZEIGEN',serialize(array('iar', 'nz')));
//Default Lehrmodus
define ('DEFAULT_LEHRMODUS','regulaer');
//Echter Dienstvertrag
define ('DEFAULT_ECHTER_DIENSTVERTRAG',[103,110]);
?>
+12 -2
View File
@@ -65,6 +65,13 @@ $data = '';
$error = false;
$warnung = false;
//Default BA1Codes für echte Dienstverträge aus Config Laden
$arrEchterDV = [103];
if (defined('DEFAULT_ECHTER_DIENSTVERTRAG') && DEFAULT_ECHTER_DIENSTVERTRAG != '')
{
$arrEchterDV = DEFAULT_ECHTER_DIENSTVERTRAG;
}
loadVariables($user);
//Berechtigungen laden
@@ -560,10 +567,12 @@ if(!$error)
{
// Bei echten Dienstvertraegen mit voller inkludierter Lehre wird kein Stundensatz
// geliefert da dies im Vertrag inkludiert ist.
if ($row_verwendung->ba1code == 103 && $row_verwendung->inkludierte_lehre == -1)
if ((in_array($row_verwendung->ba1code, $arrEchterDV)) && $row_verwendung->inkludierte_lehre == -1)
{
$fixangestellt = true;
$lem->stundensatz = '';
break;
}
}
@@ -1567,9 +1576,10 @@ if(!$error)
foreach($bisverwendung->result as $row_verwendung)
{
// Bei echten Dienstvertraegen mit voller inkludierter Lehre wird kein Stundensatz
// geliefert da dies im Vertrag inkludiert ist.
if ($row_verwendung->ba1code == 103 && $row_verwendung->inkludierte_lehre == -1)
if ((in_array($row_verwendung->ba1code, $arrEchterDV)) && $row_verwendung->inkludierte_lehre == -1)
{
$data = '';
break;
@@ -469,12 +469,24 @@ $p = new phrasen($sprache);
<label align="end" control="lehrveranstaltung-lehreinheitmitarbeiter-menulist-lektor" value="LektorIn:"/>
<menulist id="lehrveranstaltung-lehreinheitmitarbeiter-menulist-lektor" disabled="true" oncommand="LeMitarbeiterLektorChange(); LeMitarbeiterValueChanged();"
datasources="<?php echo APP_ROOT; ?>rdf/mitarbeiter.rdf.php"
xmlns:MITARBEITER="http://www.technikum-wien.at/mitarbeiter/rdf#"
ref="http://www.technikum-wien.at/mitarbeiter/_alle" flex="1">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname"
value="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid"/>
</menupopup>
<rule MITARBEITER:aktiv='inaktiv'>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname"
value="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid"
style="text-decoration:line-through;"
/>
</menupopup>
</rule>
<rule>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname"
value="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid"/>
</menupopup>
</rule>
</template>
</menulist>
<label control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" value="<?php echo $p->t('lehrveranstaltung/LehreinheitmitarbeiterAnmerkung'); ?>"/>
@@ -43,6 +43,7 @@ var lehrveranstaltungLvGesamtNotenSelectUID=null; //LehreinheitID des Noten Eint
var lehrveranstaltungNotenTreeloaded=false;
var lehrveranstaltungGesamtNotenTreeloaded=false;
var LehrveranstaltungAusbildungssemesterFilter='';
var LeDetailsDisabled = false; //Damit die Details von der Lehreinheit disabled bleiben soland der Rebuild nicht fertig ist
// Config-Eintrag, ob Vertragsdetails angezeigt werden sollen
var lehrveranstaltung_vertragsdetails_anzeigen = Boolean(<?php echo (defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') && FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN) ? true : false ?>);
@@ -80,6 +81,7 @@ var LvTreeListener =
didRebuild : function(builder)
{
//debug('didrebuild');
LeDetailsDisabled = false;
//timeout nur bei Mozilla notwendig da sonst die rows
//noch keine values haben. Ab Seamonkey funktionierts auch
//ohne dem setTimeout
@@ -452,7 +454,7 @@ function LvTreeSelectLehreinheit()
return false;
//In der globalen Variable ist die zu selektierende Lehreinheit gespeichert
if(LvSelectLehreinheit_id!=null)
if(LvSelectLehreinheit_id!=null && LeDetailsDisabled === false)
{
//Den Subtree der Lehrveranstaltung oeffnen zu der zuletzt die Lehreinheit gespeichert/angelegt wurde
//da diese sonst nicht markiert werden kann
@@ -754,6 +756,7 @@ function LeDetailSave()
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
document.getElementById('lehrveranstaltung-detail-checkbox-new').checked=false;
LeDetailDisableFields(true);
LeDetailsDisabled = true;
//LvTreeRefresh();
LvSelectLehreinheit_id=val.dbdml_data;
LvOpenLehrveranstaltung_id=lehrveranstaltung;
@@ -820,7 +823,12 @@ function LeAuswahl()
LehrveranstaltungNotenLoad(lehrveranstaltung_id);
//Notizen Tab ausblenden
//document.getElementById('lehrveranstaltung-tab-notizen').collapsed=true;
document.getElementById('lehrveranstaltung-tab-notizen').collapsed=true;
if(document.getElementById('lehrveranstaltung-tabs').selectedItem === document.getElementById('lehrveranstaltung-tab-notizen'))
{
document.getElementById('lehrveranstaltung-tabs').selectedItem = document.getElementById('lehrveranstaltung-tab-detail');
}
//LV-Angebot Tab einblenden und Gruppen laden
document.getElementById('lehrveranstaltung-tab-lvangebot').collapsed=false;
@@ -845,7 +853,8 @@ function LeAuswahl()
}
else
{
LeDetailDisableFields(false);
if (LeDetailsDisabled === false)
LeDetailDisableFields(false);
LehrveranstaltungNotenDisableFields(true);
LehrveranstaltungNotenTreeUnload();
@@ -853,7 +862,7 @@ function LeAuswahl()
//document.getElementById('lehrveranstaltung-tab-noten').collapsed=true;
//Notizen Tab einblenden
//document.getElementById('lehrveranstaltung-tab-notizen').collapsed=false;
document.getElementById('lehrveranstaltung-tab-notizen').collapsed=false;
//LV-Angebot Tab ausblenden
document.getElementById('lehrveranstaltung-tab-lvangebot').collapsed=true;
@@ -216,6 +216,10 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#studiensemester_kurzbz"/>
<splitter class="tree-splitter"/>
<treecol id="lehrveranstaltung-treecol-unr" label="UNR" flex="1" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#unr"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
@@ -249,6 +253,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
<treecell label="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#studienplan_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#lehrtyp_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#studiensemester_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/lehrveranstaltung_einheiten/rdf#unr"/>
</treerow>
</treeitem>
</treechildren>
@@ -255,13 +255,22 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<label align="end" control="mitarbeiter-detail-menulist-standort" value="Standort"/>
<vbox>
<menulist id="mitarbeiter-detail-menulist-standort" disabled="true"
xmlns:STANDORT="http://www.technikum-wien.at/standort/rdf#"
datasources="<?php echo APP_ROOT; ?>rdf/standort.rdf.php?optional=true&amp;firmentyp_kurzbz=Intern"
ref="http://www.technikum-wien.at/standort/liste" oncommand="MitarbeiterDetailValueChange()">
<template>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/standort/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/standort/rdf#standort_id"/>
</menupopup>
<rule STANDORT:bezeichnung_null="t">
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/standort/rdf#kurzbz"
value="rdf:http://www.technikum-wien.at/standort/rdf#standort_id"/>
</menupopup>
</rule>
<rule>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/standort/rdf#bezeichnung"
value="rdf:http://www.technikum-wien.at/standort/rdf#standort_id"/>
</menupopup>
</rule>
</template>
</menulist>
<spacer flex="1"/>
@@ -179,6 +179,8 @@ $worksheet->write($zeile, ++$i, "RT_PUNKTE2", $format_bold);
$maxlength[$i] = 10;
$worksheet->write($zeile, ++$i, "RT_GESAMTPUNKTE", $format_bold);
$maxlength[$i] = 18;
$worksheet->write($zeile,++$i,"ANMERKUNG", $format_bold);
$maxlength[$i]=30;
$worksheet->write($zeile, ++$i, "PRIORITÄT", $format_bold);
$maxlength[$i] = 8;
@@ -659,7 +661,21 @@ function draw_content($row)
$maxlength[$i] = mb_strlen($row->rt_gesamtpunkte);
$worksheet->write($zeile, $i, $row->rt_gesamtpunkte);
$i++;
//Anmerkung
$qry_1 = "SELECT anmerkung FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)." LIMIT 1";
if($db->db_query($qry_1))
{
if($row_1 = $db->db_fetch_object())
{
if(mb_strlen($row_1->anmerkung)>$maxlength[$i])
$maxlength[$i]=mb_strlen($row_1->anmerkung);
$worksheet->write($zeile,$i, $row_1->anmerkung);
}
}
$i++;
//Priorisierung
$prio = $prio_relativ.' ('.$row->priorisierung.')';
if (mb_strlen($prio) > $maxlength[$i])
+26 -1
View File
@@ -821,7 +821,16 @@ if(!$error)
$prestudent->zgvdatum = $_POST['zgvdatum'];
$prestudent->zgvnation = $_POST['zgvnation'];
$prestudent->zgv_erfuellt = $_POST['zgv_erfuellt'];
$prestudent->zgvmas_code = $_POST['zgvmas_code'];
// Die Master-ZGV darf nur mit einem eigenen Recht geändert werden
if($rechte->isBerechtigt('student/editMakkZgv',$_POST['studiengang_kz'],'suid'))
{
$prestudent->zgvmas_code = $_POST['zgvmas_code'];
}
elseif ($prestudent->zgvmas_code != $_POST['zgvmas_code'])
{
$errormsg = 'Keine Berechtigung zum Ändern der ZGV';
$error = true;
}
$prestudent->zgvmaort = $_POST['zgvmaort'];
$prestudent->zgvmadatum = $_POST['zgvmadatum'];
$prestudent->zgvmanation = $_POST['zgvmanation'];
@@ -2499,7 +2508,23 @@ if(!$error)
}
if($exists)
{
$return = true;
$zusatz = "\n";
if (count($exists) > 10)
{
$zusatz .= "und ";
$persons = implode("\n- ", array_slice($exists, 0, 10));
if (count($exists) === 11)
$zusatz .= "einer weiteren Person.";
else
$zusatz .= (count($exists) - 10) . " weiteren Personen.";
}
else
$persons = implode("\n- ", $exists);
$data = "Es ist bereits eine Buchung vorhanden:\n- ". $persons . $zusatz ." Trotzdem fortfahren?";
}
else
$return = false;
}
+6 -6
View File
@@ -355,7 +355,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<rule ZGV:aktiv='f'>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgv/rdf#code"
label="rdf:http://www.technikum-wien.at/zgv/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/zgv/rdf#bezeichnung"
uri="rdf:*"
style="text-decoration:line-through;"
/>
@@ -364,7 +364,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<rule>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgv/rdf#code"
label="rdf:http://www.technikum-wien.at/zgv/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/zgv/rdf#bezeichnung"
uri="rdf:*"
/>
</menupopup>
@@ -425,7 +425,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<rule ZGVMASTER:aktiv='f'>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvmaster/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvmaster/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/zgvmaster/rdf#bezeichnung"
uri="rdf:*"
style="text-decoration:line-through;"
/>
@@ -434,7 +434,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<rule>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvmaster/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvmaster/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/zgvmaster/rdf#bezeichnung"
uri="rdf:*"
/>
</menupopup>
@@ -497,7 +497,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<rule ZGVDOKTOR:aktiv='f'>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#bezeichnung"
uri="rdf:*"
style="text-decoration:line-through;"
/>
@@ -506,7 +506,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<rule>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#code"
label="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#kurzbz"
label="rdf:http://www.technikum-wien.at/zgvdoktor/rdf#bezeichnung"
uri="rdf:*"
/>
</menupopup>
@@ -184,12 +184,13 @@ function StudentMobilitaetDisableFields(val)
document.getElementById('student-mobilitaet-menulist-status').disabled=val;
document.getElementById('student-mobilitaet-textbox-ausbildungssemester').disabled=val;
document.getElementById('student-mobilitaet-button-speichern').disabled=val;
document.getElementById('student-mobilitaet-button-kopie-speichern').disabled=val;
}
// ****
// * Speichert den Mobilitaet Datensatz
// ****
function StudentMobilitaetSpeichern()
function StudentMobilitaetSpeichern(newval)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
@@ -200,7 +201,14 @@ function StudentMobilitaetSpeichern()
var gsprogramm = document.getElementById('student-mobilitaet-menulist-gsprogramm').value;
var mobilitaetsprogramm = document.getElementById('student-mobilitaet-menulist-mobilitaetsprogramm').value;
var studiensemester = document.getElementById('student-mobilitaet-menulist-studiensemester').value;
var neu = document.getElementById('student-mobilitaet-detail-checkbox-neu').checked;
if (newval == true)
{
var neu = true;
}
else
{
var neu = document.getElementById('student-mobilitaet-detail-checkbox-neu').checked;
}
var prestudent_id = document.getElementById('student-mobilitaet-detail-textbox-prestudent_id').value;
var mobilitaet_id = document.getElementById('student-mobilitaet-detail-textbox-mobilitaet_id').value;
@@ -215,6 +215,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
</groupbox>
<hbox>
<spacer flex="1" />
<button id="student-mobilitaet-button-kopie-speichern" oncommand="StudentMobilitaetSpeichern(true)" label="Als Kopie speichern" disabled="true"/>
<button id="student-mobilitaet-button-speichern" oncommand="StudentMobilitaetSpeichern()" label="Speichern" disabled="true"/>
</hbox>
</vbox>
+17 -3
View File
@@ -1829,6 +1829,20 @@ function StudentPrestudentDisableFields(val)
document.getElementById('student-prestudent-menulist-zgvcode').disabled=true;
}
<?php
$studiengaengeMaster = $rechte->getStgKz('student/editMakkZgv');
// Anlegen eines Arrays mit allen berechtigten Stg-Kz
echo ' var berechtigte_master_studiengaenge = ['.implode(',',$studiengaengeMaster).'];';
?>
if (berechtigte_master_studiengaenge.indexOf(studiengang_kz) >= 0)
{
document.getElementById('student-prestudent-menulist-zgvmastercode').disabled=val;
}
else
{
document.getElementById('student-prestudent-menulist-zgvmastercode').disabled=true;
}
//Status Tree leeren
rollentree = document.getElementById('student-prestudent-tree-rolle');
@@ -3102,9 +3116,9 @@ function StudentKontoNeuSpeichern(dialog, person_ids, studiengang_kz)
{
exists = StudentCheckBuchung(person_ids, studiensemester_kurzbz, buchungstyp_kurzbz, studiengang_kz);
}
if (exists)
if (exists.dbdml_return)
{
if(!confirm('Die Buchung ist bereits vorhanden. Trotzdem fortfahren?'))
if(!confirm(exists.dbdml_data))
return false;
}
@@ -3159,7 +3173,7 @@ function StudentCheckBuchung(person_ids, studiensemester_kurzbz, buchungstyp_kur
var val = new ParseReturnValue(response);
return(val.dbdml_return);
return val;
}
// *****
+21 -5
View File
@@ -30,7 +30,7 @@ class addon extends basis_db
public $fhcomplete_target_version;
public $aktive_addons=array();
/**
* Konstruktor
*/
@@ -38,12 +38,12 @@ class addon extends basis_db
{
parent::__construct();
$this->aktive_addons = array_filter(array_map('trim', explode(";", ACTIVE_ADDONS)));
}
/**
* Liefert alle aktivierten Addons
*/
*/
public function loadAddons()
{
@@ -55,7 +55,7 @@ class addon extends basis_db
$fhcomplete_target_version='';
include(dirname(__FILE__).'/../addons/'.$addon.'/version.php');
$obj = new stdClass();
$obj->kurzbz = $addon;
$obj->addon_name = $addon_name;
@@ -63,7 +63,7 @@ class addon extends basis_db
$obj->addon_description = $addon_description;
$obj->fhcomplete_target_version = $fhcomplete_target_version;
$this->result[] = $obj;
}
return true;
@@ -87,5 +87,21 @@ class addon extends basis_db
$this->fhcomplete_target_version = $fhcomplete_target_version;
}
/**
* Prüfen, ob ein bestimmtes Addon aktivierten ist
* @param $addon_kurzbz (fhtw,casetime, wawi..)
* @return true wenn addon aktiv, sonst false
*/
public function checkActiveAddon($addon_kurzbz)
{
$addonIsActive = false;
foreach($this->aktive_addons as $addon)
{
if ($addon == $addon_kurzbz)
$addonIsActive = true;
}
return $addonIsActive;
}
}
?>
+4 -3
View File
@@ -479,9 +479,9 @@ class anwesenheit extends basis_db
*/
public function loadAnwesenheitStudiensemester($studiensemester_kurzbz, $student_uid=null, $lehrveranstaltung_id=null)
{
$qry = "SELECT lehrveranstaltung_id, bezeichnung, vorname, nachname, uid, sum(anwesend) as anwesend, sum(nichtanwesend) as nichtanwesend, sum(gesamtstunden) as gesamtstunden FROM (
$qry = "SELECT lehrveranstaltung_id, bezeichnung, vorname, wahlname, nachname,uid, sum(anwesend) as anwesend, sum(nichtanwesend) as nichtanwesend, sum(gesamtstunden) as gesamtstunden FROM (
SELECT
lehrveranstaltung_id, bezeichnung, vorname, nachname, uid,
lehrveranstaltung_id, bezeichnung, vorname, wahlname, nachname, uid,
(
SELECT
sum(einheiten)
@@ -520,7 +520,7 @@ class anwesenheit extends basis_db
if(!is_null($student_uid))
$qry.=" AND uid=".$this->db_add_param($student_uid);
$qry.=") as b GROUP BY lehrveranstaltung_id, bezeichnung, vorname, nachname, uid";
$qry.=") as b GROUP BY lehrveranstaltung_id, bezeichnung, vorname, wahlname, nachname, uid";
if($lehrveranstaltung_id!='')
$qry.=" order by nachname, vorname ";
@@ -543,6 +543,7 @@ class anwesenheit extends basis_db
else
$obj->prozent = number_format(100-(100/$obj->gesamtstunden*$row->nichtanwesend),2);
$obj->vorname = $row->vorname;
$obj->wahlname = $row->wahlname;
$obj->nachname = $row->nachname;
$obj->uid = $row->uid;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
+59
View File
@@ -865,5 +865,64 @@ class bisverwendung extends basis_db
return false;
}
}
/**
* Lädt die letzte zeitaufzeichnungspflichtige Bisverwendung
* @param $uid UID des Mitarbeiters
* @return true wenn ok, false wenn Fehler
*/
public function getLastBisZAPflicht($uid)
{
$qry = '
SELECT
*
FROM
bis.tbl_bisverwendung
WHERE
mitarbeiter_uid = '. $this->db_add_param($uid).'
AND
zeitaufzeichnungspflichtig = true
ORDER BY ende DESC NULLS FIRST LIMIT 1
';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new bisverwendung();
$obj->bisverwendung_id = $row->bisverwendung_id;
$obj->ba1code = $row->ba1code;
$obj->ba2code = $row->ba2code;
$obj->beschausmasscode = $row->beschausmasscode;
$obj->verwendung_code = $row->verwendung_code;
$obj->hauptberufcode = $row->hauptberufcode;
$obj->hauptberuflich = $row->hauptberuflich;
$obj->habilitation = $row->habilitation;
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->updatevon = $row->updatevon;
$obj->updateamum = $row->updateamum;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->vertragsstunden = $row->vertragsstunden;
$obj->dv_art = $row->dv_art;
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->azgrelevant = $row->azgrelevant;
$obj->homeoffice = $row->homeoffice;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
}
?>
+14 -10
View File
@@ -967,19 +967,23 @@ class konto extends basis_db
public function checkDoppelteBuchung($person_ids, $stsem, $typ)
{
$qry = "SELECT betrag
FROM public.tbl_konto
WHERE person_id IN (".$this->implode4SQL(array_filter($person_ids)).")
AND studiensemester_kurzbz = ".$this->db_add_param($stsem)."
AND buchungstyp_kurzbz = ".$this->db_add_param($typ)."
GROUP BY buchungsnr";
$qry = "SELECT person.vorname, person.nachname
FROM public.tbl_konto konto
JOIN public.tbl_person person USING(person_id)
WHERE konto.person_id IN (".$this->implode4SQL(array_filter($person_ids)).")
AND studiensemester_kurzbz = ".$this->db_add_param($stsem)."
AND buchungstyp_kurzbz = ".$this->db_add_param($typ)."
GROUP BY person.vorname, person.nachname
ORDER BY person.nachname, person.vorname";
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
return true;
else
return false;
$persons = array();
while ($row = $this->db_fetch_object($result))
{
$persons[] = $row->nachname . ' ' . $row->vorname;
}
return $persons;
}
else
{
+6 -3
View File
@@ -206,9 +206,10 @@ class LehreListHelper
WHERE prestudent_id=tbl_student.prestudent_id
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang,
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
(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
FROM
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
@@ -230,10 +231,11 @@ 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, tbl_bisio.bis, doubledegree DESC';
$qry.=' ORDER BY nachname, vorname, person_id, daysout DESC, doubledegree DESC';
$stsem_obj = new studiensemester();
$stsem_obj->load($this->studiensemester);
$stsemdatumvon = $stsem_obj->start;
$stsemdatumbis = $stsem_obj->ende;
@@ -295,6 +297,7 @@ class LehreListHelper
'uid' => $row->student_uid,
'vorname'=>$vorname,
'nachname'=>$row->nachname,
'geschlecht'=>$row->geschlecht,
'personenkennzeichen'=>trim($row->matrikelnr),
'matr_nr'=>$row->matr_nr,
'semester'=>$row->semester,
+85
View File
@@ -2776,5 +2776,90 @@ class lehrveranstaltung extends basis_db
return null;
}
/**
* Prueft ob die Lehrveranstaltungen in dem Studiensemestern angeboten wird.
* Dazu wird geprueft ob die LVs einem aktuellen Studienplan zugeordnet ist und ob ein Lehrauftrag vorhanden ist.
*
* @param $lehrveranstaltung_id
* @param $studiensemester_kurzbz
* @return array
*/
public function getOfferedSemester($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
DISTINCT(studiensemester_kurzbz)
FROM
lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id)."
AND studiensemester_kurzbz IN (".$this->db_implode4SQL($studiensemester_kurzbz).")
AND EXISTS (
SELECT
*
FROM
lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
AND studiensemester_kurzbz IN (".$this->db_implode4SQL($studiensemester_kurzbz).")
)";
$studiensemester = [];
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$studiensemester[] = $row;
}
return $studiensemester;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft ob die Lehrveranstaltungen in den gewaehlten Studiensemestern angeboten wird.
* Dazu wird geprueft ob die LVs einem aktuellen Studienplan zugeordnet ist, und ob ein Lehrauftrag vorhanden ist.
*
* @param $lehrveranstaltung_id
* @param $studiensemester_kurzbz
* @return array
*/
public function getOfferedLVs($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
DISTINCT(tbl_lehreinheit.lehrveranstaltung_id)
FROM
lehre.tbl_lehreinheit
WHERE tbl_lehreinheit.lehrveranstaltung_id IN (".$this->db_implode4SQL($lehrveranstaltung_id).")
AND tbl_lehreinheit.studiensemester_kurzbz IN (".$this->db_implode4SQL($studiensemester_kurzbz).")
AND EXISTS (
SELECT
*
FROM
lehre.tbl_studienplan_lehrveranstaltung
JOIN lehre.tbl_studienplan_semester USING(studienplan_id)
WHERE
tbl_lehreinheit.lehrveranstaltung_id IN (".$this->db_implode4SQL($lehrveranstaltung_id).")
AND tbl_lehreinheit.studiensemester_kurzbz IN (".$this->db_implode4SQL($studiensemester_kurzbz).")
)";
$lehrveranstaltungen = [];
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$lehrveranstaltungen[] = $row;
}
return $lehrveranstaltungen;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+72
View File
@@ -1113,6 +1113,50 @@ class mitarbeiter extends benutzer
return $return;
}
/**
* Gibt ein Array mit den UIDs der Vorgesetzten zum Zeitpunkt des korrespondierenden Timesheets zurück
* @return uid
*/
public function getVorgesetzteMonatTimesheet($uid, $timesheetDate)
{
$return=false;
$qry = "SELECT
uid as vorgesetzter
FROM
public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='Leitung' AND
(datum_von is null OR datum_von<=".$this->db_add_param($timesheetDate).") AND
(datum_bis is null OR datum_bis>=".$this->db_add_param($timesheetDate).") AND
oe_kurzbz in (SELECT oe_kurzbz
FROM public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='oezuordnung' AND uid=".$this->db_add_param($uid)." AND
(datum_von is null OR (datum_von<= ".$this->db_add_param($timesheetDate).")) AND
(datum_bis is null OR (datum_bis>=".$this->db_add_param($timesheetDate)."))
);";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
if ($row->vorgesetzter!='')
{
$this->vorgesetzte[]=$row->vorgesetzter;
$return=true;
}
}
$this->vorgesetzte = array_unique($this->vorgesetzte);
}
else
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage!';
}
return $return;
}
/**
* Gibt UID des letzten Vorgesetzten zurück
* @param string $uid Mitarbeiter.
@@ -1705,5 +1749,33 @@ class mitarbeiter extends benutzer
}
}
public function getMitarbeiterKostenstelle($von, $bis, $uid = null)
{
if (is_null($uid))
$uid = $this->uid;
$qry = "
SELECT o.oe_kurzbz AS standardkostenstelle, o.bezeichnung
FROM public.tbl_benutzerfunktion bf
JOIN public.tbl_organisationseinheit o USING(oe_kurzbz)
WHERE bf.funktion_kurzbz = 'kstzuordnung'
AND (bf.datum_bis IS NULL OR datum_bis >= ". $this->db_add_param($von). ")
AND (bf.datum_von IS NULL OR datum_von <= ". $this->db_add_param($bis). ")
AND bf.uid = ". $this->db_add_param($uid);
if ($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new StdClass();
$obj->oekurzbz = $row->standardkostenstelle;
$obj->bezeichnung = $row->bezeichnung;
$this->result []= $obj;
}
return true;
}
}
}
?>
+37
View File
@@ -938,5 +938,42 @@ class organisationseinheit extends basis_db
return false;
}
}
public function getOERoot($oe_kurzbz)
{
$qry = '
WITH RECURSIVE organizations(rid, oe_kurzbz, oe_parent_kurzbz) AS
(
SELECT 1 AS rid, o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o
WHERE o.oe_kurzbz = '. $this->db_add_param($oe_kurzbz). '
UNION ALL
SELECT rid + 1 AS rid, oe.oe_kurzbz, oe.oe_parent_kurzbz
FROM organizations org, public.tbl_organisationseinheit oe
WHERE oe.oe_kurzbz = org.oe_parent_kurzbz
AND oe.aktiv = TRUE
)
SELECT oe_kurzbz
FROM organizations orgs
ORDER BY rid DESC
LIMIT 1
';
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->oe_kurzbz = $row->oe_kurzbz;
return true;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Organisationseinheiten';
return false;
}
}
}
?>
+42 -42
View File
@@ -588,7 +588,7 @@ class prestudent extends person
AND
status_kurzbz = 'Interessent'
AND
AND
NOT EXISTS (
SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_prestudent.prestudent_id AND status_kurzbz='Abgewiesener'
)";
@@ -2327,51 +2327,51 @@ class prestudent extends person
* false wenn nicht vorhanden
* false und errormsg wenn Fehler aufgetreten ist
*/
public function existsZGVIntern($person_id)
{
if (!is_numeric($person_id))
{
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
return false;
}
public function existsZGVIntern($person_id)
{
if (!is_numeric($person_id))
{
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT count(*) as anzahl FROM public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student')
AND typ = 'b'
AND get_rolle_prestudent(prestudent_id, null) != 'Abbrecher';";
$qry = "SELECT count(*) as anzahl FROM public.tbl_prestudent
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student')
AND typ in ('b','m','d')";
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
if ($row->anzahl > 0)
{
$this->errormsg = '';
return true;
}
else
{
$this->errormsg = '';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
if ($row->anzahl > 0)
{
$this->errormsg = '';
return true;
}
else
{
$this->errormsg = '';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Befüllt MasterZGV-Felder: Nation mit Österreich und MasterZGV-code mit FH-Bachelor(I)
* @param int $person_id Personenkennzeichen.
+34
View File
@@ -829,5 +829,39 @@ class projektphase extends basis_db
return false;
}
}
/**
* Gibt zurück, ob für eine Projektphase Zeitaufzeichnungsbuchung erlaubt ist
* @param $projektphase_id die zu überprüfende Projektphase
* @return boolean true, wenn Buchung erlaubt
*/
public function getPhasenZA($projektphase_id)
{
$qry = "
SELECT
fue.tbl_projektphase.zeitaufzeichnung
FROM
fue.tbl_projektphase
WHERE
tbl_projektphase.projektphase_id = ".$this->db_add_param($projektphase_id);
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
return $row->zeitaufzeichnung;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+12 -3
View File
@@ -60,6 +60,9 @@ class reihungstest extends basis_db
public $anmeldedatum; // date
public $teilgenommen; // boolean
public $punkte; // numeric
public $zugangs_ueberpruefung = false; //boolean
public $zugangscode; //smallint
/**
@@ -114,6 +117,8 @@ class reihungstest extends basis_db
$this->stufe = $row->stufe;
$this->anmeldefrist = $row->anmeldefrist;
$this->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
$this->zugangs_ueberpruefung = $this->db_parse_bool($row->zugangs_ueberpruefung);
$this->zugangscode = $row->zugangscode;
return true;
}
@@ -229,7 +234,7 @@ class reihungstest extends basis_db
$qry = 'BEGIN; INSERT INTO public.tbl_reihungstest (studiengang_kz, ort_kurzbz, anmerkung, datum, uhrzeit,
insertamum, insertvon, updateamum, updatevon, max_teilnehmer, oeffentlich, freigeschaltet,
studiensemester_kurzbz, stufe, anmeldefrist, aufnahmegruppe_kurzbz) VALUES('.
studiensemester_kurzbz, stufe, anmeldefrist, aufnahmegruppe_kurzbz, zugangs_ueberpruefung, zugangscode) VALUES('.
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '.
$this->db_add_param($this->ort_kurzbz).', '.
$this->db_add_param($this->anmerkung).', '.
@@ -243,7 +248,9 @@ class reihungstest extends basis_db
$this->db_add_param($this->studiensemester_kurzbz).','.
$this->db_add_param($this->stufe, FHC_INTEGER).','.
$this->db_add_param($this->anmeldefrist).','.
$this->db_add_param($this->aufnahmegruppe_kurzbz).');';
$this->db_add_param($this->aufnahmegruppe_kurzbz). ',' .
$this->db_add_param($this->zugangs_ueberpruefung, FHC_BOOLEAN).','.
$this->db_add_param($this->zugangscode) . ');';
}
else
{
@@ -261,7 +268,9 @@ class reihungstest extends basis_db
'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).', '.
'stufe='.$this->db_add_param($this->stufe, FHC_INTEGER).', '.
'anmeldefrist='.$this->db_add_param($this->anmeldefrist).', '.
'aufnahmegruppe_kurzbz='.$this->db_add_param($this->aufnahmegruppe_kurzbz).' '.
'aufnahmegruppe_kurzbz='.$this->db_add_param($this->aufnahmegruppe_kurzbz).', '.
'zugangs_ueberpruefung='.$this->db_add_param($this->zugangs_ueberpruefung, FHC_BOOLEAN).', '.
'zugangscode='.$this->db_add_param($this->zugangscode).' '.
'WHERE reihungstest_id='.$this->db_add_param($this->reihungstest_id, FHC_INTEGER, false).';';
}
+1 -1
View File
@@ -525,7 +525,7 @@ class statistik extends basis_db
foreach($_REQUEST as $name=>$value)
{
// Inputs, die in eckigen Klammern stehen, werden als Array interpretiert
if (substr($value, 0, 1) == '[' && substr($value, -1) == ']')
if (is_string($value) && substr($value, 0, 1) == '[' && substr($value, -1) == ']')
{
//Eckige Klammern entfernen und String aufsplitten
$value = substr($value, 1);
+2
View File
@@ -897,6 +897,8 @@ or not exists
foreach ($this->result as $row)
{
if($row->aktivitaet_kurzbz == 'DienstreiseMT' ) continue;
$datumtag = $datum->formatDatum($row->datum, 'Y-m-d');
if (($tagesbeginn == '' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format = 'Y-m-d H:i:s')) > $datum->mktime_fromtimestamp($datum->formatDatum($row->start, $format = 'Y-m-d H:i:s'))) && $row->aktivitaet_kurzbz != 'LehreExtern' && $row->aktivitaet_kurzbz != 'Ersatzruhe')
+53 -21
View File
@@ -21,7 +21,7 @@ class zeitaufzeichnung_import {
protected $project;
protected $phase;
protected $limitdate;
protected $zeit;
@@ -42,7 +42,7 @@ class zeitaufzeichnung_import {
$this->zeit = new zeitaufzeichnung();
}
/**
* @return boolean
@@ -64,7 +64,7 @@ class zeitaufzeichnung_import {
public function hasInfos() {
return !empty($this->infos);
}
/**
* @return string
*/
@@ -96,15 +96,15 @@ class zeitaufzeichnung_import {
$html .= '<span style="color:green;"><b>' . $msg . '</b></span><br>' . "\n";
}
return $html;
}
}
/**
* @return string
*/
public function OutputToHTML() {
return $this->InfosToHTML() . $this->WarningsToHTML() . $this->ErrorsToHTML();
}
}
/**
* @param string $msg
* @return void
@@ -112,7 +112,7 @@ class zeitaufzeichnung_import {
protected function addError($msg) {
$this->errors[] = $msg;
}
/**
* @param string $msg
* @return void
@@ -120,7 +120,7 @@ class zeitaufzeichnung_import {
protected function addWarning($msg) {
$this->warnings[] = $msg;
}
/**
* @param string $msg
* @return void
@@ -134,7 +134,7 @@ class zeitaufzeichnung_import {
* @param string $uid The user id
* @param string $day "Y-m-d" formatted datestring
* @return void
*
*
* @throws Exception
*/
protected function checkZeitsperren($uid, $day) {
@@ -150,25 +150,25 @@ class zeitaufzeichnung_import {
throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ": " . $this->p->t("zeitaufzeichnung/zeitsperreVorhanden", [$zsdate, $zs->result[0]->zeitsperretyp_kurzbz]));
}
}
/**
* @param string $date datetimestring
* @return void
*
*
* @throws Exception
*/
protected function checkLimitdatum($date) {
if ($this->datum->formatDatum($date, 'Y-m-d H:i:s') > $this->limitdate) {
throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Eingabe nicht möglich da (' . $date . ') zu weit in der Zukunft liegt.');
}
}
}
/**
* @param string $start datestring
* @param string $end datestring
* @param string $aktivitaet_kurzbz
* @return void
*
*
* @throws Exception
*/
protected function checkDienstreise($start, $end, $aktivitaet_kurzbz) {
@@ -179,11 +179,11 @@ class zeitaufzeichnung_import {
.': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).');
}
}
/**
* @param string $end timestring
* @return void
*
*
* @throws Exception
*/
protected function checkTagesgenau($end) {
@@ -193,13 +193,13 @@ class zeitaufzeichnung_import {
.': Bitte Arbeitszeiten gemäß Arbeitsaufzeichnung Leitfaden tagesgenau abgrenzen: Nur Eingaben von 00:00 bis 23:59 erlaubt!');
}
}
/**
* @param string $projekt_kurzbz
* @param string $start datestring
* @param string $end datestring
* @return void
*
*
* @throws Exception
*/
protected function checkProjectInterval($projekt_kurzbz, $start, $end) {
@@ -207,13 +207,13 @@ class zeitaufzeichnung_import {
throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: (' . $start . ') (' . $end . ')');
}
}
/**
* @param string $phase The Projektphase ID
* @param string $start datestring
* @param string $end datestring
* @return void
*
*
* @throws Exception
*/
protected function checkPhaseInterval($phase, $start, $end) {
@@ -222,4 +222,36 @@ class zeitaufzeichnung_import {
}
}
/**
* @param string $phase The Projektphase ID
* @return void
*
* @throws Exception
*/
protected function checkPhaseBebuchbar($phase)
{
if ($this->phase->getPhasenZA($phase) == 'f')
{
throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Dieses Arbeitspaket darf nicht bebucht werden!');
}
}
/**
* @param string $phase The Projektphase ID
* @return void
*
* @throws Exception
*/
protected function checkIfArbeitspaketZuWaehlen($projekt_kurzbz, $phase)
{
if ($projekt_kurzbz != '')
{
$this->project->load($projekt_kurzbz);
if (!$this->project->zeitaufzeichnung && !$phase)
{
throw new Exception($this->p->t("global/fehlerBeimSpeichernDerDaten") . ': Bitte ein Arbeitspaket wählen!');
}
}
}
}
@@ -163,7 +163,8 @@ class zeitaufzeichnung_import_csv extends zeitaufzeichnung_import {
$this->initData($data);
$this->checkProject($data[self::PROJEKT], $data[self::PHASE]);
$this->checkPhase($data[self::PHASE]);
$this->checkPhaseBebuchbar($data[self::PHASE]);
$this->checkIfArbeitspaketZuWaehlen($data[self::PROJEKT], $data[self::PHASE]);
$this->checkZeitsperren($this->user, $this->datum->formatDatum($data[self::STARTDT], 'Y-m-d'));
$this->checkSperrdatum($data[self::STARTDT]);
$this->checkLimitdatum($data[self::STARTDT]);
@@ -72,6 +72,8 @@ class zeitaufzeichnung_import_post extends zeitaufzeichnung_import {
$this->checkDienstreise($this->data['von'], $this->data['bis'], $this->data['aktivitaet_kurzbz']);
$this->checkTagesgenau($this->data['bis']);
$this->processPause($this->data['von_pause'], $this->data['bis_pause']);
$this->checkPhaseBebuchbar($this->data['projektphase_id']);
$this->checkIfArbeitspaketZuWaehlen($this->data['projekt_kurzbz'], $this->data['projektphase_id']);
$this->saveZeit();
} catch (Exception $ex) {
$this->addError($ex->getMessage());
+45 -4
View File
@@ -551,13 +551,13 @@ class zeitsperre extends basis_db
public function getVonBis($uid, $von, $bis, $zeitsperretyp_kurzbz = null)
{
$qry = '
SELECT
SELECT
zeitsperre_id, zeitsperretyp_kurzbz, vondatum, vonstunde, bisdatum, bisstunde
FROM
FROM
campus.tbl_zeitsperre
LEFT JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz)
WHERE
mitarbeiter_uid = '. $this->db_add_param($uid). '
WHERE
mitarbeiter_uid = '. $this->db_add_param($uid). '
AND (
(vondatum BETWEEN '.$this->db_add_param($von).' AND '.$this->db_add_param($bis).')
OR
@@ -592,5 +592,46 @@ class zeitsperre extends basis_db
return true;
}
}
/**
* Laedt einen Zeitsperretyp.
*
* @param $zeitsperretyp_kurzbz
* @return Gibt Zeitsperretyp als Objekt zurück. True wenn ok, false im Fehlerfall.
*/
public function loadZeitsperretyp($zeitsperretyp_kurzbz)
{
if(!is_string($zeitsperretyp_kurzbz))
{
$this->errormsg = 'zeitsperretyp muß ein String sein';
return false;
}
$qry = "SELECT * FROM campus.tbl_zeitsperretyp WHERE zeitsperretyp_kurzbz = ". $this->db_add_param($zeitsperretyp_kurzbz);
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Laden des Datensatzes';
return false;
}
if($row = $this->db_fetch_object())
{
$obj = new StdClass();
$obj->zeitsperretyp_kurzbz = $row->zeitsperretyp_kurzbz;
$obj->beschreibung = $row->beschreibung;
$obj->farbe = $row->farbe;
$this->result[]= $obj;
}
else
{
$this->errormsg = 'Zeitsperretyp konnte nicht geladen werden';
return false;
}
return true;
}
}
?>
+4 -1
View File
@@ -45,6 +45,7 @@ $this->phrasen['testtool/beiDiesemGebietMuessenSieJedeFrageBeantworten']='Bei di
$this->phrasen['testtool/bearbeitungszeit']='Bearbeitungszeit';
$this->phrasen['testtool/dieZeitIstAbgelaufen']='Die Zeit ist abgelaufen!<br /> Bitte aktivieren Sie Javascript in Ihrem Browser!';
$this->phrasen['testtool/dieseFrageIstNichtFuerSieBestimmt']='Diese Frage ist nicht für Sie bestimmt';
$this->phrasen['testtool/dasGebietIstNichtFuerSieBestimmt']='Das Gebiet ist nicht für Sie bestimmt';
$this->phrasen['testtool/fehlerBeimSpeichernDerErstansicht']='Fehler beim Speichern der Erstansicht';
$this->phrasen['testtool/startDrueckenUmZuBeginnen']='Um dieses Teilgebiet zu starten, drücken Sie bitte links oben auf <b>Gebiet starten</b>.';
$this->phrasen['testtool/keinPrueflingseintragVorhanden']='Kein Prüflingseintrag vorhanden';
@@ -71,7 +72,6 @@ $this->phrasen['testtool/einfuehrungsText']='
<h1 style="white-space: normal">Welcome to the placement test</h1>
<a href="'.APP_ROOT.'cms/dms.php?id=145596" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=142977" alt="Einfuehrungsvideo" style="border: 1px solid lightgray; border-radius: 10px; width:350px;"></a>
<br><br>
<a href="'.APP_ROOT.'cms/dms.php?id=207696" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1">&nbsp;<b>Bachelor</b>-Guideline for placement test</a><br>
<a href="'.APP_ROOT.'cms/dms.php?id=143930" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1">&nbsp;<b>Master</b>-Guideline for placement test</a>
<br><br>
Under the following link you can test the correct display of the placement test:<br><br>
@@ -79,5 +79,8 @@ $this->phrasen['testtool/einfuehrungsText']='
</div>
</div>';
$this->phrasen['testtool/prueflingGesperrt']='Bitte kontaktieren Sie die Reihungstestaufsicht!';
$this->phrasen['testtool/freischaltcode']='Freischaltcode';
$this->phrasen['testtool/freischalttext']='Ihren Freischaltcode erhalten Sie am Tag des Reihungstests nach erfolgter Einführung im ZOOM-Meeting (siehe Leitfaden) von der Aufsicht. <br /> Wir wünschen Ihnen viel Erfolg.';
?>
+6 -1
View File
@@ -37,9 +37,14 @@ $this->phrasen['urlaubstool/sieKoennenDiesenUnterFolgenderAdresseFreigeben']='Si
$this->phrasen['urlaubstool/freigabeansuchenUrlaub']='Freigabeansuchen Urlaub';
$this->phrasen['urlaubstool/freigabeFehlt']='Urlaub wurde noch nicht freigegeben';
$this->phrasen['urlaubstool/freigegebenerUrlaubGeloescht']='Bereits Freigegebener Urlaub wurde gelöscht';
$this->phrasen['urlaubstool/UrlaubGeloescht']='Urlaub wurde gelöscht';
$this->phrasen['urlaubstool/zeitausgleichNeu']='Zeitausgleich wurde neu eingetragen';
$this->phrasen['urlaubstool/zeitausgleichGeaendert']='Zeitausgleich wurde geändert';
$this->phrasen['urlaubstool/zeitausgleichGeloescht']='Zeitausgleich wurde gelöscht';
$this->phrasen['urlaubstool/xHatZeitausgleichGeloescht']='%s %s hat einen eingetragenen Zeitausgleich gelöscht';
$this->phrasen['urlaubstool/VorgesetzteInformiert']='Email wurde an %s versandt';
$this->phrasen['urlaubstool/konnteKeinInformationsemailVersendetWerden']='Es konnte kein Email versendet werden, da kein Vorgesetzter eingetragen ist!';
$this->phrasen['urlaubstool/xHatUrlaubGeloescht']='%s %s hat bereits freigegebenen Urlaub gelöscht';
$this->phrasen['urlaubstool/xHatUrlaubGeloescht']='%s %s hat Urlaub gelöscht';
$this->phrasen['urlaubstool/urlaubsfreigabe']='Freigabe Urlaub: ';
$this->phrasen['urlaubstool/bestaetigungsmailWurdeVersandt']='Bestätigungsmail an %s versandt';
$this->phrasen['urlaubstool/urlaubVon']='Ihr angefragter Urlaub von';
+3
View File
@@ -45,10 +45,13 @@ $this->phrasen['testtool/beiDiesemGebietMuessenSieJedeFrageBeantworten']='In thi
$this->phrasen['testtool/bearbeitungszeit']='Time';
$this->phrasen['testtool/dieZeitIstAbgelaufen']='The time has run out!<br />Please enable JavaScript in your browser!';
$this->phrasen['testtool/dieseFrageIstNichtFuerSieBestimmt']='This question is not intended for you';
$this->phrasen['testtool/dasGebietIstNichtFuerSieBestimmt']='This section is not intended for you';
$this->phrasen['testtool/fehlerBeimSpeichernDerErstansicht']='Error in saving the initial view';
$this->phrasen['testtool/startDrueckenUmZuBeginnen']='To start this section, please click on <b>Start section</b> in the top left corner.';
$this->phrasen['testtool/keinPrueflingseintragVorhanden']='No candidate entry available.';
$this->phrasen['testtool/fuerFolgendeStgAngemeldet']='You have applied for the following degree programs:';
$this->phrasen['testtool/invalideGebiete']='One or more question areas incorrect!<br>Please inform an assisting person.';
$this->phrasen['testtool/prueflingGesperrt']='Please contact the placement test supervisor!';
$this->phrasen['testtool/freischaltcode']='Activation code';
$this->phrasen['testtool/freischalttext']='You will receive your activation code on the day of the placement test after the introduction in the ZOOM meeting (see guideline) from the supervisor.<br /> We wish you good luck.'
?>
+7
View File
@@ -36,6 +36,13 @@ $this->phrasen['urlaubstool/meineZeitsperren']='My Planned Absences';
$this->phrasen['urlaubstool/sieKoennenDiesenUnterFolgenderAdresseFreigeben']='Sie können diesen unter folgender Adresse freigeben'; //Nur übersetzen, wenn die eMail in der eingestellten Sprache versandt werden soll
$this->phrasen['urlaubstool/freigabeansuchenUrlaub']='Freigabeansuchen Urlaub'; //Nur übersetzen, wenn die eMail in der eingestellten Sprache versandt werden soll
$this->phrasen['urlaubstool/freigabeFehlt']='Vacation has not been approved yet';
$this->phrasen['urlaubstool/zeitausgleichNeu']='Compensatory time was entered';
$this->phrasen['urlaubstool/zeitausgleichGeaendert']='Compensatory time was changed';
$this->phrasen['urlaubstool/zeitausgleichGeloescht']='Compensatory time was deleted';
$this->phrasen['urlaubstool/xHatZeitausgleichGeloescht']='Compensatory time was deleted by %s %s';
$this->phrasen['urlaubstool/xHatUrlaubGeloescht']='Vacation was deleted by %s %s';
$this->phrasen['urlaubstool/UrlaubGeloescht']='Urlaub wurde gelöscht';
$this->phrasen['urlaubstool/freigegebenerUrlaubGeloescht']='Approved Vacation was deleted by %s %s';
$this->phrasen['urlaubstool/urlaubsfreigabe']='Vacation approval: ';
$this->phrasen['urlaubstool/bestaetigungsmailWurdeVersandt']='Confirmation mail to %s sent';
$this->phrasen['urlaubstool/urlaubVon']='Ihr angefragter Urlaub von'; //Nur übersetzen, wenn die eMail in der eingestellten Sprache versandt werden soll
+1
View File
@@ -7,6 +7,7 @@ $this->phrasen['testtool/bitteZuerstAnmelden']='';
$this->phrasen['testtool/blaettern']='';
$this->phrasen['testtool/demo']='';
$this->phrasen['testtool/dieseFrageIstNichtFuerSieBestimmt']='';
$this->phrasen['testtool/dasGebietIstNichtFuerSieBestimmt']='';
$this->phrasen['testtool/dieZeitIstAbgelaufen']='';
$this->phrasen['testtool/einleitung']='';
$this->phrasen['testtool/esWurdeKeineFrageGefunden']='';
+29 -9
View File
@@ -19,17 +19,37 @@
*
*/
export const LogsViewerTabulatorOptions = {
height: 500,
height: 700,
layout: 'fitColumns',
columns: [
{title: 'Log ID', field: 'LogId'},
{title: 'Request ID', field: 'RequestId'},
{title: 'Execution time', field: 'ExecutionTime'},
{title: 'Executed by', field: 'ExecutedBy'},
{title: 'Description', field: 'Description'},
{title: 'Data', field: 'Data'},
{title: 'Web service type', field: 'WebserviceType'}
]
{title: 'Log ID', field: 'LogId', headerFilter: true},
{title: 'Request ID', field: 'RequestId', headerFilter: true},
{title: 'Execution time', field: 'ExecutionTime', headerFilter: true},
{title: 'Executed by', field: 'ExecutedBy', headerFilter: true},
{title: 'Description', field: 'Description', headerFilter: true},
{title: 'Data', field: 'Data', headerFilter: true},
{title: 'Web service type', field: 'WebserviceType', headerFilter: true}
],
rowFormatter: function(row) {
let data = row.getData(); // get data for this row
// If data is not null and provides the property RequestId and it is not null
if (data != null && data.hasOwnProperty('RequestId') && data.RequestId != null)
{
let requestId = data.RequestId;
if (requestId.includes("error"))
{
row.getElement().style.color = "red";
}
else if (requestId.includes("warning"))
{
row.getElement().style.color = "orange";
}
}
}
};
/**
+1 -1
View File
@@ -533,7 +533,7 @@ export const CoreFilterCmpt = {
@data-fetched="fetchCmptDataFetched">
</core-fetch-cmpt>
<div class="row">
<div class="row" v-if="title != null && title != ''">
<div class="col-lg-12">
<h3 class="page-header">
{{ title }}
+7 -1
View File
@@ -150,6 +150,12 @@ var InfocenterDetails = {
if (FHC_AjaxClient.hasData(data))
{
var prestudent = data.retval[0];
if (prestudent.zgv_code === null && prestudent.zgvmas_code === null)
{
btn.after("<span id='zgvUebernehmenNotice' class='text-warning'>&nbsp;&nbsp;keine ZGV vorhanden</span>");
}
var zgvcode = prestudent.zgv_code !== null ? prestudent.zgv_code : "null";
var zgvort = prestudent.zgvort !== null ? prestudent.zgvort : "";
var zgvdatum = prestudent.zgvdatum;
@@ -183,7 +189,7 @@ var InfocenterDetails = {
}
else
{
btn.after("&nbsp;&nbsp;<span id='zgvUebernehmenNotice' class='text-warning'>keine ZGV vorhanden</span>");
btn.after("<span id='zgvUebernehmenNotice' class='text-warning'>&nbsp;&nbsp;Fehler beim Laden der Daten</span>");
}
},
errorCallback: function()
+195
View File
@@ -0,0 +1,195 @@
$(document).ready(function ()
{
var personid = $("#hiddenpersonid").val();
$('.editStammdaten').click(function()
{
Stammdaten._show();
});
$('.cancelStammdaten').click(function()
{
Stammdaten._hide();
});
$('.saveStammdaten').click(function()
{
var kontakt = [];
$('.kontakt_input').each(function(){
kontakt.push({
id: $(this).data('id'),
value: $(this).val()
});
});
var adresse = [];
$('.adresse').each(function(){
var id = $(this).data('id');
adresse.push({
id: id,
value: {
'strasse': $('#strasse_' + id).val(),
'plz': $('#plz_' + id).val(),
'ort': $('#ort_' + id).val(),
'nation': $('#nation_' + id).val(),
}
});
});
var data = {
"personid" : personid,
"titelpre" : $('#titelpre_input').val(),
"vorname" : $('#vorname_input').val(),
"nachname" : $('#nachname_input').val(),
"titelpost" : $('#titelpost_input').val(),
"gebdatum" : $('#gebdatum_input').val(),
"svnr" : $('#svnr_input').val(),
"buergerschaft" : $('#buergerschaft').val(),
"geschlecht" : $('#geschlecht').val(),
"gebnation" : $('#gebnation').val(),
"gebort" : $('#gebort_input').val(),
"kontakt" : kontakt,
"adresse" : adresse,
};
Stammdaten.update(personid, data);
});
});
var Stammdaten = {
update: function(personid, data)
{
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + "/updateStammdaten/",
data,
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isSuccess(data))
{
FHC_DialogLib.alertSuccess("Done!");
Stammdaten._updated();
}
else
{
FHC_DialogLib.alertError(FHC_AjaxClient.getError(data));
}
},
errorCallback: function() {
FHC_DialogLib.alertWarning("Fehler beim Speichern!");
}
}
);
},
_hide: function()
{
$('.stammdaten_input').each(function(){
$(this).parent('td').children('div').show();
$(this).remove();
});
$('.kontakt_input').each(function(){
$(this).parent('td').children('span').show();
$(this).remove();
});
$('.adresse_input').each(function(){
$(this).parent('div').children('div').show();
$(this).remove();
});
},
_show: function()
{
$('.stammdaten').each(function() {
var id = $(this).attr('id');
var input = $('<input />');
input.attr('id', id + '_input');
input.addClass('form-control stammdaten_input');
input.val($(this).html());
$(this).hide();
$(this).parent('td').append(input);
});
$('.kontakt').each(function() {
var id = $(this).data('id');
var value = $(this).data('value');
$(this).hide();
var input = $('<input />');
input.attr('data-id', id);
input.attr('value', value);
input.addClass('form-control kontakt_input');
input.val(value);
$(this).parent('td').append(input);
});
$('.adresse').each(function() {
var adressenID = $(this).data('id');
$($(this).children('div').get().reverse()).each(function() {
$(this).hide();
var type = $(this).data('type');
var value = $(this).data('value');
var input = $('<input />');
input.attr('data-type', type);
input.attr('id', type + '_' + adressenID);
input.attr('value', value);
input.attr('placeholder', type.toUpperCase());
input.addClass('form-control adresse_input');
input.val(value);
$(this).parent().prepend(input);
});
});
var stammdatenform = $('.stammdaten_form');
stammdatenform.find('select').attr('disabled', false);
$('.editActionStammdaten').show();
$('.editStammdaten').hide();
},
_updated: function()
{
$('.kontakt_input').each(function() {
var span = $(this).parent('td').children('span');
var value = $(this).val();
var oldSpanValue = span.data('value');
span.data('value', value);
var newhtml = span.html().replace(oldSpanValue, value);
span.html(newhtml);
if (span.hasClass('email'))
span.find('a').attr('href', 'mailto:' + value);
span.show();
$(this).remove();
});
$('.adresse').each(function() {
$(this).children('input').each(function() {
var value = $(this).val();
var type = $(this).data('type');
var div = $('div[data-type="' + type + '"]');
div.data('value', value);
div.html(value);
div.show();
$(this).remove();
});
});
$('.stammdaten_input').each(function() {
var div = $(this).parent('td').children('div');
var value = $(this).val();
div.html(value);
div.show();
$(this).remove();
});
var stammdatenform = $('.stammdaten_form');
stammdatenform.find('select').attr('disabled', true);
$('.editActionStammdaten').hide();
$('.editStammdaten').show();
},
}
+2 -1
View File
@@ -106,6 +106,7 @@ function draw_content($row)
<STANDORT:standort_id><![CDATA['.$row->standort_id.']]></STANDORT:standort_id>
<STANDORT:adresse_id><![CDATA['.$row->adresse_id.']]></STANDORT:adresse_id>
<STANDORT:bezeichnung><![CDATA['.$row->bezeichnung.']]></STANDORT:bezeichnung>
<STANDORT:bezeichnung_null><![CDATA['.(is_null($row->bezeichnung)?'t':'').']]></STANDORT:bezeichnung_null>
<STANDORT:kurzbz><![CDATA['.$row->kurzbz.']]></STANDORT:kurzbz>
<STANDORT:firma_id><![CDATA['.$row->firma_id.']]></STANDORT:firma_id>
</RDF:Description>
@@ -113,4 +114,4 @@ function draw_content($row)
}
?>
</RDF:Seq>
</RDF:RDF>
</RDF:RDF>
+1 -1
View File
@@ -58,7 +58,7 @@ if(isset($_GET['optional']) && $_GET['optional']=='true')
</RDF:li>
';
}
$qry = 'SELECT * FROM bis.tbl_zgv ORDER BY zgv_kurzbz';
$qry = 'SELECT * FROM bis.tbl_zgv ORDER BY zgv_bez';
$db = new basis_db();
if($db->db_query($qry))
+1 -1
View File
@@ -57,7 +57,7 @@ if(isset($_GET['optional']) && $_GET['optional']=='true')
</RDF:li>
';
}
$qry = 'SELECT * FROM bis.tbl_zgvdoktor ORDER BY zgvdoktor_code';
$qry = 'SELECT * FROM bis.tbl_zgvdoktor ORDER BY zgvdoktor_bez';
$db = new basis_db();
if($db->db_query($qry))
+1 -1
View File
@@ -57,7 +57,7 @@ if(isset($_GET['optional']) && $_GET['optional']=='true')
</RDF:li>
';
}
$qry = 'SELECT * FROM bis.tbl_zgvmaster ORDER BY zgvmas_code';
$qry = 'SELECT * FROM bis.tbl_zgvmaster ORDER BY zgvmas_bez';
$db = new basis_db();
if($db->db_query($qry))
+1
View File
@@ -205,6 +205,7 @@ $berechtigungen = array(
array('student/anwesenheit','Anwesenheiten im FAS'),
array('student/dokumente','Wenn SUID dann dürfen Dokumente auch wieder entfernt werden'),
array('student/editBakkZgv','Bearbeiten der Bachelor ZGV eines PreStudenten'),
array('student/editMakkZgv','Bearbeiten der Master ZGV eines PreStudenten'),
array('student/noten','Notenverwaltung'),
array('student/stammdaten','Stammdaten der Studenten'),
array('student/vorrueckung','Studentenvorrückung'),
+3
View File
@@ -28,6 +28,9 @@ require_once('dbupdate_3.4/example2.php');
...
*/
require_once('dbupdate_3.4/26173_index_webservicelog.php');
require_once('dbupdate_3.4/24682_reihungstest_zugangscode_fuer_login.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -0,0 +1,15 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
if(!$result = @$db->db_query("SELECT zugangs_ueberpruefung FROM public.tbl_reihungstest LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_reihungstest ADD COLUMN zugangs_ueberpruefung boolean NOT NULL DEFAULT false;
ALTER TABLE public.tbl_reihungstest ADD COLUMN zugangscode smallint DEFAULT NULL;";
if(!$db->db_query($qry))
echo '<strong>public.tbl_reihungstest: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_reihungstest: Spalte zugangs_ueberpruefung und zugangscode hinzugefuegt';
}
@@ -0,0 +1,16 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
// Add index to system.tbl_log
if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webserivcelog_executetime'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "CREATE INDEX idx_webserivcelog_executetime ON system.tbl_webservicelog USING btree (execute_time)";
if (! $db->db_query($qry))
echo '<strong>Indizes: ' . $db->db_last_error() . '</strong><br>';
else
echo 'Index fuer system.tbl_webservicelog.execute_time hinzugefuegt';
}
}
+68 -3
View File
@@ -15708,6 +15708,46 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'kvp',
'phrase' => 'new.error.nostandardcourse.title',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehler",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'kvp',
'phrase' => 'new.error.nostandardcourse.msg',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Dieser Moodle Kurs ist keinem standardisierten Quellkurs zugeordnet",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "This Moodle Course is not derived from a standardized Source Course",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'kvp',
@@ -16241,7 +16281,9 @@ array(
In Summe müssen 5 ECTS erworben werden, die im 6. Semester wirksam werden. <br/>
Das Modul „International skills“ wird mit der Beurteilung „Mit Erfolg teilgenommen“ abgeschlossen. <br />
Bitte wählen Sie die für Sie in Frage kommenden Maßnahmen aus und planen Sie das entsprechende Semester. <br />
Sobald die 5 ECTS erreicht wurden, überprüft der Studiengang die von Ihnen hochgeladenen Dokumente.',
Sobald die 5 ECTS erreicht wurden, überprüft der Studiengang die von Ihnen hochgeladenen Dokumente. <br /><br />
Fragen zum Status Ihrer Maßnahme u.ä. richten Sie bitte an den Studiengang. <br />
Bei allen weiteren Fragen zum Thema Organisation und Finanzierung des Auslandsaufenthalts und/oder Sprachkurs gibt Ihnen das International Office der FH Technikum Wien unter <a href="mailto:international.office@technikum-wien.at">international.office@technikum-wien.at</a> gerne Auskunft.',
'description' => '',
'insertvon' => 'system'
),
@@ -16252,7 +16294,10 @@ array(
In total, 5 ECTS must be acquired, which become effective in the 6th semester.<br />
The module “International skills” is completed with the assessment "Successfully participated". <br />
Please select the measures that apply to you and schedule the appropriate semester. <br />
Once the 5 ECTS have been achieved, the degree program will review the documents you have uploaded.',
Once the 5 ECTS have been achieved, the degree program will review the documents you have uploaded. <br /><br />
Please direct questions regarding the status of your measure and the like should be directed to the study program. <br />
For all further questions regarding the organization and financing of your stay abroad and/or language course, please contact the International Office of the UAS Technikum Wien at <a href="mailto:international.office@technikum-wien.at">international.office@technikum-wien.at</a>.
',
'description' => '',
'insertvon' => 'system'
)
@@ -17137,7 +17182,27 @@ array(
'insertvon' => 'system'
)
)
)
),
array(
'app' => 'infocenter',
'category' => 'infocenter',
'phrase' => 'stammdatenFeldFehlt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bitte Nachname, Geschlecht und Geburtsdatum ausfüllen.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Please fill out the last name, gender and date of birth.',
'description' => '',
'insertvon' => 'system'
)
)
),
);
Binary file not shown.
+471 -432
View File
@@ -1,432 +1,471 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
>
<xsl:output method="xml" version="1.0" indent="yes"/>
<xsl:template match="anwesenheitsliste">
<office:document-content
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
xmlns:ooo="http://openoffice.org/2004/office"
xmlns:ooow="http://openoffice.org/2004/writer"
xmlns:oooc="http://openoffice.org/2004/calc"
xmlns:dom="http://www.w3.org/2001/xml-events"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rpt="http://openoffice.org/2005/report"
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:grddl="http://www.w3.org/2003/g/data-view#"
xmlns:officeooo="http://openoffice.org/2009/office"
xmlns:tableooo="http://openoffice.org/2009/table"
xmlns:drawooo="http://openoffice.org/2010/draw"
xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0"
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
xmlns:css3t="http://www.w3.org/TR/css3-text/"
office:version="1.2">
<office:scripts/>
<office:font-face-decls>
<style:font-face style:name="Mangal1" svg:font-family="Mangal"/>
<style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
<style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable"/>
<style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
<style:font-face style:name="Mangal" svg:font-family="Mangal" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Microsoft YaHei" svg:font-family="&apos;Microsoft YaHei&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="SimSun" svg:font-family="SimSun" style:font-family-generic="system" style:font-pitch="variable"/>
</office:font-face-decls>
<office:automatic-styles>
<style:style style:name="Tabelle1" style:family="table">
<style:table-properties style:width="18.002cm" table:align="margins" style:shadow="none"/>
</style:style>
<style:style style:name="Tabelle1.A" style:family="table-column">
<style:table-column-properties style:column-width="0.706cm" style:rel-column-width="400*"/>
</style:style>
<style:style style:name="Tabelle1.B" style:family="table-column">
<style:table-column-properties style:column-width="4.882cm" style:rel-column-width="2767*"/>
</style:style>
<style:style style:name="Tabelle1.C" style:family="table-column">
<style:table-column-properties style:column-width="1.981cm" style:rel-column-width="1123*"/>
</style:style>
<style:style style:name="Tabelle1.D" style:family="table-column">
<style:table-column-properties style:column-width="1.3cm" style:rel-column-width="737*"/>
</style:style>
<style:style style:name="Tabelle1.E" style:family="table-column">
<style:table-column-properties style:column-width="1.826cm" style:rel-column-width="1035*"/>
</style:style>
<style:style style:name="Tabelle1.1" style:family="table-row">
<style:table-row-properties style:row-height="0.6cm"/>
</style:style>
<style:style style:name="Tabelle1.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.I1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A2" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.I2" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A3" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:background-color="#cccccc" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
<style:background-image/>
</style:table-cell-properties>
</style:style>
<style:style style:name="Tabelle1.A8" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:background-color="#cccccc" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
<style:background-image/>
</style:table-cell-properties>
</style:style>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Footer">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="10pt" officeooo:rsid="000e4736" officeooo:paragraph-rsid="000e4736" style:font-size-asian="8.75pt" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="14pt" officeooo:rsid="000bf7c5" officeooo:paragraph-rsid="000bf7c5" style:font-size-asian="12.25pt" style:font-size-complex="14pt"/>
</style:style>
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="10pt" officeooo:rsid="000bf7c5" officeooo:paragraph-rsid="000bf7c5" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="000bf7c5" officeooo:paragraph-rsid="000bf7c5" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="000bf7c5" officeooo:paragraph-rsid="000bf7c5" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P6" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P7" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P8" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P9" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P10" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P11" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P13" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="0015a8b4" officeooo:paragraph-rsid="0015a8b4" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="T1" style:family="text">
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="T2" style:family="text">
<style:text-properties officeooo:rsid="0015a8b4"/>
</style:style>
<style:style style:name="fr1" style:family="graphic" style:parent-style-name="Graphics">
<style:graphic-properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.499cm" style:wrap="left" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="from-top" style:vertical-rel="page" style:horizontal-pos="from-left" style:horizontal-rel="page" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
</style:style>
</office:automatic-styles>
<office:body>
<office:text text:use-soft-page-breaks="true" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0">
<text:sequence-decls>
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls>
<draw:frame draw:style-name="fr1" draw:name="Bild1" text:anchor-type="page" text:anchor-page-number="1" svg:x="15.649cm" svg:y="0.9cm" svg:width="4.23cm" svg:height="2.17cm" draw:z-index="0">
<draw:image xlink:href="Pictures/10000201000000FD0000008209020D9B.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
</draw:frame>
<text:p text:style-name="P2">Anwesenheitsliste <xsl:value-of select="bezeichnung" /></text:p>
<text:p text:style-name="P3">Gruppen: <xsl:value-of select="gruppen" /> Studiensemester: <xsl:value-of select="studiensemester" /></text:p>
<text:p text:style-name="P2"/>
<text:p text:style-name="P2">Monat ___________</text:p>
<text:p text:style-name="P2"/>
<table:table table:name="Tabelle1" table:style-name="Tabelle1">
<table:table-column table:style-name="Tabelle1.A"/>
<table:table-column table:style-name="Tabelle1.B"/>
<table:table-column table:style-name="Tabelle1.C"/>
<table:table-column table:style-name="Tabelle1.D"/>
<table:table-column table:style-name="Tabelle1.E" table:number-columns-repeated="5"/>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A1" table:number-columns-spanned="4" office:value-type="string">
<text:p text:style-name="P7">Datum</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A2" table:number-columns-spanned="4" office:value-type="string">
<text:p text:style-name="P7">Anzahl der abgehaltenen Einheiten</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A3" table:number-columns-spanned="9" office:value-type="string">
<text:p text:style-name="P13">LektorInnen</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
</table:table-row>
<xsl:apply-templates select="lehrende"/>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A3" table:number-columns-spanned="9" office:value-type="string">
<text:p text:style-name="P13"><xsl:value-of select="anzahl_studierende" /> Studierende</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
</table:table-row>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P12"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P10">Name</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11">Kennzeichen</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11">Gruppe</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
<xsl:apply-templates select="student"/>
</table:table>
<text:p text:style-name="P4"/>
<text:p text:style-name="P4"/>
<text:p text:style-name="P4"></text:p>
<text:p text:style-name="P4"></text:p>
<text:p text:style-name="P4"></text:p>
<text:p text:style-name="P4"></text:p>
<text:p text:style-name="P4"></text:p>
<text:p text:style-name="P4"/>
<text:p text:style-name="P5">
<xsl:choose>
<xsl:when test="studiengang_kz=0">
Freifach <xsl:value-of select="typ" /><xsl:text> </xsl:text><xsl:value-of select="studiengang" />
</xsl:when>
<xsl:otherwise>
Fachhochschulstudiengang <xsl:value-of select="typ" /><xsl:text> </xsl:text><xsl:value-of select="studiengang" />
</xsl:otherwise>
</xsl:choose>
</text:p>
<text:p text:style-name="P4">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,</text:p>
</office:text>
</office:body>
</office:document-content>
</xsl:template>
<xsl:template match="lehrende">
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A2" table:number-columns-spanned="4" office:value-type="string">
<text:p text:style-name="P7"><xsl:value-of select="name" /></text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
</xsl:template>
<xsl:template match="student">
<xsl:variable select="position()" name="number"/>
<xsl:choose>
<xsl:when test="$number mod 2 != 0">
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P9"><xsl:value-of select="position()" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P7">
<text:span text:style-name="T1"><xsl:value-of select="nachname" /></text:span><xsl:text> </xsl:text><xsl:value-of select="vorname" /><xsl:text> </xsl:text><xsl:value-of select="zusatz" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P8">
<xsl:choose>
<xsl:when test="personenkennzeichen!=''">
<xsl:value-of select="personenkennzeichen" />
</xsl:when>
<xsl:otherwise>
-
</xsl:otherwise>
</xsl:choose>
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P8">
<xsl:choose>
<xsl:when test="semester!=''">
<xsl:value-of select="semester" /><xsl:value-of select="verband" /><xsl:value-of select="gruppe" />
</xsl:when>
<xsl:otherwise>
-
</xsl:otherwise>
</xsl:choose>
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A3" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
</xsl:when>
<xsl:otherwise>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P9"><xsl:value-of select="position()" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P7">
<text:span text:style-name="T1"><xsl:value-of select="nachname" /></text:span><xsl:text> </xsl:text><xsl:value-of select="vorname" /><xsl:text> </xsl:text><xsl:value-of select="zusatz" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P8"><xsl:value-of select="personenkennzeichen" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P8"><xsl:value-of select="semester" /><xsl:value-of select="verband" /><xsl:value-of select="gruppe" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
>
<xsl:output method="xml" version="1.0" indent="yes"/>
<xsl:template match="anwesenheitsliste">
<office:document-content
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
xmlns:ooo="http://openoffice.org/2004/office"
xmlns:ooow="http://openoffice.org/2004/writer"
xmlns:oooc="http://openoffice.org/2004/calc"
xmlns:dom="http://www.w3.org/2001/xml-events"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rpt="http://openoffice.org/2005/report"
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:grddl="http://www.w3.org/2003/g/data-view#"
xmlns:officeooo="http://openoffice.org/2009/office"
xmlns:tableooo="http://openoffice.org/2009/table"
xmlns:drawooo="http://openoffice.org/2010/draw"
xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0"
xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0"
xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0"
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
xmlns:css3t="http://www.w3.org/TR/css3-text/"
office:version="1.2">
<office:scripts/>
<office:font-face-decls>
<style:font-face style:name="Mangal1" svg:font-family="Mangal"/>
<style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
<style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss" style:font-pitch="variable"/>
<style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
<style:font-face style:name="Mangal" svg:font-family="Mangal" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="Microsoft YaHei" svg:font-family="&apos;Microsoft YaHei&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
<style:font-face style:name="SimSun" svg:font-family="SimSun" style:font-family-generic="system" style:font-pitch="variable"/>
</office:font-face-decls>
<office:automatic-styles>
<style:style style:name="Tabelle1" style:family="table">
<style:table-properties style:width="18.002cm" table:align="margins" style:shadow="none"/>
</style:style>
<style:style style:name="Tabelle1.A" style:family="table-column">
<style:table-column-properties style:column-width="0.706cm" style:rel-column-width="400*"/>
</style:style>
<style:style style:name="Tabelle1.B" style:family="table-column">
<style:table-column-properties style:column-width="4.882cm" style:rel-column-width="2767*"/>
</style:style>
<style:style style:name="Tabelle1.C" style:family="table-column">
<style:table-column-properties style:column-width="1.981cm" style:rel-column-width="1123*"/>
</style:style>
<style:style style:name="Tabelle1.D" style:family="table-column">
<style:table-column-properties style:column-width="1.3cm" style:rel-column-width="737*"/>
</style:style>
<style:style style:name="Tabelle1.E" style:family="table-column">
<style:table-column-properties style:column-width="1.826cm" style:rel-column-width="1035*"/>
</style:style>
<style:style style:name="Tabelle1.1" style:family="table-row">
<style:table-row-properties style:row-height="0.6cm"/>
</style:style>
<style:style style:name="Tabelle1.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="0.05pt solid #000000" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.I1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A2" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.I2" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000"/>
</style:style>
<style:style style:name="Tabelle1.A3" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:background-color="#cccccc" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="0.05pt solid #000000" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
<style:background-image/>
</style:table-cell-properties>
</style:style>
<style:style style:name="Tabelle1.A8" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:background-color="#cccccc" fo:padding-left="0.101cm" fo:padding-right="0.101cm" fo:padding-top="0cm" fo:padding-bottom="0cm" fo:border-left="0.05pt solid #000000" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.05pt solid #000000">
<style:background-image/>
</style:table-cell-properties>
</style:style>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Footer">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="10pt" officeooo:rsid="000e4736" officeooo:paragraph-rsid="000e4736" style:font-size-asian="8.75pt" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="14pt" officeooo:rsid="000bf7c5" officeooo:paragraph-rsid="000bf7c5" style:font-size-asian="12.25pt" style:font-size-complex="14pt"/>
</style:style>
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="10pt" officeooo:rsid="000bf7c5" officeooo:paragraph-rsid="000bf7c5" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
</style:style>
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="000bf7c5" officeooo:paragraph-rsid="000bf7c5" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Standard">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="000bf7c5" officeooo:paragraph-rsid="000bf7c5" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P6" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P7" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P8" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P9" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-size-complex="8pt"/>
</style:style>
<style:style style:name="P10" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P11" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="0014a385" officeooo:paragraph-rsid="0014a385" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P13" style:family="paragraph" style:parent-style-name="Table_20_Contents">
<style:text-properties style:font-name="Arial" fo:font-size="8pt" fo:font-weight="bold" officeooo:rsid="0015a8b4" officeooo:paragraph-rsid="0015a8b4" style:font-size-asian="8pt" style:font-weight-asian="bold" style:font-size-complex="8pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="T1" style:family="text">
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="T2" style:family="text">
<style:text-properties officeooo:rsid="0015a8b4"/>
</style:style>
<style:style style:name="fr1" style:family="graphic" style:parent-style-name="Graphics">
<style:graphic-properties fo:margin-left="0.499cm" fo:margin-right="0cm" fo:margin-top="0cm" fo:margin-bottom="0.499cm" style:wrap="left" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="from-top" style:vertical-rel="page" style:horizontal-pos="from-left" style:horizontal-rel="page" style:mirror="none" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:luminance="0%" draw:contrast="0%" draw:red="0%" draw:green="0%" draw:blue="0%" draw:gamma="100%" draw:color-inversion="false" draw:image-opacity="100%" draw:color-mode="standard"/>
</style:style>
</office:automatic-styles>
<office:body>
<office:text text:use-soft-page-breaks="true" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0">
<text:sequence-decls>
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls>
<draw:frame draw:style-name="fr1" draw:name="Bild1" text:anchor-type="page" text:anchor-page-number="1" svg:x="15.649cm" svg:y="0.9cm" svg:width="4.23cm" svg:height="2.17cm" draw:z-index="0">
<draw:image xlink:href="Pictures/10000201000000FD0000008209020D9B.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
</draw:frame>
<text:p text:style-name="P2">Anwesenheitsliste <xsl:value-of select="bezeichnung" /></text:p>
<text:p text:style-name="P3">Gruppen: <xsl:value-of select="gruppen" /> Studiensemester: <xsl:value-of select="studiensemester" /></text:p>
<text:p text:style-name="P2"/>
<text:p text:style-name="P2">Monat ___________</text:p>
<text:p text:style-name="P2"/>
<table:table table:name="Tabelle1" table:style-name="Tabelle1">
<table:table-column table:style-name="Tabelle1.A"/>
<table:table-column table:style-name="Tabelle1.B"/>
<table:table-column table:style-name="Tabelle1.C"/>
<table:table-column table:style-name="Tabelle1.D"/>
<table:table-column table:style-name="Tabelle1.E" table:number-columns-repeated="5"/>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A1" table:number-columns-spanned="4" office:value-type="string">
<text:p text:style-name="P7">Datum</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I1" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A2" table:number-columns-spanned="4" office:value-type="string">
<text:p text:style-name="P7">Anzahl der abgehaltenen Einheiten</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A3" table:number-columns-spanned="9" office:value-type="string">
<text:p text:style-name="P13">LektorInnen</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
</table:table-row>
<xsl:apply-templates select="lehrende"/>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A3" table:number-columns-spanned="9" office:value-type="string">
<text:p text:style-name="P13"><xsl:value-of select="anzahl_studierende" /> Studierende</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
</table:table-row>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P12"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P10">Name</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11">Kennzeichen</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P11">Gruppe</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
<xsl:apply-templates select="student"/>
</table:table>
<text:p text:style-name="P4"/>
<text:p text:style-name="P4"/>
<text:p text:style-name="P4">(m) ... männlich</text:p>
<text:p text:style-name="P4">(w) ... weiblich</text:p>
<text:p text:style-name="P4">(x) ... divers</text:p>
<text:p text:style-name="P4">(u) ... unbekannt</text:p>
<text:p text:style-name="P4"/>
<text:p text:style-name="P4"/>
<text:p text:style-name="P4">(i) ... Incoming</text:p>
<text:p text:style-name="P4">(o) ... Outgoing</text:p>
<text:p text:style-name="P4">(ar) ... angerechnet</text:p>
<text:p text:style-name="P4">(iar) ... intern angerechnet</text:p>
<text:p text:style-name="P4">(nz) ... nicht zugelassen</text:p>
<text:p text:style-name="P4">(ma) ... MitarbeiterIn</text:p>
<text:p text:style-name="P4">(a.o.) ... Außerordentliche/r HörerIn</text:p>
<text:p text:style-name="P4">(d.d.) ... Double Degree Program</text:p>
<text:p text:style-name="P4"/>
<text:p text:style-name="P5">
<xsl:choose>
<xsl:when test="studiengang_kz=0">
Freifach <xsl:value-of select="typ" /><xsl:text> </xsl:text><xsl:value-of select="studiengang" />
</xsl:when>
<xsl:otherwise>
Fachhochschulstudiengang <xsl:value-of select="typ" /><xsl:text> </xsl:text><xsl:value-of select="studiengang" />
</xsl:otherwise>
</xsl:choose>
</text:p>
<text:p text:style-name="P4">Fehlt ein/e Student/in länger als 2 Wochen, bitte um einen deutlichen Vermerk auf der Anwesenheitsliste. Die Anwesenheitsliste bitte am Ende des Monats im Sekretariat abgeben! Bitte achten Sie darauf, dass Sie nur VOLLSTÄNDIG AUSGEFÜLLTE LISTEN abgeben!</text:p>
</office:text>
</office:body>
</office:document-content>
</xsl:template>
<xsl:template match="lehrende">
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A2" table:number-columns-spanned="4" office:value-type="string">
<text:p text:style-name="P7"><xsl:value-of select="name" /></text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:covered-table-cell/>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
</xsl:template>
<xsl:template match="student">
<xsl:variable select="position()" name="number"/>
<xsl:choose>
<xsl:when test="$number mod 2 != 0">
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P9"><xsl:value-of select="position()" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P7">
<text:span text:style-name="T1">
<xsl:value-of select="nachname" /></text:span>
<xsl:text> </xsl:text>
<xsl:value-of select="vorname" />
<xsl:text> </xsl:text>
<xsl:choose>
<xsl:when test="geschlecht!=''">
(<xsl:value-of select="geschlecht" />)
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="zusatz" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P8">
<xsl:choose>
<xsl:when test="personenkennzeichen!=''">
<xsl:value-of select="personenkennzeichen" />
</xsl:when>
<xsl:otherwise>
-
</xsl:otherwise>
</xsl:choose>
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P8">
<xsl:choose>
<xsl:when test="semester!=''">
<xsl:value-of select="semester" /><xsl:value-of select="verband" /><xsl:value-of select="gruppe" />
</xsl:when>
<xsl:otherwise>
-
</xsl:otherwise>
</xsl:choose>
</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A8" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A3" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
</xsl:when>
<xsl:otherwise>
<table:table-row table:style-name="Tabelle1.1">
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P9"><xsl:value-of select="position()" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P7">
<text:span text:style-name="T1">
<xsl:value-of select="nachname" /></text:span>
<xsl:text> </xsl:text>
<xsl:value-of select="vorname" />
<xsl:text> </xsl:text>
<xsl:choose>
<xsl:when test="geschlecht!=''">
(<xsl:value-of select="geschlecht" />)
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="zusatz" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P8"><xsl:value-of select="personenkennzeichen" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P8"><xsl:value-of select="semester" /><xsl:value-of select="verband" /><xsl:value-of select="gruppe" /></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.I2" office:value-type="string">
<text:p text:style-name="P6"/>
</table:table-cell>
</table:table-row>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
+8 -1
View File
@@ -450,6 +450,13 @@ if($resultall = $db->db_query($qryall))
}
//**** Echter Dienstvertrag ohne Vertragsstunden
$arrayEchterDV= array(103, 110);
if (defined('DEFAULT_ECHTER_DIENSTVERTRAG') && DEFAULT_ECHTER_DIENSTVERTRAG != '')
{
$arrayEchterDV = DEFAULT_ECHTER_DIENSTVERTRAG;
}
$str_ba1codein = trim(array_reduce($arrayEchterDV, function($c, $i) { global $db; return $c .= $db->db_add_param($i, FHC_INTEGER) . ','; }), ',');
$qryall="
SELECT
distinct mitarbeiter_uid as uid, vorname, nachname
@@ -461,7 +468,7 @@ $qryall="
WHERE
(beginn is null or beginn<".$db->db_add_param($bismeldedatum_ende).")
and (ende is null or ende>=".$db->db_add_param($bismeldedatum_start).")
and ba1code=103
and ba1code IN (" . $str_ba1codein . ")
and vertragsstunden is null
and beschausmasscode!=5
ORDER by nachname, vorname, mitarbeiter_uid;";
+73 -47
View File
@@ -271,7 +271,8 @@ if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006)
DISTINCT ON(student_uid, nachname, vorname) *,
public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat,
public.tbl_prestudent.foerderrelevant as pre_foerderrelevant,
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant,
COALESCE(tbl_prestudent.standort_code, tbl_studiengang.standort_code) AS bis_standort_code
FROM
public.tbl_student
JOIN public.tbl_benutzer ON(student_uid=uid)
@@ -295,7 +296,8 @@ elseif ($stg_kz == 'alleBaMa')
DISTINCT ON(tbl_student.studiengang_kz, matrikelnr, nachname, vorname) *,
public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat,
public.tbl_prestudent.foerderrelevant as pre_foerderrelevant,
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant,
COALESCE(tbl_prestudent.standort_code, tbl_studiengang.standort_code) AS bis_standort_code
FROM
public.tbl_student
JOIN public.tbl_benutzer ON(student_uid=uid)
@@ -327,7 +329,8 @@ else
DISTINCT ON(student_uid, nachname, vorname) *,
public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat,
public.tbl_prestudent.foerderrelevant as pre_foerderrelevant,
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant,
COALESCE(tbl_prestudent.standort_code, tbl_studiengang.standort_code) AS bis_standort_code
FROM
public.tbl_student
JOIN public.tbl_benutzer ON(student_uid=uid)
@@ -353,9 +356,10 @@ else
if($result = $db->db_query($qry))
{
$stg_kz_index = '';
$num_rows = $db->db_num_rows($result);
$row_num = 1;
while($row = $db->db_fetch_object($result))
{
$row->pre_foerderrelevant = $db->db_parse_bool($row->pre_foerderrelevant);
@@ -367,8 +371,6 @@ if($result = $db->db_query($qry))
$stg_obj = new studiengang();
if($stg_obj->load($row->studiengang_kz))
{
$maxsemester = $stg_obj->max_semester;
if($maxsemester == 0)
{
@@ -398,58 +400,78 @@ if($result = $db->db_query($qry))
else
die('Fehler:'.$stg_obj->errormsg);
// Header am Beginn rausschreiben
// Erstes Studiengang Tag am Beginn rausschreiben
if ($stg_kz_index == '')
{
$header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Erhalter>
<ErhKz>".$erhalter."</ErhKz>
<MeldeDatum>".date("dmY", $datumobj->mktime_fromdate($bisdatum))."</MeldeDatum>
<StudierendenBewerberMeldung>";
<StudierendenBewerberMeldung>
<Studiengang>
<StgKz>".$row->studiengang_kz."</StgKz>";
$datei .= $header;
$dateiNurBewerber .= $header;
}
if ($stg_kz_index != '' && $row->studiengang_kz != $stg_kz_index)
{
$datei .= "
</Studiengang>";
}
$stg_kz_index = $row->studiengang_kz;
$datei .= "
<Studiengang>
<StgKz>".$row->studiengang_kz."</StgKz>";
}
// Student Daten schreiben
$datei .= GenerateXMLStudentBlock($row);
}
//Bewerberblock bei Ausserordentlichen nicht anzeigen
/*if($stg_kz!=('9'.$erhalter))
{
$stg_obj = new studiengang();
if($orgform_code==3 || $stg_obj->isMischform($stg_kz,$ssem) || $stg_obj->isMischform($stg_kz,$psem))
// wenn neuer Studiengang oder letzter Durchlauf...
if (($row_num > 1 && $row->studiengang_kz != $stg_kz_index) || $row_num == $num_rows)
{
$orgcodes = array_unique($orgform_code_array);
//Mischform
foreach($orgcodes as $code)
// ...Studiengang Tag schliessen
$stgClose = "
</Studiengang>";
$datei .= $stgClose;
$dateiNurBewerber .= $stgClose;
}
// wenn neuer Studiengang...
if ($row->studiengang_kz != $stg_kz_index)
{
if ($row_num > 1)
{
$bewerberBlock=GenerateXMLBewerberBlock($code);
$datei.=$bewerberBlock;
$dateiNurBewerber.=$bewerberBlock;
// ...neuen Studiengang Tag öffnen
$stgOpen = "
<Studiengang>
<StgKz>".$row->studiengang_kz."</StgKz>";
$datei .= $stgOpen;
$dateiNurBewerber .= $stgOpen;
}
}
else
{
$bewerberBlock=GenerateXMLBewerberBlock();
$datei.=$bewerberBlock;
$dateiNurBewerber.=$bewerberBlock;
}
}*/
//Bewerberblock
// (bei Ausserordentlichen nicht anzeigen)
if($row->studiengang_kz!=('9'.$erhalter))
{
$stg_obj = new studiengang();
if($orgform_code==3 || $stg_obj->isMischform($row->studiengang_kz,$ssem) || $stg_obj->isMischform($row->studiengang_kz,$psem))
{
$orgcodes = array_unique($orgform_code_array);
//Mischform
foreach($orgcodes as $code)
{
$bewerberBlock=GenerateXMLBewerberBlock($row->studiengang_kz, $code);
$dateiNurBewerber.=$bewerberBlock;
}
}
else
{
$bewerberBlock=GenerateXMLBewerberBlock($row->studiengang_kz);
$dateiNurBewerber.=$bewerberBlock;
}
}
};
// Studiengang kz speichern und Zeile erhöhen
$stg_kz_index = $row->studiengang_kz;
$row_num++;
}
}
$footer="
</Studiengang>
</StudierendenBewerberMeldung>
</Erhalter>";
@@ -722,8 +744,11 @@ if(file_exists($ddd))
{
echo '<a href="archiv.php?meldung='.$ddd.'&html='.$eee.'&stg='.$stg_kz.'&sem='.$ssem.'&typ=studenten&action=archivieren">BIS-Meldung Stg '.$stg_kz.' archivieren</a><br>';
echo '<a href="'.$ddd.'" target="_blank" download>XML-Datei f&uuml;r BIS-Meldung Stg '.$stg_kz.'</a><br>';
echo '<a href="'.$dddNurBew.'" target="_blank" download>XML-Datei f&uuml;r BIS-Meldung Stg '.$stg_kz.' - nur Bewerberdaten</a><br>';
}
if(file_exists($dddNurBew))
echo '<a href="'.$dddNurBew.'" target="_blank" download>XML-Datei f&uuml;r BIS-Meldung Stg '.$stg_kz.' - Bewerberdaten</a><br>';
if(file_exists($eee))
{
echo '<a href="'.$eee.'">BIS-Melde&uuml;bersicht der BIS-Meldung Stg '.$stg_kz.'</a><br><br>';
@@ -1589,7 +1614,7 @@ function GenerateXMLStudentBlock($row)
if($studtyp!='E')
{
$datei.="
<StudStatusCode>".$status."</StudStatusCode>";
<StudStatusCode>".$status."</StudStatusCode>";
}
// IO container query
@@ -1615,7 +1640,7 @@ function GenerateXMLStudentBlock($row)
if(!$ausserordentlich)
{
$datei.="
<StandortCode>".$row->standort_code."</StandortCode>";
<StandortCode>".$row->bis_standort_code."</StandortCode>";
}
/*
* BMWFFoerderrung derzeit fuer alle Studierende auf Ja gesetzt
@@ -1901,11 +1926,11 @@ function GenerateXMLStudentBlock($row)
* Wenn der Parameter orgformcode uebergeben wird, werden nur die Bewerberzahlen dieser Orgform geliefert
* sonst alle
*/
function GenerateXMLBewerberBlock($orgformcode=null)
function GenerateXMLBewerberBlock($studiengang_kz, $orgformcode=null)
{
global $db;
global $ssem, $stgart, $psem;
global $stg_kz, $bisdatum;
global $bisdatum;
global $bwlist, $orgform_kurzbz;
global $bewerbercount,$orgform_code_array;
$datei = '';
@@ -1924,11 +1949,12 @@ function GenerateXMLBewerberBlock($orgformcode=null)
JOIN public.tbl_person USING(person_id)
LEFT JOIN bis.tbl_orgform USING(orgform_kurzbz)
WHERE (studiensemester_kurzbz=".$db->db_add_param($ssem)." OR studiensemester_kurzbz=".$db->db_add_param($psem).")
AND tbl_prestudent.studiengang_kz=".$db->db_add_param($stg_kz)."
AND tbl_prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz)."
AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
AND status_kurzbz='Bewerber'
AND reihungstestangetreten
";
if(!is_null($orgformcode))
$qrybw.=" AND tbl_orgform.code=".$db->db_add_param($orgformcode);
@@ -2015,7 +2041,7 @@ function GenerateXMLBewerberBlock($orgformcode=null)
<OrgFormCode>".$orgform_code_array[$bworgform]."</OrgFormCode>";
if($stgart==2)
$datei.='
<ZugangMaCode>'.$key.'</ZugangMaCode>';
<ZugangMaStgCode>'.$key.'</ZugangMaStgCode>';
else
$datei.='
<ZugangCode>'.$key.'</ZugangCode>';
+8 -1
View File
@@ -54,6 +54,13 @@ foreach ($stg_obj->result as $stg)
$stg_arr[$stg->studiengang_kz] = $stg->kuerzel;
}
//Default BA1Codes für echte Dienstverträge aus Config Laden
$arrEchterDV = [103, 110];
if (defined('DEFAULT_ECHTER_DIENSTVERTRAG') && DEFAULT_ECHTER_DIENSTVERTRAG != '')
{
$arrEchterDV = DEFAULT_ECHTER_DIENSTVERTRAG;
}
$studiengang_kz = (isset($_GET['studiengang_kz'])?$_GET['studiengang_kz']:'');
$semester = (isset($_GET['semester'])?$_GET['semester']:'');
$stsem_von = (isset($_GET['stsem_von'])?$_GET['stsem_von']:'');
@@ -359,7 +366,7 @@ if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '')
{
// Bei echten Dienstvertraegen mit voller inkludierter Lehre wird kein Stundensatz
// geliefert da dies im Vertrag inkludiert ist.
if ($row_verwendung->ba1code == 103 && $row_verwendung->inkludierte_lehre == -1)
if ((in_array($row_verwendung->ba1code, $arrEchterDV)) && $row_verwendung->inkludierte_lehre == -1)
{
$lem_obj->stundensatz = '';
break;
+36 -7
View File
@@ -65,8 +65,8 @@ echo '
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
sortList: [[7,0],[0,0],[1,0]],
widgets: ["zebra","filter"],
});
});
</script>
@@ -212,6 +212,7 @@ if (isset($_POST['vorr']))
$statisticAdded = 0;
$statisticUebersprungen = 0;
$statisticStudienplanKorrektur = 0;
$errorMsg = array('Studenten im letzten Ausbildungssemester ohne Diplomandenstatus' => 0);
$stg_help = new studiengang();
if (!$stg_help->load($stg_kz))
@@ -306,13 +307,25 @@ if (isset($_POST['vorr']))
//auf statusgrund_kurzbz abfragen
$statusgrundObj = new statusgrund($row_status->statusgrund_id);
$statusgrundId = null;
if ($statusgrundObj->statusgrund_kurzbz === "prewiederholer" && $row_status->ausbildungssemester > 1)
if (isset($statusgrundObj->statusgrund_kurzbz) && $statusgrundObj->statusgrund_kurzbz === "prewiederholer" && $row_status->ausbildungssemester > 1)
{
$s = $row->semester_stlv - 1;
$ausbildungssemester = $row_status->ausbildungssemester - 1;
$statusgrundId = $statusgrundObj->getByStatusgrundKurzbz('wiederholer')->statusgrund_id;
}
// Wenn VORRUECKUNG_STATUS_MAX_SEMESTER true ist und
// der Student kein Wiederholer ist und
// der aktuelle Status "Student" im Max-Semester des Studiengangs ist, wird übersprungen
if (VORRUECKUNG_STATUS_MAX_SEMESTER
&& $statusgrundId == ''
&& $row_status->ausbildungssemester == $max[$stg_kz]
&& $row_status->status_kurzbz == 'Student')
{
$errorMsg['Studenten im letzten Ausbildungssemester ohne Diplomandenstatus'] = $errorMsg['Studenten im letzten Ausbildungssemester ohne Diplomandenstatus']+1;
continue;
}
$lvb = new lehrverband();
//Lehrverbandgruppe anlegen, wenn noch nicht vorhanden
@@ -352,6 +365,7 @@ if (isset($_POST['vorr']))
$db->db_add_param($row->gruppe_stlv).",NULL,NULL,now(),".
$db->db_add_param($user).",NULL);";
}
//Check, ob schon ein Status für das Zielsemester vorhanden ist
$qry_chk = "SELECT
*
FROM
@@ -360,7 +374,8 @@ if (isset($_POST['vorr']))
prestudent_id=".$db->db_add_param($row->prestudent_id)."
AND studiensemester_kurzbz=".$db->db_add_param($next_ss).";";
if ($db->db_num_rows($db->db_query($qry_chk)) < 1)
if ($db->db_num_rows($db->db_query($qry_chk)) < 1
&& $row_status->status_kurzbz != 'Absolvent')
{
// Pruefen ob der Studienplan fuer das vorgerueckte Semester noch gueltig ist
// und GGf einen besseren Studienplan suchen
@@ -405,9 +420,23 @@ if (isset($_POST['vorr']))
}
}
echo '<span class="ok">';
echo 'Vorgerückte Personen:'.$statisticAdded.'<br>';
echo 'Übersprungene Personen:'.$statisticUebersprungen.'<br>';
echo 'Studienplanzuordnung korrigiert:'.$statisticStudienplanKorrektur.'<br>';
if ($statisticAdded > 0)
echo 'Vorgerückte Personen: '.$statisticAdded.'<br>';
if ($statisticStudienplanKorrektur > 0)
echo 'Studienplanzuordnung korrigiert: '.$statisticStudienplanKorrektur.'<br>';
echo '</span>';
echo '<span class="warning">';
if ($statisticUebersprungen > 0)
echo $statisticUebersprungen.' Personen wurden übersprungen, weil schon ein Eintrag im Zielsemester vorhanden ist<br>';
echo '</span>';
echo '<span class="error">';
foreach($errorMsg AS $text=>$anzahl)
{
if ($anzahl > 0)
{
echo $anzahl.' '.$text;
}
}
echo '</span>';
}
+52 -5
View File
@@ -32,6 +32,7 @@ require_once('../../include/benutzer.class.php');
require_once('../../include/mitarbeiter.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/addon.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -59,6 +60,15 @@ $alle = (isset($_GET['alle'])?true:false);
$errormsg='';
$message='';
$error=false;
$mlAbgeschickt = '';
//prüfen, ob addon casetime aktiviert ist
$addon_obj = new addon();
$addoncasetime = $addon_obj->checkActiveAddon("casetime");
if ($addoncasetime)
{
require_once('../../addons/casetime/include/functions.inc.php');
}
//Kopfzeile
echo '<html>
@@ -78,6 +88,10 @@ echo ' <script type="text/javascript" src="../../include/js/jquery.ui.datepicker
{
return confirm("Wollen Sie diesen Eintrag wirklich loeschen: "+val);
}
function rejdel(val)
{
return confirm("ACHTUNG! Die Zeitsperre ("+val + ") wurde bereits in einer abgeschickten Monatsliste verarbeitet und kann nicht gelöscht werden.");
}
$(document).ready(function()
{
$("#ma_name").autocomplete({
@@ -249,8 +263,15 @@ if($uid!='')
<th>Bezeichnung</th>
<th>Von</th>
<th>Bis</th>
<th>Vertretung</th>
<th>Freigegeben von, am</th>
<th>Vertretung</th>';
if($addoncasetime)
{
echo '<th>Status Monatsliste</th>';
}
echo'
<th>Freigegeben von, am</th>
<th>Aktualisiert am</th>
<th>Aktualisiert von</th>
<th>Edit</th>
@@ -268,12 +289,38 @@ if($uid!='')
echo "<td data-sorter='shortDate' data-date-format='dd.mm.yyyy'>".$datum->formatDatum($row->vondatum,'d.m.Y')." ".($row->vonstunde!=''?'(Stunde '.$row->vonstunde.')':'')."</td>";
echo "<td data-sorter='shortDate' data-date-format='dd.mm.yyyy'>".$datum->formatDatum($row->bisdatum,'d.m.Y')." ".($row->bisstunde!=''?'(Stunde '.$row->bisstunde.')':'')."</td>";
echo "<td>$row->vertretung_uid</td>";
if($addoncasetime)
{
echo "<td align='center'>";
checkStatusMonatsliste($uid,$row->vondatum, $row->bisdatum) == '' ? $mlAbgeschickt = false : $mlAbgeschickt = true;
if($mlAbgeschickt)
echo "abgeschickt";
else
echo "nicht abgeschickt";
echo '</td>';
}
echo "<td>$row->freigabevon ".$datum->formatDatum($row->freigabeamum,'d.m.Y')."</td>";
echo "<td>".$datum->formatDatum($row->updateamum,'d.m.Y H:i:s')."</td>";
echo "<td>$row->updatevon</td>";
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?action=edit&uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'><img src='../../skin/images/application_form_edit.png' alt='bearbeiten' title='bearbeiten' /></a></td>";
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?action=copy&uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'><img src='../../skin/images/copy.png' alt='bearbeiten' title='bearbeiten' /></a></td>";
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?action=delete&uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'' onclick='return confdel(\"$row->zeitsperretyp_kurzbz von ".$datum->formatDatum($row->vondatum,'d.m.Y')." bis ".$datum->formatDatum($row->bisdatum,'d.m.Y')."\")'><img src='../../skin/images/application_form_delete.png' alt='loeschen' title='loeschen'/></a></td>";
//nur Zeitsperren von noch nicht abgeschickten Monatlisten dürfen gelöscht werden
if ( ($addoncasetime) && ($mlAbgeschickt && in_array($row->zeitsperretyp_kurzbz, zeitsperre::getBlockierendeZeitsperren())) )
{
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?action=edit&uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'><img src='../../skin/images/application_form_edit.png' alt='bearbeiten' title='bearbeiten' /></a></td>";
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?action=copy&uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'><img src='../../skin/images/copy.png' alt='bearbeiten' title='kopieren' /></a></td>";
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'' onclick='return rejdel(\"$row->zeitsperretyp_kurzbz von ".$datum->formatDatum($row->vondatum,'d.m.Y')." bis ".$datum->formatDatum($row->bisdatum,'d.m.Y'). "" . "\") '><img src='../../skin/images/application_form_delete.png' alt='loeschen' title='loeschen'/></a></td>";
}
else
{
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?action=edit&uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'><img src='../../skin/images/application_form_edit.png' alt='bearbeiten' title='bearbeiten' /></a></td>";
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?action=copy&uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'><img src='../../skin/images/copy.png' alt='bearbeiten' title='kopieren' /></a></td>";
echo "<td align='center'><a href='".$_SERVER['PHP_SELF']."?action=delete&uid=$uid&zeitsperre_id=$row->zeitsperre_id".($alle?'&alle=true':'')."'' onclick='return confdel(\"$row->zeitsperretyp_kurzbz von ".$datum->formatDatum($row->vondatum,'d.m.Y')." bis ".$datum->formatDatum($row->bisdatum,'d.m.Y')."\")'><img src='../../skin/images/application_form_delete.png' alt='loeschen' title='loeschen'/></a></td>";
}
echo '</tr>';
}
echo '</tbody></table>';
+131 -4
View File
@@ -518,6 +518,67 @@ if ($rtprueflingEntSperren)
}
}
// Ajax-Request um einen Prüfling Zeit für ein bestimmtes Gebiet hinzuzufügen
$prueflingAddTime = filter_input(INPUT_POST, 'prueflingAddTime', FILTER_VALIDATE_BOOLEAN);
if ($prueflingAddTime)
{
if (!$rechte->isBerechtigt('lehre/reihungstestAufsicht', null, 'su'))
{
echo json_encode(array(
'status' => 'fehler',
'msg' => $rechte->errormsg
));
exit();
}
if (isset($_POST['pruefling_id']) && is_numeric($_POST['pruefling_id'])
&& isset($_POST['gebiet']) && is_numeric($_POST['gebiet'])
&& isset($_POST['time']) && is_numeric($_POST['time']))
{
$qry = "UPDATE testtool.tbl_pruefling_frage
SET begintime =
CASE WHEN
(begintime + (" .$db->db_add_param($_POST['time']) . " * interval '1 minute') > NOW())
THEN
NOW()
ELSE
(begintime + (" .$db->db_add_param($_POST['time']) . " * interval '1 minute'))
END,
endtime =
CASE WHEN
(endtime + (" .$db->db_add_param($_POST['time']) . " * interval '1 minute') > NOW())
THEN
NOW()
ELSE
(endtime + (" .$db->db_add_param($_POST['time']) . " * interval '1 minute'))
END
WHERE prueflingfrage_id IN
(
SELECT prueflingfrage_id
FROM testtool.tbl_pruefling
JOIN testtool.tbl_pruefling_frage USING (pruefling_id)
JOIN testtool.tbl_frage ON tbl_pruefling_frage.frage_id = tbl_frage.frage_id
WHERE pruefling_id = ". $db->db_add_param($_POST['pruefling_id']) . " AND gebiet_id = ". $db->db_add_param($_POST['gebiet']) ."
)";
if ($result = $db->db_query($qry))
{
echo json_encode(array(
'status' => 'ok',
'msg' => 'Zeit hinzugefügt'));
exit();
}
else
{
echo json_encode(array(
'status' => 'fehler',
'msg' => 'Fehler beim speichern der Daten'
));
exit();
}
}
}
// Ajax-Request um einen Reihungstest freizuschalten
$rtFreischalten = filter_input(INPUT_POST, 'rtFreischalten', FILTER_VALIDATE_BOOLEAN);
if ($rtFreischalten)
@@ -1289,7 +1350,8 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
tbl_ablauf.reihung,
tbl_ablauf.studiengang_kz,
tbl_ablauf.semester,
tbl_ablauf.gewicht
tbl_ablauf.gewicht,
tbl_gebiet.zeit
FROM PUBLIC.tbl_rt_person
JOIN PUBLIC.tbl_person ON (tbl_rt_person.person_id = tbl_person.person_id)
JOIN PUBLIC.tbl_prestudent ps ON (ps.person_id = tbl_rt_person.person_id)
@@ -1366,6 +1428,7 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
}
$gebiet[$row->gebiet_id]->name = $row->gebiet;
$gebiet[$row->gebiet_id]->gebiet_id = $row->gebiet_id;
$gebiet[$row->gebiet_id]->zeit = $row->zeit;
//gewicht ist meist für alle Studiengänge gleich (Bachelor, Master und Distance haben jeweilsandere Gebiete)
if (!isset($gebiet[$row->gebiet_id]->gewicht))
{
@@ -1487,6 +1550,7 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
tbl_pruefling.idnachweis,
tbl_pruefling.registriert,
tbl_pruefling.gesperrt,
tbl_pruefling.pruefling_id,
get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) AS letzter_status
FROM PUBLIC.tbl_rt_person
JOIN PUBLIC.tbl_person ON (tbl_rt_person.person_id = tbl_person.person_id)
@@ -1601,7 +1665,7 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id]->prestudent_id = $row->prestudent_id;
$ergebnis[$row->prestudent_id]->person_id = $row->person_id;
$ergebnis[$row->prestudent_id]->reihungstest_id = $row->reihungstest_id;
//$ergebnis[$row->prestudent_id]->pruefling_id = $row->pruefling_id;
$ergebnis[$row->prestudent_id]->pruefling_id = $row->pruefling_id;
$ergebnis[$row->prestudent_id]->nachname = $row->nachname;
$ergebnis[$row->prestudent_id]->vorname = $row->vorname;
$ergebnis[$row->prestudent_id]->gebdatum = $row->gebdatum;
@@ -2422,6 +2486,46 @@ else
});
}
}
function prueflingAddTime(pruefling_id, gebiet)
{
var min = $("#prueflingAddTime_" + pruefling_id + "_gebiet_" + gebiet).val();
data = {
pruefling_id: pruefling_id,
gebiet: gebiet,
time: min,
prueflingAddTime: true
};
$.ajax({
url: "auswertung_fhtw.php",
data: data,
type: "POST",
dataType: "json",
success: function(data)
{
if(data.status !== "ok")
{
$("#msgbox").attr("class","alert alert-danger");
$("#msgbox").show();
$("#msgbox").html(data["msg"]);
}
else
{
$("#msgbox").attr("class","alert alert-success");
$(".loaderIcon").hide();
$("#msgbox").show();
$("#msgbox").html(data["msg"]);
$("#msgbox").html(data["msg"]).delay(2000).fadeOut();
}
},
error: function(data)
{
$("#msgbox").attr("class","alert alert-danger");
$("#msgbox").show();
$("#msgbox").html(data["msg"]);
}
});
}
function deleteAllResults(prestudent_id, name)
{
if (confirm("Wollen Sie ALLE Ergebnisse der Person "+name+" wirklich löschen"))
@@ -3143,7 +3247,7 @@ else
foreach ($gebiet AS $gbt)
{
echo '<th colspan="3">' . $gbt->name . '</th>';
echo '<th colspan="4">' . $gbt->name . '</th>';
}
echo '</tr>
@@ -3158,6 +3262,7 @@ else
echo "<th><small>Punkte</small></th>";
echo "<th><small>Punkte mit Offset</small></th>";
echo "<th><small>Prozent</small></th>";
echo "<th><small>Zeit hinzufügen</small></th>";
}
echo '</tr></thead><tbody>';
@@ -3265,10 +3370,32 @@ else
echo '</td>';
echo '<td class="rightaligned ' . $zerovalclass . 'pst_' . $erg->prestudent_id . '_gbt_' . $gbt->gebiet_id . ' punkte '.$inaktiv.'" nowrap>' . ($erg->gebiet[$gbt->gebiet_id]->punktemitoffset != '' ? number_format($erg->gebiet[$gbt->gebiet_id]->punktemitoffset, 2, ',', ' ') : '') . '</td>';
echo '<td class="rightaligned ' . $zerovalclass . 'pst_' . $erg->prestudent_id . '_gbt_' . $gbt->gebiet_id . ' punkte '.$inaktiv.'" nowrap>' . ($erg->gebiet[$gbt->gebiet_id]->prozent != '' ? number_format($erg->gebiet[$gbt->gebiet_id]->prozent, 2, ',', ' ') . ' %' : '') . '</td>';
echo '<td class="rightaligned ' . $zerovalclass . 'pst_' . $erg->prestudent_id . '_gbt_' . $gbt->gebiet_id . ' punkte '.$inaktiv.'" nowrap>';
if (!is_null($erg->pruefling_id))
{
$time = strtotime($gbt->zeit);
$minutes = date('i', $time);
echo '<select id="prueflingAddTime_'.$erg->pruefling_id .'_gebiet_' . $gbt->gebiet_id . '">';
for ($i = 2; $i <= 10; $i = $i +2)
{
if ($i < $minutes)
echo '<option value="'. $i .'">00:' . sprintf("%02d", $i) .':00</option>';
}
echo '<option value="'. $minutes .'">'. $gbt->zeit .'</option>';
echo '</select>
<a href="#" id="prueflingAddTime_'.$erg->pruefling_id .'" onclick="prueflingAddTime('. $erg->pruefling_id. '' . ', ' .$gbt->gebiet_id .')">
<span class="glyphicon glyphicon-ok"></span>
</a>';
}
echo '</td>';
}
else
{
echo '<td></td><td></td><td></td>';
echo '<td></td><td></td><td></td><td></td>';
}
}
@@ -110,17 +110,17 @@ echo ' <script type="text/javascript" src="../../include/js/jquery.ui.datepicker
$("#t2").tablesorter(
{
sortList: [[6,0],[5,0]],
widgets: ["zebra"]
widgets: ["zebra","filter"]
});
$("#t3").tablesorter(
{
sortList: [[0,0],[1,0],[3,0]],
widgets: ["zebra"]
widgets: ["zebra","filter"]
});
$("#t4").tablesorter(
{
sortList: [[2,0],[3,0]],
widgets: ["zebra"],
widgets: ["zebra","filter"],
headers: {5:{sorter:false}}
});
@@ -583,7 +583,7 @@ if(isset($_POST['delete_all']))
}
// Testergebnisse anzeigen
echo '<hr><br><form action="'.$_SERVER['PHP_SELF'].'" method="POST">Testergebnisse der Person mit der Prestudent_id <input type="text" name="prestudent_id"><input type="submit" value="anzeigen" name="testergebnisanzeigen"></form>';
echo '<hr><br><form action="'.$_SERVER['PHP_SELF'].'" method="POST">Testergebnisse der Person mit der Prestudent_id <input type="text" name="prestudent_id" value="'.(isset($_POST['prestudent_id'])?$_POST['prestudent_id']:'').'"><input type="submit" value="anzeigen" name="testergebnisanzeigen"></form>';
if(isset($_POST['testergebnisanzeigen']) && isset($_POST['prestudent_id']))
{
if(is_numeric($_POST['prestudent_id']) && $_POST['prestudent_id']!='')
@@ -847,6 +847,12 @@ if(isset($_GET['excel']))
if ($('.ort_listitem').length == 0 && $('#max_teilnehmer').val() == '' && $('#ort').val() == '')
confirm('Wenn der Reihungstest "Öffentlich" ist, sollten Räume zugeteilt sein, oder "Max TeilnehmerInnen" gesetzt sein');
}
if ($('#zugangs_ueberpruefung').is(":checked") && $('#zugangcode').val() == '')
{
alert('Wenn die Zugangsüberprüfung aktiviert ist, ist ein Zugangscode verpflichtend.');
return false;
}
});
if ($('#oeffentlich').is(":checked") && $('.ort_listitem').length == 0 && $('#max_teilnehmer').val() == '' && $('#ort').val() == '')
@@ -1396,6 +1402,12 @@ if(isset($_POST['speichern']) || isset($_POST['kopieren']))
$error = true;
}
}
if (isset($_POST['zugangs_ueberpruefung']) && $_POST['zugangcode'] === '')
{
$messageError .= '<p>Der Zugangscode muss ausgefüllt sein, wenn die Zugangsüberprüfung aktiviert ist. </p>';
$error = true;
}
if(!$error)
{
@@ -1407,6 +1419,8 @@ if(isset($_POST['speichern']) || isset($_POST['kopieren']))
$reihungstest->stufe = filter_input(INPUT_POST, 'stufe', FILTER_VALIDATE_INT);
$reihungstest->aufnahmegruppe_kurzbz = filter_input(INPUT_POST, 'aufnahmegruppe');
$reihungstest->anmeldefrist = $datum_obj->formatDatum($_POST['anmeldefrist']);
$reihungstest->zugangs_ueberpruefung = false;
$reihungstest->zugangscode = null;
}
else
{
@@ -1421,6 +1435,8 @@ if(isset($_POST['speichern']) || isset($_POST['kopieren']))
$reihungstest->anmeldefrist = $datum_obj->formatDatum($_POST['anmeldefrist']);
$reihungstest->updateamum = date('Y-m-d H:i:s');
$reihungstest->updatevon = $user;
$reihungstest->zugangs_ueberpruefung = isset($_POST['zugangs_ueberpruefung']);
$reihungstest->zugangscode = ($_POST['zugangcode'] === '' ? null : $_POST['zugangcode']);
}
$reihungstest->studiengang_kz = $_POST['studiengang_kz'];
//$reihungstest->ort_kurzbz = $_POST['ort_kurzbz'];
@@ -2504,6 +2520,18 @@ $studienplaene_list = implode(',', array_keys($studienplaene_arr));
(Kurz vor Testbeginn aktivieren)
</td>
</tr>
<tr>
<td class="feldtitel">Zugangsüberprüfung</td>
<td>
<input type="checkbox" id="zugangs_ueberpruefung" name="zugangs_ueberpruefung"<?php echo $reihungstest->zugangs_ueberpruefung ? 'checked="checked"' : '' ?>>
</td>
</tr>
<tr>
<td class="feldtitel">Zugangscode</td>
<td>
<input type="number" class="input" id="zugangcode" name="zugangcode" value="<?php echo $db->convert_html_chars($reihungstest->zugangscode) ?>"> (Verpflichtend, wenn die Zugangsüberprüfung aktiviert ist)
</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>