mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Documents
This commit is contained in:
@@ -14,9 +14,12 @@ class Documents extends Auth_Controller
|
||||
{
|
||||
parent::__construct([
|
||||
'index' => ['student/anrechnung_beantragen:r','user:r'], // TODO(chris): permissions?
|
||||
'Semester' => ['student/anrechnung_beantragen:r','user:r'] // TODO(chris): permissions?
|
||||
'student' => ['admin:r'],
|
||||
'download' => ['student/anrechnung_beantragen:r','user:r'] // TODO(chris): permissions?
|
||||
]);
|
||||
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
|
||||
$this->loadPhrases([
|
||||
'global',
|
||||
'tools'
|
||||
@@ -27,121 +30,151 @@ class Documents extends Auth_Controller
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* @param string $stsem
|
||||
* @return void
|
||||
*/
|
||||
public function index($stsem = null)
|
||||
public function index()
|
||||
{
|
||||
return $this->Semester($stsem);
|
||||
return $this->showDocuments(getAuthUID());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $stsem
|
||||
* @param string $uid Administratoren dürfen die UID als Parameter übergeben um die Dokumente von anderen Personen anzuzeigen
|
||||
* @return void
|
||||
*/
|
||||
public function Semester($stsem = null)
|
||||
public function student($uid)
|
||||
{
|
||||
return $this->showDocuments($uid);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $uid
|
||||
* @return void
|
||||
*/
|
||||
protected function showDocuments($uid)
|
||||
{
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->load->model('crm/Konto_model', 'KontoModel');
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$uid = getAuthUID();
|
||||
$studiengaenge = [];
|
||||
|
||||
$stati = $this->PrestudentstatusModel->loadWhereUid($uid, null, true);
|
||||
if (isError($stati))
|
||||
return $this->view->load('errors/html/error_db.php', [
|
||||
return $this->load->view('errors/html/error_db.php', [
|
||||
'heading' => 'Database Error',
|
||||
'message' => getError($stati)
|
||||
]);
|
||||
$stati = getData($stati);
|
||||
if (!$stati)
|
||||
return $this->view->load('errors/html/error_general.php', [
|
||||
return $this->load->view('errors/html/error_general.php', [
|
||||
'heading' => 'User ist kein Student',
|
||||
'message' => 'Es konnten keine Studiensemester gefunden werden in denen der User als Student inskripiert ist'
|
||||
]);
|
||||
|
||||
$stsemArray = [];
|
||||
$stgs = [];
|
||||
$buchungstypen = implode('\',\'', defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN") ? unserialize(CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN) : []);
|
||||
$person_ids = [];
|
||||
foreach ($stati as $status) {
|
||||
if (!isset($studiengaenge[$status->studiengang_kz])) {
|
||||
$person_ids[] = $status->person_id;
|
||||
|
||||
if (!isset($stgs[$status->studiengang_kz])) {
|
||||
$stg = $this->StudiengangModel->load($status->studiengang_kz);
|
||||
if (isError($stg))
|
||||
return $this->view->load('errors/html/error_db.php', [
|
||||
return $this->load->view('errors/html/error_db.php', [
|
||||
'heading' => 'Database Error',
|
||||
'message' => getError($stg)
|
||||
]);
|
||||
$stg = getData($stg);
|
||||
if (!$stg)
|
||||
return $this->view->load('errors/html/error_db.php', [
|
||||
return $this->load->view('errors/html/error_db.php', [
|
||||
'heading' => 'Database Error',
|
||||
'message' => 'No Studiengang found for studiengang_kz ' . $status->studiengang_kz
|
||||
]);
|
||||
$studiengaenge[$status->studiengang_kz] = current($stg);
|
||||
$stgs[$status->studiengang_kz] = current($stg);
|
||||
$stgs[$status->studiengang_kz]->studiensemester = [];
|
||||
}
|
||||
if (!isset($stsemArray[$status->studiensemester_kurzbz]))
|
||||
$stsemArray[$status->studiensemester_kurzbz] = [];
|
||||
// TODO(chris): maybe just use prestudent_id?
|
||||
$stsemArray[$status->studiensemester_kurzbz][] = $status;
|
||||
}
|
||||
|
||||
$hasSemester = true;
|
||||
$inskriptionsbestaetigungen = [];
|
||||
|
||||
if ($stsem && !isset($stsemArray[$stsem])) {
|
||||
$hasSemester = false;
|
||||
} else {
|
||||
if (!$stsem)
|
||||
$stsem = end($stsemArray);
|
||||
|
||||
#$stsemArray[$stsem] = array_unique($stsemArray[$stsem]);
|
||||
|
||||
$buchungstypen = implode('\',\'', defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN") ? unserialize(CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN) : []);
|
||||
|
||||
foreach ($stsemArray[$stsem] as $status) {
|
||||
// NOTE(chris): multiple prestudentstatus for prestudent and semester
|
||||
if (isset($inskriptionsbestaetigungen[$status->studiengang_kz]))
|
||||
continue;
|
||||
|
||||
$inskriptionsbestaetigungen[$status->studiengang_kz] = (boolean) getData($this->KontoModel->checkStudienbeitragFromPrestudent($status->prestudent_id, $stsem, $buchungstypen));
|
||||
if (!isset($stgs[$status->studiengang_kz]->studiensemester[$status->studiensemester_kurzbz])) {
|
||||
$stgs[$status->studiengang_kz]->studiensemester[$status->studiensemester_kurzbz] = new stdClass();
|
||||
$stgs[$status->studiengang_kz]->studiensemester[$status->studiensemester_kurzbz]->inskriptionsbestaetigung = (boolean) getData($this->KontoModel->checkStudienbeitragFromPrestudent($status->prestudent_id, $status->studiensemester_kurzbz, $buchungstypen));
|
||||
}
|
||||
}
|
||||
$person_ids = array_unique($person_ids);
|
||||
|
||||
$selfservice = null;
|
||||
if (!defined('CIS_DOKUMENTE_SELFSERVICE') || CIS_DOKUMENTE_SELFSERVICE) {
|
||||
$this->load->model('crm/Akte_model', 'AkteModel');
|
||||
$result = $this->AkteModel->getArchiv(getAuthPersonId(), null, true);
|
||||
if (isError($result))
|
||||
return $this->view->load('errors/html/error_db.php', [
|
||||
'heading' => 'Database Error',
|
||||
'message' => getError($result)
|
||||
]);
|
||||
$selfservice = getData($result) ?: [];
|
||||
$selfservice = [];
|
||||
foreach ($person_ids as $person_id) {
|
||||
$result = $this->AkteModel->getArchiv($person_id, null, true);
|
||||
if (isError($result))
|
||||
return $this->load->view('errors/html/error_db.php', [
|
||||
'heading' => 'Database Error',
|
||||
'message' => getError($result)
|
||||
]);
|
||||
$selfservice = array_merge($selfservice, getData($result) ?: []);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO(chris): in array stsem stsemArray:
|
||||
// TODO(chris): - inskriptionsbestaetigung (konto)
|
||||
// TODO(chris): - CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN? studienbuchblatt
|
||||
// TODO(chris): - CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN? studienerfolgsbestaetigung
|
||||
// TODO(chris): else: msg
|
||||
|
||||
// TODO(chris): CIS_DOKUMENTE_SELFSERVICE?: ...abschlussdokumente (akte)
|
||||
|
||||
$stsemArray = array_keys($stsemArray);
|
||||
if (!$hasSemester)
|
||||
array_unshift($stsemArray, $stsem);
|
||||
|
||||
$this->load->view('Cis/Documents', [
|
||||
'stgs' => $stgs,
|
||||
'uid' => $uid,
|
||||
'stsem' => $stsem,
|
||||
'stsemArray' => $stsemArray,
|
||||
'hasSemester' => $hasSemester,
|
||||
'studiengaenge' => $studiengaenge,
|
||||
'inskriptionsbestaetigungen' => $inskriptionsbestaetigungen,
|
||||
'studienbuchblatt' => defined('CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN') && CIS_DOKUMENTE_STUDIENBUCHLBATT_DRUCKEN,
|
||||
'studienerfolgsbestaetigung' => defined('CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN') && CIS_DOKUMENTE_STUDIENERFOLGSBESTAETIGUNG_DRUCKEN,
|
||||
'selfservice' => $selfservice
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $akte_id
|
||||
* @param string $uid (optional) Administratoren dürfen die UID als Parameter übergeben um die Dokumente von anderen Personen anzuzeigen
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function download($akte_id, $uid = null)
|
||||
{
|
||||
if (!is_numeric($akte_id))
|
||||
return show_404();
|
||||
|
||||
$this->load->model('crm/Akte_model', 'AkteModel');
|
||||
$result = $this->AkteModel->load($akte_id);
|
||||
if (isError($result))
|
||||
return show_error(getError($result));
|
||||
$akte = getData($result);
|
||||
if (!$akte)
|
||||
return show_404();
|
||||
$akte = current($akte);
|
||||
|
||||
$admin_access = false;
|
||||
if ($uid !== null && $this->permissionlib->isBerechtigt('admin')) {
|
||||
$stati = $this->PrestudentstatusModel->loadWhereUid($uid, null, true);
|
||||
if (hasData($stati)) {
|
||||
$person_ids = array_map(function ($status) {
|
||||
return $status->person_id;
|
||||
}, getData($stati));
|
||||
$person_ids = array_unique($person_ids);
|
||||
if (count($person_ids) == 1 && current($person_ids) == $akte->person_id) {
|
||||
$admin_access = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$admin_access && ($akte->person_id != getAuthPersonId() || !$akte->stud_selfservice))
|
||||
return show_error('Forbidden', 403);
|
||||
|
||||
// NOTE(chris): Log bei einem Download vom Becheid
|
||||
if (isset($akte->dokument_kurzbz) && ($akte->dokument_kurzbz === 'Bescheid' || $akte->dokument_kurzbz === 'BescheidEng')) {
|
||||
$this->load->model('system/Webservicelog_model', 'WebservicelogModel');
|
||||
$this->WebservicelogModel->insert([
|
||||
'webservicetyp_kurzbz' => 'content',
|
||||
'request_id' => (isset($akte->akte_id) && !empty($akte->akte_id)) ? $akte->akte_id : NULL,
|
||||
'beschreibung' => 'Bescheidbestaetigungsdownload',
|
||||
'request_data' => $_SERVER['QUERY_STRING'],
|
||||
'execute_time' => date('c'),
|
||||
'execute_user' => getAuthUID()
|
||||
]);
|
||||
}
|
||||
|
||||
$this->output->set_content_type($akte->mimetype);
|
||||
$this->output->set_output(base64_decode($akte->inhalt));
|
||||
}
|
||||
}
|
||||
|
||||
+192
-113
@@ -1,131 +1,210 @@
|
||||
<?php
|
||||
$includesArray = array();
|
||||
$includesArray = array(
|
||||
'tabulator5' => true,
|
||||
'customJSModules' => ['public/js/apps/Cis/Documents.js']
|
||||
);
|
||||
|
||||
$this->load->view('templates/CISHTML-Header', $includesArray);
|
||||
?>
|
||||
|
||||
<div id="content">
|
||||
<div class="fhc-header">
|
||||
<h1><?= $this->p->t('global', 'dokumente'); ?><small><?= $this->p->t('tools', 'bestaetigungenZeugnisse'); ?></small></h1>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3 justify-content-end">
|
||||
<div class="col-auto">
|
||||
<select class="form-select" onchange="location = this.value">
|
||||
<?php foreach ($stsemArray as $sem) { ?>
|
||||
<option value="<?= site_url('Cis/Documents/Semester/' . $sem); ?>"<?= $sem == $stsem ? ' selected': ''; ?>>
|
||||
<?= $sem; ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<h1><?= $this->p->t('tools', 'dokumente'); ?><small><?= $this->p->t('tools', 'bestaetigungenZeugnisse'); ?></small></h1>
|
||||
</div>
|
||||
|
||||
<?php if ($hasSemester) { ?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header h5"><?= $this->p->t('tools', 'inskriptionsbestaetigung'); ?></h3>
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php foreach ($inskriptionsbestaetigungen as $stg => $hasPaid) { ?>
|
||||
<?php if (count($studiengaenge) != 1) { ?>
|
||||
<li class="list-group-item fw-bold">
|
||||
<?= $studiengaenge[$stg]->bezeichnung; ?>
|
||||
</li>
|
||||
<div class="row">
|
||||
<div class="col<?= $selfservice ? '-8' : ''; ?>">
|
||||
<div class="fhc-table mb-3">
|
||||
<div class="fhc-table-header d-flex align-items-center mb-2 gap-2">
|
||||
<h3 class="h5 col m-0"><?= $this->p->t('tools', 'inskriptionsbestaetigung'); ?><?= $studienbuchblatt ? ' & ' . $this->p->t('tools', 'studienbuchblatt') : ''; ?></h3>
|
||||
<?php if (count($stgs) != 1) { ?>
|
||||
<div class="col-auto">
|
||||
<select class="form-select" @input="changeFilter('inscriptiontable', 'Stg', $event)">
|
||||
<option value="">Alle</option>
|
||||
<?php foreach ($stgs as $stg) { ?>
|
||||
<option value="<?= $stg->bezeichnung; ?>">
|
||||
<?= $stg->bezeichnung; ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if ($hasPaid) { ?>
|
||||
<li class="list-group-item">
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=' . $stsem . '&uid=' . $uid . '&xsl_stg_kz=' . $stg); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'inskriptionsbestaetigung') . ' ' . $stsem; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php } else { ?>
|
||||
<li class="list-group-item list-group-item-danger">
|
||||
<?= $this->p->t('tools', 'studienbeitragFuerSSNochNichtBezahlt', ['stsem' => $stsem]); ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php if ($studienbuchblatt) { ?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header h5"><?= $this->p->t('tools', 'studienbuchblatt'); ?></h3>
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php foreach ($inskriptionsbestaetigungen as $stg => $hasPaid) { ?>
|
||||
<?php if (count($studiengaenge) != 1) { ?>
|
||||
<li class="list-group-item fw-bold">
|
||||
<?= $studiengaenge[$stg]->bezeichnung; ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if ($hasPaid) { ?>
|
||||
<li class="list-group-item">
|
||||
<?php /* TODO(chris): studiengang_kz? */ ?>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=' . $stsem . '&uid=' . $uid); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'studienbuchblatt') . ' ' . $stsem; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php } else { ?>
|
||||
<li class="list-group-item list-group-item-danger">
|
||||
<?= $this->p->t('tools', 'studienbeitragFuerSSNochNichtBezahlt', ['stsem' => $stsem]); ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if ($studienerfolgsbestaetigung) { ?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header h5"><?= $this->p->t('tools', 'studienerfolgsbestaetigung'); ?></h3>
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php foreach ($studiengaenge as $stg => $bezeichnung) { ?>
|
||||
<?php if (count($studiengaenge) != 1) { ?>
|
||||
<li class="list-group-item fw-bold">
|
||||
<?= $bezeichnung; ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php foreach (['' => '&typ=finanzamt', ' (' . $this->p->t('tools', 'vorlageWohnsitzfinanzamt') . ')' => ''] as $finanz_bez => $finanz_param) { ?>
|
||||
<?php foreach (['de' => [$this->p->t('public', 'deutsch'), 'Studienerfolg'], 'en' => [$this->p->t('public', 'englisch'), 'StudienerfolgEng']] as $lang_kurz => $lang) { ?>
|
||||
<?php foreach ([$stsem => $stsem, $this->p->t('tools', 'alleStudiensemester') => 'alle&all=1'] as $sem_bez => $sem_param) { ?>
|
||||
<li class="list-group-item">
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=' . $lang[1] . '&xml=studienerfolg.rdf.php&ss=' . $sem_param . '&uid=' . $uid . $finanz_param); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'studienerfolgsbestaetigung') . ' ' . $sem_bez . ' ' . $lang[0] . $finanz_bez; ?>
|
||||
</a>
|
||||
</li>
|
||||
<div class="col-auto">
|
||||
<select class="form-select" @input="changeFilter('inscriptiontable', 'Stsem', $event)">
|
||||
<option value="">Alle</option>
|
||||
<?php foreach ($stsemArray as $sem) { ?>
|
||||
<option value="<?= $sem; ?>">
|
||||
<?= $sem; ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<table ref="inscriptiontable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th tabulator-formatter="html">Dokument</th>
|
||||
<?php if (count($stgs) != 1) { ?>
|
||||
<th tabulator-field="Stg">Studiengang</th>
|
||||
<?php } ?>
|
||||
<th tabulator-field="Stsem">Studiensemester</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($stgs as $stg) { ?>
|
||||
<?php foreach ($stg->studiensemester as $stsem => $sem) { ?>
|
||||
<?php if (true && $sem->inskriptionsbestaetigung) { ?>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=Inskription&xml=student.rdf.php&ss=' . $stsem . '&uid=' . $uid . '&xsl_stg_kz=' . $stg->studiengang_kz); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'inskriptionsbestaetigung'); ?>
|
||||
</a>
|
||||
</td>
|
||||
<?php if (count($stgs) != 1) { ?>
|
||||
<td><?= $stg->bezeichnung; ?></td>
|
||||
<?php } ?>
|
||||
<td><?= $stsem; ?></td>
|
||||
</tr>
|
||||
<?php if ($studienbuchblatt) { ?>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&ss=' . $stsem . '&uid=' . $uid); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'studienbuchblatt'); ?>
|
||||
</a>
|
||||
</td>
|
||||
<?php if (count($stgs) != 1) { ?>
|
||||
<td><?= $stg->bezeichnung; ?></td>
|
||||
<?php } ?>
|
||||
<td><?= $stsem; ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php if ($studienerfolgsbestaetigung) { ?>
|
||||
<div class="fhc-table mb-3">
|
||||
<div class="fhc-table-header d-flex align-items-center mb-2 gap-2">
|
||||
<h3 class="h5 col m-0"><?= $this->p->t('tools', 'studienerfolgsbestaetigung'); ?></h3>
|
||||
<?php if (count($stgs) != 1) { ?>
|
||||
<div class="col-auto">
|
||||
<select class="form-select" @input="changeFilter('studienerfolgsbestaetigungtable', 'Stg', $event)">
|
||||
<option value="">Alle</option>
|
||||
<?php foreach ($stgs as $stg) { ?>
|
||||
<option value="<?= $stg->bezeichnung; ?>">
|
||||
<?= $stg->bezeichnung; ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<div class="col-auto">
|
||||
<select class="form-select" @input="changeFilter('studienerfolgsbestaetigungtable', 'Stsem', $event)">
|
||||
<option value="">Alle</option>
|
||||
<option value="<?= $this->p->t('tools', 'alleStudiensemester'); ?>"><?= $this->p->t('tools', 'alleStudiensemester'); ?></option>
|
||||
<?php foreach ($stsemArray as $sem) { ?>
|
||||
<option value="<?= $sem; ?>">
|
||||
<?= $sem; ?>
|
||||
</option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<select class="form-select" @input="changeFilter('studienerfolgsbestaetigungtable', 'Lang', $event)">
|
||||
<option value="">Alle</option>
|
||||
<option value="<?= $this->p->t('global', 'deutsch'); ?>"><?= $this->p->t('global', 'deutsch'); ?></option>
|
||||
<option value="<?= $this->p->t('global', 'englisch'); ?>"><?= $this->p->t('global', 'englisch'); ?></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<table ref="studienerfolgsbestaetigungtable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th tabulator-formatter="html">Dokument</th>
|
||||
<?php if (count($stgs) != 1) { ?>
|
||||
<th tabulator-field="Stg">Studiengang</th>
|
||||
<?php } ?>
|
||||
<th tabulator-field="Stsem">Studiensemester</th>
|
||||
<th tabulator-field="Lang">Sprache</th>
|
||||
<th tabulator-field="Finance" tabulator-formatter="tickCross"><?= $this->p->t('tools', 'vorlageWohnsitzfinanzamt'); ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach (['Studienerfolg' => $this->p->t('global', 'deutsch'), 'StudienerfolgEng' => $this->p->t('global', 'englisch')] as $lang_xsl => $lang) { ?>
|
||||
<?php foreach ([true, false] as $finance) { ?>
|
||||
<?php foreach ($stgs as $stg) { ?>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=' . $lang_xsl . '&xml=studienerfolg.rdf.php&ss=alle&all=1&uid=' . $uid . ($finance ? '&typ=finanzamt' : '')); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'studienerfolgsbestaetigung'); ?>
|
||||
</a>
|
||||
</td>
|
||||
<?php if (count($stgs) != 1) { ?>
|
||||
<td><?= $stg->bezeichnung; ?></td>
|
||||
<?php } ?>
|
||||
<td><?= $this->p->t('tools', 'alleStudiensemester'); ?></td>
|
||||
<td><?= $lang; ?></td>
|
||||
<td><?= $finance; ?></td>
|
||||
</tr>
|
||||
<?php foreach ($stg->studiensemester as $stsem => $sem) { ?>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('cis/private/pdfExport.php?xsl=' . $lang_xsl . '&xml=studienerfolg.rdf.php&ss=' . $stsem . '&uid=' . $uid . ($finance ? '&typ=finanzamt' : '')); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $this->p->t('tools', 'studienerfolgsbestaetigung'); ?>
|
||||
</a>
|
||||
</td>
|
||||
<?php if (count($stgs) != 1) { ?>
|
||||
<td><?= $stg->bezeichnung; ?></td>
|
||||
<?php } ?>
|
||||
<td><?= $stsem; ?></td>
|
||||
<td><?= $lang; ?></td>
|
||||
<td><?= $finance; ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if ($selfservice !== null) { ?>
|
||||
<div class="fhc-table mb-3">
|
||||
<div class="fhc-table-header d-flex align-items-center mb-2 gap-2">
|
||||
<h3 class="h5 col m-0"><?= $this->p->t('tools', 'abschlussdokumente'); ?></h3>
|
||||
</div>
|
||||
<table ref="abschlussdokumentetable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th tabulator-formatter="html">Dokument</th>
|
||||
<th tabulator-field="Date">Datum</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach ($selfservice as $row) { ?>
|
||||
<tr>
|
||||
<td>
|
||||
<a class="text-decoration-none" target="_blank" href="<?= site_url('Cis/Documents/download/' . $row->akte_id . ($row->person_id != getAuthPersonId() ? '/' . $uid : '')); ?>">
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $row->bezeichnung; ?>
|
||||
</a>
|
||||
<td><?= (new DateTime($row->erstelltam))->format('d.m.Y'); ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php if ($selfservice) { ?>
|
||||
<div class="col-4">
|
||||
<div class="alert alert-warning" role="alert">
|
||||
<?= $this->p->t('tools', 'warnungDruckDigitaleSignatur'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php } else { ?>
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<?= $this->p->t('tools', 'keinStatusImStudiensemester', ['stsem' => $stsem]); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($selfservice !== null) { ?>
|
||||
<div class="card mb-3">
|
||||
<h3 class="card-header h5"><?= $this->p->t('tools', 'abschlussdokumente'); ?></h3>
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php if (count($selfservice)) { ?>
|
||||
<li class="list-group-item list-group-item-warning">
|
||||
<?= $this->p->t('tools', 'warnungDruckDigitaleSignatur'); ?>
|
||||
</li>
|
||||
<?php foreach ($selfservice as $row) { ?>
|
||||
<li class="list-group-item">
|
||||
<a class="text-decoration-none" target="_blank" href="<?= base_url('dokumente.php?action=download&id='.$row->akte_id.'&uid='.$uid); ?>">
|
||||
<?php /* TODO(chris): datum & link */ ?>
|
||||
<img class="align-baseline" src="<?= base_url('skin/images/pdfpic.gif'); ?>" alt="PDF"> <?= $row->bezeichnung; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php } else { ?>
|
||||
<li class="list-group-item list-group-item-danger">
|
||||
<?= $this->p->t('tools', 'nochKeineAbschlussdokumenteVorhanden'); ?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php $this->load->view('templates/CISHTML-Footer', $includesArray); ?>
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
import Phrasen from '../../mixins/Phrasen.js';
|
||||
//import {TabulatorFull as Tabulator} from '../../../../vendor/olifolkerd/tabulator5/dist/js/tabulator_esm.min.js';
|
||||
//import CssLib from '../../helpers/CssLib.js';
|
||||
//CssLib.import('../../vendor/olifolkerd/tabulator5/dist/css/tabulator_bootstrap5.min.css');
|
||||
|
||||
const app = Vue.createApp({
|
||||
mixins: [
|
||||
Phrasen
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
inscriptiontable: null,
|
||||
inscriptiontableFilters: {},
|
||||
studienerfolgsbestaetigungtable: null,
|
||||
studienerfolgsbestaetigungtableFilters: {},
|
||||
abschlussdokumentetable: null
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
inscriptiontableFilter() {
|
||||
const filter = [];
|
||||
for (var k in this.inscriptiontableFilters)
|
||||
if (this.inscriptiontableFilters[k])
|
||||
filter.push({
|
||||
field: k,
|
||||
type: '=',
|
||||
value: this.inscriptiontableFilters[k]
|
||||
});
|
||||
return filter;
|
||||
},
|
||||
inscriptiontableEmpty() {
|
||||
// NOTE(chris): empty result on filter
|
||||
if (this.inscriptiontableFilters.Stsem)
|
||||
return this.p.t('tools', 'studienbeitragFuerSSNochNichtBezahlt', {stsem: this.inscriptiontableFilters.Stsem});
|
||||
if (this.inscriptiontableFilters.Stg)
|
||||
return this.p.t('tools', 'studienbeitragFuerStgNochNichtBezahlt', {stsem: this.inscriptiontableFilters.Stg});
|
||||
|
||||
return this.p.t('tools', 'studienbeitragNochNichtBezahlt');
|
||||
},
|
||||
studienerfolgsbestaetigungtableFilter() {
|
||||
const filter = [];
|
||||
for (var k in this.studienerfolgsbestaetigungtableFilters)
|
||||
if (this.studienerfolgsbestaetigungtableFilters[k])
|
||||
filter.push({
|
||||
field: k,
|
||||
type: '=',
|
||||
value: this.studienerfolgsbestaetigungtableFilters[k]
|
||||
});
|
||||
return filter;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
changeFilter(table, field, evt) {
|
||||
this[table + 'Filters'][field] = evt.target.value;
|
||||
this[table].clearFilter();
|
||||
if (this[table + 'Filter'].length)
|
||||
this[table].setFilter(this[table + 'Filter']);
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.inscriptiontable = new Tabulator(this.$refs.inscriptiontable, {
|
||||
layout: 'fitDataStretch',
|
||||
placeholder: this.p.t('tools', 'studienbeitragNochNichtBezahlt')
|
||||
});
|
||||
this.studienerfolgsbestaetigungtable = new Tabulator(this.$refs.studienerfolgsbestaetigungtable, {
|
||||
layout: 'fitDataStretch'
|
||||
});
|
||||
this.abschlussdokumentetable = new Tabulator(this.$refs.abschlussdokumentetable, {
|
||||
layout: 'fitDataStretch',
|
||||
placeholder: this.p.t('tools', 'nochKeineAbschlussdokumenteVorhanden')
|
||||
});
|
||||
|
||||
// NOTE(chris): empty result on filter
|
||||
const div = Vue.h(
|
||||
'div',
|
||||
{
|
||||
class: 'position-absolute top-0 left-0 w-100 h-100 d-flex justify-content-center align-items-center fw-bold text-muted'
|
||||
},
|
||||
[
|
||||
this.inscriptiontableEmpty
|
||||
]
|
||||
);
|
||||
this.inscriptiontable.on('dataSorted', (sorters, rows) => {
|
||||
if (!rows.length) {
|
||||
div.children = [this.inscriptiontableEmpty];
|
||||
Vue.render(div, this.inscriptiontable.element.querySelector('.tabulator-tableholder'));
|
||||
} else {
|
||||
Vue.render(null, this.inscriptiontable.element.querySelector('.tabulator-tableholder'));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
app.mount('#content');
|
||||
+346
-6
@@ -17318,6 +17318,46 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'global',
|
||||
'phrase' => 'englisch',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Englisch",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "English",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'global',
|
||||
'phrase' => 'deutsch',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Deutsch",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "German",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'global',
|
||||
@@ -17341,18 +17381,78 @@ array(
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'keinStatusImStudiensemester',
|
||||
'phrase' => 'dokumente',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Für das übergebene Studiensemester {stsem} existiert kein Status. Bitte wählen Sie ein gültiges Studiensemester aus dem DropDown.',
|
||||
'text' => 'Dokumente',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'No status found for {stsem}. Please select a valid semester from the dropdown.',
|
||||
'text' => 'Documents',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'dokument',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dokument',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Document',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'erstelldatum',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Erstelldatum',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Creation date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'bestaetigungenZeugnisse',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bestätigungen/Zeugnisse',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Certificates/Transcripts',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -17381,18 +17481,258 @@ array(
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'studienbeitragFuerSSNochNichtBezahlt',
|
||||
'phrase' => 'studienbeitragFuerSSBezahlt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienbeitrag für das {stsem} noch nicht bezahlt',
|
||||
'text' => 'Studienbeitrag für das %1$s bezahlt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'tuition fee for semester {stsem} not yet paid',
|
||||
'text' => 'tuition fee for semester %1$s paid',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'studienbeitragFuerSSNochNichtBezahlt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienbeitrag für das %1$s noch nicht bezahlt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'tuition fee for semester %1$s not yet paid',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'studienbeitragFuerStgNochNichtBezahlt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienbeitrag für %1$s noch nicht bezahlt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'tuition fee for %1$s not yet paid',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'studienbeitragNochNichtBezahlt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienbeitrag noch nicht bezahlt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'tuition fee not yet paid',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'studienerfolgsbestaetigung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienerfolgsbestätigung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Student progress report',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'studiensemesterAuswaehlen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Bitte wählen Sie das entsprechende Studiensemester aus',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Please select the corresponding semester',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'vorlageWohnsitzfinanzamt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'zur Vorlage beim Wohnsitzfinanzamt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'for submission to local tax office',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'studienbuchblatt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Studienbuchblatt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Student Record', //Noch zu übersetzen
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'alleStudiensemester',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Alle Studiensemester',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'All semester',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'abschlussdokumente',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Abschlussdokumente/Zeugnisse',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Final documents/Transcripts',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'nochKeineAbschlussdokumenteVorhanden',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Noch keine Abschlussdokumente vorhanden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'No final documents available yet',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'keinStatusImStudiensemester',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Für das übergebene Studiensemester %1$s existiert kein Status. Bitte wählen Sie ein gültiges Studiensemester aus dem DropDown.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'No status found for %1$s. Please select a valid semester from the dropdown.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'tools',
|
||||
'phrase' => 'warnungDruckDigitaleSignatur',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => '<b>Hinweis!</b> Digital signierte Dokumente werden in manchen Browsern und PDF-Readern nicht korrekt angezeigt. <br/>Bitte verwenden Sie den <a href="https://get.adobe.com/de/reader/" target="_blank">Adobe Acrobat Reader</a>, wenn Sie das Dokument ausdrucken möchten.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => '<b>Note!</b> Digitally signed documents are not displayed correctly in some browsers and PDF readers. <br/>Please use the <a href="https://get.adobe.com/de/reader/" target="_blank">Adobe Acrobat Reader</a> if you want to print the document.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user