first commit
This commit is contained in:
commit
086d1e1e9e
231
#erm_freist_forschung.php
Executable file
231
#erm_freist_forschung.php
Executable file
@ -0,0 +1,231 @@
|
||||
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Gespeicherte Funktionen
|
||||
$query1 = "SELECT dkeid, bezeichnung, grundlage
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE grundlage IN ('§ 2 Abs. 8, 9 LVVO')
|
||||
ORDER BY dkeid ASC";
|
||||
|
||||
$result1 = $db->query($query1) or die("Cannot execute query2");
|
||||
|
||||
while ($row1 = $result1->fetch_array()) {
|
||||
$table_data1[] = $row1;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["freistrekto_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["freistrekto_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('freistrekto_error', 1);
|
||||
|
||||
$smarty->assign('freistrekto_value_funktion', $_SESSION["freistrekto_value_funktion"]);
|
||||
$smarty->assign('freistrekto_value_std', $_SESSION["freistrekto_value_sws"]);
|
||||
$smarty->assign('freistrekto_value_datumvon', $_SESSION["freistrekto_value_beginn_funktion"]);
|
||||
$smarty->assign('freistrekto_value_datumbis', $_SESSION["freistrekto_value_ende_funktion"]);
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('freistrekto_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('freistrekto_status', $_SESSION["freistrekto_status"]);
|
||||
$smarty->assign('freistrekto_value_funktion', "$row_edit[funktion]");
|
||||
$smarty->assign('freistrekto_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('freistrekto_value_datumbis', "$row_edit[ende]");
|
||||
$smarty->assign('freistrekto_value_std', "$row_edit[sws]");
|
||||
$smarty->assign('freistrekto_value_hinweise', "$row_edit[lvs]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art ='Deputatsermäßigung aufgrund von Forschungs- und Entwicklungsaufgaben (§ 2 Abs. 8, 9 LVVO)'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$query_funktion = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE dkeid = '$row2[funktion]'");
|
||||
$row_funktion = $query_funktion->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['funktion'] = $row_funktion['bezeichnung'];
|
||||
$sws = number_format($row2['sws'], 2, ',', '.');
|
||||
$row2['sws'] = $sws;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art ='Deputatsermäßigung aufgrund von Forschungs- und Entwicklungsaufgaben (§ 2 Abs. 8, 9 LVVO)'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('freistrekto_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$funktion = $_POST['funktion'];
|
||||
$sws = str_replace(',','.',str_replace('.','', $_POST['sws']));
|
||||
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_funktion']);
|
||||
if($beginn == ''){
|
||||
$beginn = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_funktion']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
$_SESSION["freistrekto_value_funktion"] = $funktion;
|
||||
$_SESSION["freistrekto_value_sws"] = $sws;
|
||||
$_SESSION["freistrekto_value_beginn_funktion"] = $_POST['beginn_funktion'];
|
||||
$_SESSION["freistrekto_value_ende_funktion"] = $_POST['ende_funktion'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
$lvs = $_POST['lvs'];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["freistrekto_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, funktion
|
||||
, beginn
|
||||
, ende
|
||||
, sws
|
||||
, lvs
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Deputatsermäßigung aufgrund von Forschungs- und Entwicklungsaufgaben (§ 2 Abs. 8, 9 LVVO)'
|
||||
, '$funktion'
|
||||
, '$beginn'
|
||||
, '$ende'
|
||||
, '$sws'
|
||||
, '$lvs'
|
||||
, 6
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$deid = $_SESSION["freistrekto_deid"];
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET funktion = '$funktion'
|
||||
, beginn = '$beginn'
|
||||
, ende = '$ende'
|
||||
, sws = '$sws'
|
||||
, lvs = '$lvs'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['freistrekto_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
232
#erm_freist_funktion.php
Executable file
232
#erm_freist_funktion.php
Executable file
@ -0,0 +1,232 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Gespeicherte Funktionen
|
||||
$query1 = "SELECT dkeid, bezeichnung, grundlage
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE grundlage IN ('§ 11 LVVO')
|
||||
ORDER BY dkeid ASC";
|
||||
|
||||
$result1 = $db->query($query1) or die("Cannot execute query2");
|
||||
|
||||
while ($row1 = $result1->fetch_array()) {
|
||||
$table_data1[] = $row1;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["freistrekto_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["freistrekto_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('freistrekto_error', 1);
|
||||
|
||||
$smarty->assign('freistrekto_value_funktion', $_SESSION["freistrekto_value_funktion"]);
|
||||
$smarty->assign('freistrekto_value_std', $_SESSION["freistrekto_value_sws"]);
|
||||
$smarty->assign('freistrekto_value_datumvon', $_SESSION["freistrekto_value_beginn_funktion"]);
|
||||
$smarty->assign('freistrekto_value_datumbis', $_SESSION["freistrekto_value_ende_funktion"]);
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('freistrekto_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('freistrekto_status', $_SESSION["freistrekto_status"]);
|
||||
$smarty->assign('freistrekto_value_funktion', "$row_edit[funktion]");
|
||||
$smarty->assign('freistrekto_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('freistrekto_value_datumbis', "$row_edit[ende]");
|
||||
$smarty->assign('freistrekto_value_std', "$row_edit[sws]");
|
||||
$smarty->assign('freistrekto_value_hinweise', "$row_edit[lvs]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art ='Deputatsermäßigung aufgrund einer Funktion/Beauftragung (§ 11 LVVO)'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$query_funktion = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE dkeid = '$row2[funktion]'");
|
||||
$row_funktion = $query_funktion->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['funktion'] = $row_funktion['bezeichnung'];
|
||||
$sws = number_format($row2['sws'], 2, ',', '.');
|
||||
$row2['sws'] = $sws;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art ='Deputatsermäßigung aufgrund einer Funktion/Beauftragung (§ 11 LVVO)'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('freistrekto_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$funktion = $_POST['funktion'];
|
||||
$sws = str_replace(',','.',str_replace('.','', $_POST['sws']));
|
||||
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_funktion']);
|
||||
if($beginn == ''){
|
||||
$beginn = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_funktion']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
|
||||
$_SESSION["freistrekto_value_funktion"] = $funktion;
|
||||
$_SESSION["freistrekto_value_sws"] = $sws;
|
||||
$_SESSION["freistrekto_value_beginn_funktion"] = $_POST['beginn_funktion'];
|
||||
$_SESSION["freistrekto_value_ende_funktion"] = $_POST['ende_funktion'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
$lvs = $_POST['lvs'];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["freistrekto_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, funktion
|
||||
, beginn
|
||||
, ende
|
||||
, sws
|
||||
, lvs
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Deputatsermäßigung aufgrund einer Funktion/Beauftragung (§ 11 LVVO)'
|
||||
, '$funktion'
|
||||
, '$beginn'
|
||||
, '$ende'
|
||||
, '$sws'
|
||||
, '$lvs'
|
||||
, 5
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$deid = $_SESSION["freistrekto_deid"];
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET funktion = '$funktion'
|
||||
, beginn = '$beginn'
|
||||
, ende = '$ende'
|
||||
, sws = '$sws'
|
||||
, lvs = '$lvs'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['freistrekto_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
221
#erm_mutterschutz.php
Executable file
221
#erm_mutterschutz.php
Executable file
@ -0,0 +1,221 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["muschu_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["muschu_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["muschu_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('muschu_error', 1);
|
||||
|
||||
$smarty->assign('muschu_value_funktion', $_SESSION["muschu_value_funktion"]);
|
||||
$smarty->assign('muschu_value_std', $_SESSION["muschu_value_sws"]);
|
||||
$smarty->assign('muschu_value_datumvon', $_SESSION["muschu_value_beginn_funktion"]);
|
||||
$smarty->assign('muschu_value_datumbis', $_SESSION["muschu_value_ende_funktion"]);
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('muschu_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["muschu_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('muschu_status', $_SESSION["muschu_status"]);
|
||||
$smarty->assign('muschu_value_funktion', "$row_edit[funktion]");
|
||||
$smarty->assign('muschu_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('muschu_value_datumbis', "$row_edit[ende]");
|
||||
$smarty->assign('muschu_value_std', "$row_edit[sws]");
|
||||
$smarty->assign('muschu_value_hinweise', "$row_edit[lvs]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["muschu_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, art, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art ='Mutterschutz / Elternzeit / Pflegezeit'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$query_funktion = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE dkeid = '$row2[funktion]'");
|
||||
$row_funktion = $query_funktion->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['funktion'] = $row_funktion['bezeichnung'];
|
||||
$sws = number_format($row2['sws'], 2, ',', '.');
|
||||
$row2['sws'] = $sws;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art ='Mutterschutz / Elternzeit / Pflegezeit'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('muschu_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$funktion = $_POST['funktion'];
|
||||
$sws = $_POST['sws'];
|
||||
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_funktion']);
|
||||
if($beginn == ''){
|
||||
$beginn = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_funktion']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
$_SESSION["muschu_value_funktion"] = $funktion;
|
||||
$_SESSION["muschu_value_sws"] = $sws;
|
||||
$_SESSION["muschu_value_beginn_funktion"] = $_POST['beginn_funktion'];
|
||||
$_SESSION["muschu_value_ende_funktion"] = $_POST['ende_funktion'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$lvs = $_POST['lvs'];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["muschu_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, funktion
|
||||
, beginn
|
||||
, ende
|
||||
, sws
|
||||
, lvs
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Mutterschutz / Elternzeit'
|
||||
, '$funktion'
|
||||
, '$beginn'
|
||||
, '$ende'
|
||||
, '$sws'
|
||||
, '$lvs'
|
||||
, 5
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["muschu_status"] == 'edit') {
|
||||
$deid = $_SESSION["muschu_deid"];
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET funktion = '$funktion'
|
||||
, beginn = '$beginn'
|
||||
, ende = '$ende'
|
||||
, sws = '$sws'
|
||||
, lvs = '$lvs'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['muschu_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
63
#func_lvs_teilzeit.php
Executable file
63
#func_lvs_teilzeit.php
Executable file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
## Funktion berechnet die Lehrveranstaltungsstunden des Dozenten auf das Jahr
|
||||
Funktion wurde abgelöst durch func_jahrsabschluss_erm.php
|
||||
|
||||
## Funktion muss überarbeitet werden, da Ausgangspunkt nicht mehr 594 LVS pauschal sind, sondern erst in Rangfolge 2 (sort_order) kommt.
|
||||
function lvs_teilzeit($imtuid, $jahrgang){
|
||||
|
||||
require("config.inc.php");
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
$db = dbconnect();
|
||||
$lvs = "";
|
||||
|
||||
$start = new DateTime($jahrgang . '-09-01');
|
||||
$ende = $jahrgang2.'-08-31';
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
|
||||
# Sind Einträge vorhanden
|
||||
$query_vorh = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahrgang'
|
||||
AND imtuid = $uid
|
||||
AND art = 'Teilzeit'");
|
||||
$row_vorh = $query_vorh->fetch_array();
|
||||
|
||||
# Was ist die Standard LVS
|
||||
$query_baselvs = $db->query("SELECT lvs
|
||||
FROM dep_kat_lvs
|
||||
WHERE jahr <=$jahrgang
|
||||
ORDER BY jahr desc
|
||||
LIMIT 1");
|
||||
$row_baselvs = $query_baselvs->fetch_array();
|
||||
|
||||
$baselvs = $row_baselvs['lvs'];
|
||||
|
||||
if($row_vorh['Anz'] > 0){
|
||||
foreach (new DatePeriod($start, new DateInterval('P1M'), $end) as $cur) {
|
||||
# Schleife läuft alle Monate des Studienjahrs durch und prüft monatliche Teilzeit
|
||||
$akt_mon = $cur->format('Y-m');
|
||||
|
||||
$result_umf = $db->query("SELECT prozent
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE date_format(beginn, '%Y-%m') <= '$akt_mon'
|
||||
AND imtuid = $imtuid
|
||||
AND art = 'Teilzeit'
|
||||
ORDER BY beginn desc
|
||||
LIMIT 1
|
||||
");
|
||||
$row_umf = $result_umf->fetch_array();
|
||||
$lvs_ber = $baselvs/12*$row_umf['prozent'];
|
||||
$lvs = $lvs+$lvs_ber;
|
||||
|
||||
echo "$akt_mon -> $row_umf[prozent] -> $lvs<br>";
|
||||
}
|
||||
|
||||
}else{
|
||||
# Keine Teilzeit
|
||||
$lvs = $baselvs;
|
||||
}
|
||||
return $lvs;
|
||||
}
|
||||
|
||||
echo lvs_teilzeit(1,2019);
|
||||
?>
|
320
abschlussarbeiten.php
Executable file
320
abschlussarbeiten.php
Executable file
@ -0,0 +1,320 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
require_once "func_lvs_exk_mehrtaegig.php";
|
||||
require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Prüfen ob der Jahrgang schon abgeschlossen wurde, dann soll der Button "Abschließen und absenden" ausgeblendet werden
|
||||
$query_closed = $db->query("SELECT count(*) Anz
|
||||
FROM dep_doz_abschluss
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang");
|
||||
$row_closed = $query_closed->fetch_array();
|
||||
|
||||
if ($row_closed['Anz'] > 0) {
|
||||
$smarty->assign('abschluss_abschluss', 1);
|
||||
$smarty->assign('abschluss_error', 1);
|
||||
$smarty->assign('abschluss_error_text', 'Der aktuelle Jahrgang ist bereits abgeschlossen!');
|
||||
} else {
|
||||
$smarty->assign('abschluss_abschluss', 0);
|
||||
} // Jahrgang abgeschlossen
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('abschluss_error', 1);
|
||||
|
||||
$smarty->assign('abschluss_value_name', $_SESSION["abschluss_name"]);
|
||||
$smarty->assign('abschluss_value_kaid', $_SESSION["abschluss_kaid"]);
|
||||
$smarty->assign('abschluss_value_pauschale', $_SESSION['abschluss_pauschale']);
|
||||
$smarty->assign('abschluss_value_semester', $_SESSION["abschluss_semester"]);
|
||||
|
||||
if ($errorno == 1) {
|
||||
$smarty->assign('abschluss_error_text', "Es müssen alle Felder ausgefüllt werden");
|
||||
}
|
||||
|
||||
if ($errorno == 2) {
|
||||
$smarty->assign('abschluss_error_text', "Sie haben die maximale Anzahl der Abschlussarbeiten pro Semester erreicht!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["abschluss_status"] = 'edit';
|
||||
$daid = $_GET['edit'];
|
||||
$_SESSION["abschluss_daid"] = $daid;
|
||||
} else {
|
||||
$_SESSION["abschluss_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["abschluss_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT name, kaid, pauschale, semester
|
||||
FROM dep_deputat_abschlussarbeiten
|
||||
WHERE daid = $daid");
|
||||
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('abschluss_value_name', "$row_edit[name]");
|
||||
$smarty->assign('abschluss_value_kaid', "$row_edit[kaid]");
|
||||
$smarty->assign('abschluss_value_pauschale', "$row_edit[pauschale]");
|
||||
$smarty->assign('abschluss_value_semester', "$row_edit[semester]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["abschluss_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# Alle Veranstaltungsarten
|
||||
$query = "SELECT kaid, bezeichnung
|
||||
FROM dep_kat_abschlussarbeiten";
|
||||
|
||||
$result = $db->query($query) or die("Cannot execute query");
|
||||
|
||||
while ($row = $result->fetch_array()) {
|
||||
$table_data1[] = $row;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
|
||||
# Gespeicherte Werte WS
|
||||
$query2 = "SELECT daid, name, kaid, semester, pauschale, lvs
|
||||
FROM dep_deputat_abschlussarbeiten
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND semester = 'WS'";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
|
||||
if ($row2['semester'] == 'SS') {
|
||||
$semester = "Sommersemester";
|
||||
}
|
||||
if ($row2['semester'] == 'WS') {
|
||||
$semester = "Wintersemester";
|
||||
}
|
||||
|
||||
$query_bez_sem = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_abschlussarbeiten
|
||||
WHERE kaid =$row2[kaid]");
|
||||
$row_bez_sem = $query_bez_sem->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$pauschale = number_format($row2['pauschale'], 2, ',', '.');
|
||||
|
||||
$row2['pauschale'] = $pauschale;
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['abschlussarbeit'] = $row_bez_sem['bezeichnung'];
|
||||
$row2['semesterbez'] = $semester;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
# Summe LVS im WS
|
||||
$query_sumlvs_ws = $db->query("SELECT sum(lvs) lvs
|
||||
FROM dep_deputat_abschlussarbeiten
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND semester = 'WS'");
|
||||
$row_sumlvs_ws = $query_sumlvs_ws->fetch_array();
|
||||
$summe_jahr_lvs_ws = number_format($row_sumlvs_ws['lvs'], 2, ',', '.');
|
||||
$smarty->assign('abschluss_value_ws_summe_lvs', $summe_jahr_lvs_ws);
|
||||
|
||||
# Gespeicherte Werte SS
|
||||
$query3 = "SELECT daid, name, kaid, semester, pauschale, lvs
|
||||
FROM dep_deputat_abschlussarbeiten
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND semester = 'SS'";
|
||||
|
||||
$result3 = $db->query($query3) or die("Cannot execute query");
|
||||
|
||||
while ($row3 = $result3->fetch_array()) {
|
||||
|
||||
if ($row3['semester'] == 'SS') {
|
||||
$semester = "Sommersemester";
|
||||
}
|
||||
if ($row3['semester'] == 'WS') {
|
||||
$semester = "Wintersemester";
|
||||
}
|
||||
|
||||
$query_bez_sem = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_abschlussarbeiten
|
||||
WHERE kaid =$row3[kaid]");
|
||||
$row_bez_sem = $query_bez_sem->fetch_array();
|
||||
|
||||
$lvs = number_format($row3['lvs'], 2, ',', '.');
|
||||
$pauschale = number_format($row3['pauschale'], 2, ',', '.');
|
||||
|
||||
$row3['pauschale'] = $pauschale;
|
||||
$row3['lvs'] = $lvs;
|
||||
$row3['abschlussarbeit'] = $row_bez_sem['bezeichnung'];
|
||||
$row3['semesterbez'] = $semester;
|
||||
$table_data3[] = $row3;
|
||||
}
|
||||
$smarty->assign('table_data3', $table_data3);
|
||||
# Summe LVS im SS
|
||||
$query_sumlvs_ss = $db->query("SELECT sum(lvs) lvs
|
||||
FROM dep_deputat_abschlussarbeiten
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND semester = 'SS'");
|
||||
$row_sumlvs_ss = $query_sumlvs_ss->fetch_array();
|
||||
$summe_jahr_lvs_ss = number_format($row_sumlvs_ss['lvs'], 2, ',', '.');
|
||||
$smarty->assign('abschluss_value_ss_summe_lvs', $summe_jahr_lvs_ss);
|
||||
|
||||
|
||||
|
||||
# Max Anzahl der Abschlussarbeiten pro Semester
|
||||
$query_sumabschl = $db->query("SELECT wert1
|
||||
FROM dep_parameter
|
||||
WHERE pid =5");
|
||||
$row_summabschl = $query_sumabschl->fetch_array();
|
||||
$summe_jahr = number_format($row_summabschl['wert1'], 0);
|
||||
$smarty->assign('abschluss_value_max_arbeiten', $summe_jahr);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if ($action == 'register') {
|
||||
|
||||
$name = $_POST['name'];
|
||||
$kaid = $_POST['kaid'];
|
||||
$pauschale = str_replace(',','.',str_replace('.','', $_POST['pauschale']));
|
||||
$semester = $_POST['semester'];
|
||||
if($kaid == 1){
|
||||
# Bei Bachelorarbeit gibt es keine Pauschale
|
||||
$pauschale = 0;
|
||||
}
|
||||
$_SESSION["abschluss_name"] = $name;
|
||||
$_SESSION["abschluss_kaid"] = $kaid;
|
||||
$_SESSION["abschluss_pauschale"] = $pauschale;
|
||||
$_SESSION["abschluss_semester"] = $semester;
|
||||
|
||||
if ($name == '' or $kaid == '' or $semester == '') {
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
#Limit pro Semester
|
||||
$query_anz = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_abschlussarbeiten
|
||||
WHERE semester ='$semester'
|
||||
AND imtuid=$uid
|
||||
AND jahr=$jahrgang");
|
||||
$row_anz = $query_anz->fetch_array();
|
||||
|
||||
# Max Anzahl der Abschlussarbeiten pro Semester
|
||||
$query_sumabschl = $db->query("SELECT wert1
|
||||
FROM dep_parameter
|
||||
WHERE pid =5");
|
||||
$row_summabschl = $query_sumabschl->fetch_array();
|
||||
|
||||
if ($row_anz['Anz'] >= $row_summabschl['wert1'] AND $_SESSION["abschluss_status"] != 'edit') {
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
# Faktor pro Arbeit ermitteln
|
||||
$query_fak = $db->query("SELECT faktor
|
||||
FROM dep_kat_abschlussarbeiten
|
||||
WHERE kaid =$kaid");
|
||||
$row_fak = $query_fak->fetch_array();
|
||||
$faktor = $row_fak['faktor'];
|
||||
|
||||
# Faktor wird mit den Wochen eines Semesters multipliziert 33Semesterwochen (2019) im Jahr. Dh. 16,5 pro Semester
|
||||
$query_multipl = $db->query("SELECT jahr, sw/2 semesterwoche
|
||||
FROM dep_kat_lvs
|
||||
WHERE jahr <=$jahrgang
|
||||
order by jahr desc
|
||||
limit 1");
|
||||
$row_multiplikator = $query_multipl->fetch_array();
|
||||
$lvs = $row_multiplikator['semesterwoche'] * $faktor + $pauschale;
|
||||
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["abschluss_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_abschlussarbeiten ( imtuid
|
||||
, jahr
|
||||
, kaid
|
||||
, name
|
||||
, semester
|
||||
, pauschale
|
||||
, lvs
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, '$kaid'
|
||||
, '$name'
|
||||
, '$semester'
|
||||
, '$pauschale'
|
||||
, '$lvs'
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["abschluss_status"] == 'edit') {
|
||||
$daid = $_SESSION["abschluss_daid"];
|
||||
$result = $db->query("UPDATE dep_deputat_abschlussarbeiten
|
||||
SET name = '$name'
|
||||
, kaid = '$kaid'
|
||||
, semester = '$semester'
|
||||
, pauschale = '$pauschale'
|
||||
, lvs = '$lvs'
|
||||
, modify_date = '$datum'
|
||||
WHERE daid = $daid
|
||||
");
|
||||
|
||||
unset($_SESSION['abschluss_daid']);
|
||||
}
|
||||
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'del') {
|
||||
$daid = $_GET['daid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_abschlussarbeiten WHERE daid = $daid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
124
accordeio-css.html
Executable file
124
accordeio-css.html
Executable file
@ -0,0 +1,124 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link type="text/css" rel="stylesheet" href="templates/modern/css/styles_refill.css">
|
||||
<script src='iframe-resizer-master/js/iframeResizer.min.js'></script>
|
||||
<meta charset="utf-8" />
|
||||
<title></title>
|
||||
<style>
|
||||
.wrap { max-width: 100%; margin: 1em auto; }
|
||||
/*--------Accordion-------*/
|
||||
|
||||
|
||||
/*--------Accordion-------*/
|
||||
|
||||
.accordion h6{
|
||||
color:#fff;
|
||||
text-align:center;
|
||||
font-weight: 300;
|
||||
}
|
||||
.accordion {
|
||||
width: 100%;
|
||||
margin: auto;
|
||||
height: 480px;
|
||||
}
|
||||
.accordion .panel {
|
||||
width: 98%;
|
||||
width: calc(100% - 20px);
|
||||
margin: 0 auto;
|
||||
margin-bottom: 5px;
|
||||
height: 0;
|
||||
overflow:hidden;
|
||||
color: rgba(0, 0, 0, 0);
|
||||
background-color: hsla(0,0%,100%,0);
|
||||
line-height: 28px;
|
||||
padding: 0 20px;
|
||||
box-sizing: border-box;
|
||||
transition: 0.5s;
|
||||
}
|
||||
|
||||
.accordion label {
|
||||
cursor: pointer;
|
||||
background-color: #277DA8;
|
||||
display: block;
|
||||
padding: 10px;
|
||||
width: 100%;
|
||||
color: #fff;
|
||||
font-weight: 400;
|
||||
box-sizing: border-box;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.accordion input{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.accordion input:checked+label {
|
||||
background-color: hsla(200,80%,50%,0.9);
|
||||
}
|
||||
|
||||
.accordion input:checked+label:before {
|
||||
transition: 0.5s;
|
||||
}
|
||||
|
||||
.accordion input:checked~.panel {
|
||||
height: auto;
|
||||
color: #333;
|
||||
font-size: 16px;
|
||||
padding: 20px;
|
||||
transition: 0.5s;
|
||||
}
|
||||
.accordion label:after { content: " + "; color: white; float: right; font-size: 1.6em}
|
||||
.accordion input:checked+label:after { content: " – "; color: white; float: right;font-size: 1.6em }
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="wrap">
|
||||
<div class="accordion">
|
||||
<div>
|
||||
<input type="radio" name="acc" id="$$78" checked>
|
||||
<label for="$$78">Ermäßigung/Freistellung Rektorat/Dekanat (§§ 7, 8 LVVO)</label>
|
||||
<div class="panel">
|
||||
<iframe src='erm_freist_rektorat_dekanat.php' width='100%' frameborder='0' ></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<input type="radio" name="acc" id="§11">
|
||||
<label for="§11">Deputatsermäßigung aufgrund einer Funktion/Beauftragung (§ 11 LVVO)</label>
|
||||
<div class="panel">
|
||||
<iframe src='erm_freist_funktion.php' width='100%' frameborder='0' ></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<input type="radio" name="acc" id="Fruitcake">
|
||||
<label for="Fruitcake">Fruitcake?</label>
|
||||
<div class="panel">
|
||||
<p>Fruitcake marshmallow sugar plum soufflé biscuit.</p>
|
||||
<p>Sesame snaps pie lemon drops.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
"use strict";
|
||||
var acco = document.querySelectorAll (".accordion>div");
|
||||
var maxHeight = 0;
|
||||
var labelTotal = 0;
|
||||
for (var i=0; i<acco.length; i++) {
|
||||
acco[i].querySelector("input").checked = true;
|
||||
if (acco[i].clientHeight > maxHeight) {
|
||||
maxHeight = acco[i].clientHeight;
|
||||
}
|
||||
labelTotal = labelTotal + acco[i].querySelector("label").clientHeight;
|
||||
|
||||
}
|
||||
acco[0].querySelector("input").checked = true;
|
||||
document.querySelector(".wrap").style.height = (maxHeight + labelTotal) + "px";
|
||||
})()
|
||||
</script>
|
||||
<script>iFrameResize({log:true})</script>
|
||||
</body>
|
||||
</html>
|
4
admin_frame.php
Executable file
4
admin_frame.php
Executable file
@ -0,0 +1,4 @@
|
||||
<?php
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
#$template = "standard";
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
$smarty = new Smarty();
require_once "language/german.inc.php";
|
||||
$smarty->display("$template/$templatename");
?>
|
BIN
ajaxtabs/Thumbs.db
Executable file
BIN
ajaxtabs/Thumbs.db
Executable file
Binary file not shown.
224
ajaxtabs/ajaxtabs.js
Executable file
224
ajaxtabs/ajaxtabs.js
Executable file
@ -0,0 +1,224 @@
|
||||
//** Ajax Tabs Content script v2.0- © Dynamic Drive DHTML code library (https://www.dynamicdrive.com)
|
||||
//** Updated Oct 21st, 07 to version 2.0. Contains numerous improvements
|
||||
//** Updated Feb 18th, 08 to version 2.1: Adds a public "tabinstance.cycleit(dir)" method to cycle forward or backward between tabs dynamically. Only .js file changed from v2.0.
|
||||
//** Updated April 8th, 08 to version 2.2:
|
||||
// -Adds support for expanding a tab using a URL parameter (ie: https://mysite.com/tabcontent.htm?tabinterfaceid=0)
|
||||
// -Modified Ajax routine so testing the script out locally in IE7 now works
|
||||
|
||||
var ddajaxtabssettings={}
|
||||
ddajaxtabssettings.bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
|
||||
ddajaxtabssettings.loadstatustext="<img src='ajaxtabs/loading.gif' /> Requesting content..."
|
||||
|
||||
|
||||
////NO NEED TO EDIT BELOW////////////////////////
|
||||
|
||||
function ddajaxtabs(tabinterfaceid, contentdivid){
|
||||
this.tabinterfaceid=tabinterfaceid //ID of Tab Menu main container
|
||||
this.tabs=document.getElementById(tabinterfaceid).getElementsByTagName("a") //Get all tab links within container
|
||||
this.enabletabpersistence=true
|
||||
this.hottabspositions=[] //Array to store position of tabs that have a "rel" attr defined, relative to all tab links, within container
|
||||
this.currentTabIndex=0 //Index of currently selected hot tab (tab with sub content) within hottabspositions[] array
|
||||
this.contentdivid=contentdivid
|
||||
this.defaultHTML=""
|
||||
this.defaultIframe='<iframe src="about:blank" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0" class="tabcontentiframe" style="width:100%; height:100%; min-height: 100px"></iframe>'
|
||||
this.defaultIframe=this.defaultIframe.replace(/<iframe/i, '<iframe name="'+"_ddajaxtabsiframe-"+contentdivid+'" ')
|
||||
this.revcontentids=[] //Array to store ids of arbitrary contents to expand/contact as well ("rev" attr values)
|
||||
this.selectedClassTarget="link" //keyword to indicate which target element to assign "selected" CSS class ("linkparent" or "link")
|
||||
}
|
||||
|
||||
ddajaxtabs.connect=function(pageurl, tabinstance){
|
||||
var page_request = false
|
||||
var bustcacheparameter=""
|
||||
if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
|
||||
try {
|
||||
page_request = new ActiveXObject("Msxml2.XMLHTTP")
|
||||
}
|
||||
catch (e){
|
||||
try{
|
||||
page_request = new ActiveXObject("Microsoft.XMLHTTP")
|
||||
}
|
||||
catch (e){}
|
||||
}
|
||||
}
|
||||
else if (window.XMLHttpRequest) // if Mozilla, Safari etc
|
||||
page_request = new XMLHttpRequest()
|
||||
else
|
||||
return false
|
||||
var ajaxfriendlyurl=pageurl.replace(/^https:\/\/[^\/]+\//i, "https://"+window.location.hostname+"/")
|
||||
page_request.onreadystatechange=function(){ddajaxtabs.loadpage(page_request, pageurl, tabinstance)}
|
||||
if (ddajaxtabssettings.bustcachevar) //if bust caching of external page
|
||||
bustcacheparameter=(ajaxfriendlyurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
|
||||
page_request.open('GET', ajaxfriendlyurl+bustcacheparameter, true)
|
||||
page_request.send(null)
|
||||
}
|
||||
|
||||
ddajaxtabs.loadpage=function(page_request, pageurl, tabinstance){
|
||||
var divId=tabinstance.contentdivid
|
||||
document.getElementById(divId).innerHTML=ddajaxtabssettings.loadstatustext //Display "fetching page message"
|
||||
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
|
||||
document.getElementById(divId).innerHTML=page_request.responseText
|
||||
ddajaxtabs.ajaxpageloadaction(pageurl, tabinstance)
|
||||
}
|
||||
}
|
||||
|
||||
ddajaxtabs.ajaxpageloadaction=function(pageurl, tabinstance){
|
||||
tabinstance.onajaxpageload(pageurl) //call user customized onajaxpageload() function when an ajax page is fetched/ loaded
|
||||
}
|
||||
|
||||
ddajaxtabs.getCookie=function(Name){
|
||||
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
|
||||
if (document.cookie.match(re)) //if cookie found
|
||||
return document.cookie.match(re)[0].split("=")[1] //return its value
|
||||
return ""
|
||||
}
|
||||
|
||||
ddajaxtabs.setCookie=function(name, value){
|
||||
document.cookie = name+"="+value+";path=/" //cookie value is domain wide (path=/)
|
||||
}
|
||||
|
||||
ddajaxtabs.prototype={
|
||||
|
||||
expandit:function(tabid_or_position){ //PUBLIC function to select a tab either by its ID or position(int) within its peers
|
||||
this.cancelautorun() //stop auto cycling of tabs (if running)
|
||||
var tabref=""
|
||||
try{
|
||||
if (typeof tabid_or_position=="string" && document.getElementById(tabid_or_position).getAttribute("rel")) //if specified tab contains "rel" attr
|
||||
tabref=document.getElementById(tabid_or_position)
|
||||
else if (parseInt(tabid_or_position)!=NaN && this.tabs[tabid_or_position].getAttribute("rel")) //if specified tab contains "rel" attr
|
||||
tabref=this.tabs[tabid_or_position]
|
||||
}
|
||||
catch(err){alert("Invalid Tab ID or position entered!")}
|
||||
if (tabref!="") //if a valid tab is found based on function parameter
|
||||
this.expandtab(tabref) //expand this tab
|
||||
},
|
||||
|
||||
cycleit:function(dir, autorun){ //PUBLIC function to move foward or backwards through each hot tab (tabinstance.cycleit('foward/back') )
|
||||
if (dir=="next"){
|
||||
var currentTabIndex=(this.currentTabIndex<this.hottabspositions.length-1)? this.currentTabIndex+1 : 0
|
||||
}
|
||||
else if (dir=="prev"){
|
||||
var currentTabIndex=(this.currentTabIndex>0)? this.currentTabIndex-1 : this.hottabspositions.length-1
|
||||
}
|
||||
if (typeof autorun=="undefined") //if cycleit() is being called by user, versus autorun() function
|
||||
this.cancelautorun() //stop auto cycling of tabs (if running)
|
||||
this.expandtab(this.tabs[this.hottabspositions[currentTabIndex]])
|
||||
},
|
||||
|
||||
setpersist:function(bool){ //PUBLIC function to toggle persistence feature
|
||||
this.enabletabpersistence=bool
|
||||
},
|
||||
|
||||
loadajaxpage:function(pageurl){ //PUBLIC function to fetch a page via Ajax and display it within the Tab Content instance's container
|
||||
ddajaxtabs.connect(pageurl, this)
|
||||
},
|
||||
|
||||
loadiframepage:function(pageurl){ //PUBLIC function to fetch a page and load it into the IFRAME of the Tab Content instance's container
|
||||
this.iframedisplay(pageurl, this.contentdivid)
|
||||
},
|
||||
|
||||
setselectedClassTarget:function(objstr){ //PUBLIC function to set which target element to assign "selected" CSS class ("linkparent" or "link")
|
||||
this.selectedClassTarget=objstr || "link"
|
||||
},
|
||||
|
||||
getselectedClassTarget:function(tabref){ //Returns target element to assign "selected" CSS class to
|
||||
return (this.selectedClassTarget==("linkparent".toLowerCase()))? tabref.parentNode : tabref
|
||||
},
|
||||
|
||||
urlparamselect:function(tabinterfaceid){
|
||||
var result=window.location.search.match(new RegExp(tabinterfaceid+"=(\\d+)", "i")) //check for "?tabinterfaceid=2" in URL
|
||||
return (result==null)? null : parseInt(RegExp.$1) //returns null or index, where index (int) is the selected tab's index
|
||||
},
|
||||
|
||||
onajaxpageload:function(pageurl){ //PUBLIC Event handler that can invoke custom code whenever an Ajax page has been fetched and displayed
|
||||
//do nothing by default
|
||||
},
|
||||
|
||||
expandtab:function(tabref){
|
||||
var relattrvalue=tabref.getAttribute("rel")
|
||||
//Get "rev" attr as a string of IDs in the format ",john,george,trey,etc," to easy searching through
|
||||
var associatedrevids=(tabref.getAttribute("rev"))? ","+tabref.getAttribute("rev").replace(/\s+/, "")+"," : ""
|
||||
if (relattrvalue=="#default")
|
||||
document.getElementById(this.contentdivid).innerHTML=this.defaultHTML
|
||||
else if (relattrvalue=="#iframe")
|
||||
this.iframedisplay(tabref.getAttribute("href"), this.contentdivid)
|
||||
else
|
||||
ddajaxtabs.connect(tabref.getAttribute("href"), this)
|
||||
this.expandrevcontent(associatedrevids)
|
||||
for (var i=0; i<this.tabs.length; i++){ //Loop through all tabs, and assign only the selected tab the CSS class "selected"
|
||||
this.getselectedClassTarget(this.tabs[i]).className=(this.tabs[i].getAttribute("href")==tabref.getAttribute("href"))? "selected" : ""
|
||||
}
|
||||
if (this.enabletabpersistence) //if persistence enabled, save selected tab position(int) relative to its peers
|
||||
ddajaxtabs.setCookie(this.tabinterfaceid, tabref.tabposition)
|
||||
this.setcurrenttabindex(tabref.tabposition) //remember position of selected tab within hottabspositions[] array
|
||||
},
|
||||
|
||||
iframedisplay:function(pageurl, contentdivid){
|
||||
if (typeof window.frames["_ddajaxtabsiframe-"+contentdivid]!="undefined"){
|
||||
try{delete window.frames["_ddajaxtabsiframe-"+contentdivid]} //delete iframe within Tab content container if it exists (due to bug in Firefox)
|
||||
catch(err){}
|
||||
}
|
||||
document.getElementById(contentdivid).innerHTML=this.defaultIframe
|
||||
window.frames["_ddajaxtabsiframe-"+contentdivid].location.replace(pageurl) //load desired page into iframe
|
||||
},
|
||||
|
||||
|
||||
expandrevcontent:function(associatedrevids){
|
||||
var allrevids=this.revcontentids
|
||||
for (var i=0; i<allrevids.length; i++){ //Loop through rev attributes for all tabs in this tab interface
|
||||
//if any values stored within associatedrevids matches one within allrevids, expand that DIV, otherwise, contract it
|
||||
document.getElementById(allrevids[i]).style.display=(associatedrevids.indexOf(","+allrevids[i]+",")!=-1)? "block" : "none"
|
||||
}
|
||||
},
|
||||
|
||||
setcurrenttabindex:function(tabposition){ //store current position of tab (within hottabspositions[] array)
|
||||
for (var i=0; i<this.hottabspositions.length; i++){
|
||||
if (tabposition==this.hottabspositions[i]){
|
||||
this.currentTabIndex=i
|
||||
break
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
autorun:function(){ //function to auto cycle through and select tabs based on a set interval
|
||||
this.cycleit('next', true)
|
||||
},
|
||||
|
||||
cancelautorun:function(){
|
||||
if (typeof this.autoruntimer!="undefined")
|
||||
clearInterval(this.autoruntimer)
|
||||
},
|
||||
|
||||
init:function(automodeperiod){
|
||||
var persistedtab=ddajaxtabs.getCookie(this.tabinterfaceid) //get position of persisted tab (applicable if persistence is enabled)
|
||||
var selectedtab=-1 //Currently selected tab index (-1 meaning none)
|
||||
var selectedtabfromurl=this.urlparamselect(this.tabinterfaceid) //returns null or index from: tabcontent.htm?tabinterfaceid=index
|
||||
this.automodeperiod=automodeperiod || 0
|
||||
this.defaultHTML=document.getElementById(this.contentdivid).innerHTML
|
||||
for (var i=0; i<this.tabs.length; i++){
|
||||
this.tabs[i].tabposition=i //remember position of tab relative to its peers
|
||||
if (this.tabs[i].getAttribute("rel")){
|
||||
var tabinstance=this
|
||||
this.hottabspositions[this.hottabspositions.length]=i //store position of "hot" tab ("rel" attr defined) relative to its peers
|
||||
this.tabs[i].onclick=function(){
|
||||
tabinstance.expandtab(this)
|
||||
tabinstance.cancelautorun() //stop auto cycling of tabs (if running)
|
||||
return false
|
||||
}
|
||||
if (this.tabs[i].getAttribute("rev")){ //if "rev" attr defined, store each value within "rev" as an array element
|
||||
this.revcontentids=this.revcontentids.concat(this.tabs[i].getAttribute("rev").split(/\s*,\s*/))
|
||||
}
|
||||
if (selectedtabfromurl==i || this.enabletabpersistence && selectedtab==-1 && parseInt(persistedtab)==i || !this.enabletabpersistence && selectedtab==-1 && this.getselectedClassTarget(this.tabs[i]).className=="selected"){
|
||||
selectedtab=i //Selected tab index, if found
|
||||
}
|
||||
}
|
||||
} //END for loop
|
||||
if (selectedtab!=-1) //if a valid default selected tab index is found
|
||||
this.expandtab(this.tabs[selectedtab]) //expand selected tab (either from URL parameter, persistent feature, or class="selected" class)
|
||||
else //if no valid default selected index found
|
||||
this.expandtab(this.tabs[this.hottabspositions[0]]) //Just select first tab that contains a "rel" attr
|
||||
if (parseInt(this.automodeperiod)>500 && this.hottabspositions.length>1){
|
||||
this.autoruntimer=setInterval(function(){tabinstance.autorun()}, this.automodeperiod)
|
||||
}
|
||||
} //END int() function
|
||||
|
||||
} //END Prototype assignment
|
BIN
ajaxtabs/loading.gif
Executable file
BIN
ajaxtabs/loading.gif
Executable file
Binary file not shown.
After Width: | Height: | Size: 8.0 KiB |
76
btn_mutterschutz.php
Executable file
76
btn_mutterschutz.php
Executable file
@ -0,0 +1,76 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
require_once("config.inc.php");
|
||||
|
||||
|
||||
$db = dbconnect();
|
||||
//mitgegebene Parameter einlesen:
|
||||
if (isset($_GET['status_param'])) { //welchen Status
|
||||
$status_param = $_GET['status_param'];
|
||||
}
|
||||
|
||||
if (isset($_GET['uid'])) { //welcher Datensatz
|
||||
$uid = $_GET['uid'];
|
||||
}
|
||||
|
||||
//Anzeige des Buttons entsprechend grün oder rot
|
||||
if ($status_param == "Y") {
|
||||
$img_src = "./templates/modern/images/hakengruen.png";
|
||||
$param_opp = "N"; //Gegenteil für Linkaufbau
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
$result_muschu = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE art LIKE '%Mutterschutz / Elternzeit%'
|
||||
AND jahr = '$jahrgang'
|
||||
AND imtuid = '$uid'
|
||||
");
|
||||
$row_muschu = $result_muschu->fetch_array();
|
||||
if($row_muschu['Anz'] == 0){
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Mutterschutz / Elternzeit'
|
||||
, 5
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
} elseif ($status_param == "N") {
|
||||
$img_src = "./templates/modern/images/hakenrot.png";
|
||||
## Nur löschbar, wenn LVS=0 ist, Also wenn der Admin nicht schon was eingetragen hat
|
||||
$result_muschu = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE art LIKE '%Mutterschutz / Elternzeit%'
|
||||
AND jahr = '$jahrgang'
|
||||
AND imtuid = '$uid'
|
||||
AND lvs > 0
|
||||
");
|
||||
$row_muschu = $result_muschu->fetch_array();
|
||||
if($row_muschu['Anz'] == 0){
|
||||
$param_opp = "Y";
|
||||
|
||||
$db->query("DELETE FROM dep_deputat_ermaessigung
|
||||
WHERE jahr='$jahrgang'
|
||||
AND imtuid = '$uid'
|
||||
AND art like '%Mutterschutz / Elternzeit%'
|
||||
AND lvs=0
|
||||
");
|
||||
}else{
|
||||
$param_opp = "N";
|
||||
}
|
||||
} else {
|
||||
echo "F";
|
||||
exit;
|
||||
}
|
||||
|
||||
echo "<a href=btn_mutterschutz.php?uid=".$uid."&status_param=".$param_opp."><img border=0 src=".$img_src." height=20 title=\"".$param_title."\">";
|
||||
|
||||
echo "</body></html>";
|
||||
?>
|
70
ch_anrede.php
Executable file
70
ch_anrede.php
Executable file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
require_once("config.inc.php");
|
||||
$db = dbconnect();
|
||||
session_start();
|
||||
//mitgegebene Parameter einlesen:
|
||||
|
||||
$action = $_GET['action'];
|
||||
|
||||
|
||||
if($action == ''){
|
||||
|
||||
if (isset($_GET['imtuid'])) { //welcher Datensatz
|
||||
$imtuid = $_GET['imtuid'];
|
||||
# $_SESSION["anr_imtuid_$imtuid"] = $imtuid;
|
||||
}
|
||||
|
||||
#if (isset($_SESSION["anr_imtuid"])){
|
||||
# $imtuid = $_SESSION["anr_imtuid"];
|
||||
#}
|
||||
|
||||
|
||||
//Anzeige des Buttons entsprechend grün oder rot
|
||||
echo "<form action=\"?action=anrede_save\" method='post' name='erfassen'>";
|
||||
|
||||
$query_anr_vorh = $db->query("SELECT arid
|
||||
FROM dep_user
|
||||
WHERE imtuid='$imtuid'");
|
||||
$row_anr_vorh = $query_anr_vorh->fetch_array();
|
||||
$arid = $row_anr_vorh['arid'];
|
||||
|
||||
$query_anr = "SELECT arid, bezeichnung
|
||||
FROM dep_kat_anrede
|
||||
ORDER BY 2";
|
||||
|
||||
$result_anr = $db->query ($query_anr)
|
||||
or die ("Cannot execute query_anr");
|
||||
|
||||
echo"<input type='hidden' name='user' value='$imtuid'>";
|
||||
|
||||
echo "<select name=\"anrede\" onchange=\"this.form.submit()\">";
|
||||
echo "<option value=''>Bitte Anrede wählen</option>";
|
||||
while ($row_anr = $result_anr->fetch_array()){
|
||||
echo "<option value='$row_anr[arid]' "; if($arid == $row_anr['arid']){echo "selected";} echo">$row_anr[bezeichnung] </option>";
|
||||
}
|
||||
echo"</select>
|
||||
</form>
|
||||
";
|
||||
}
|
||||
if($action == 'anrede_save'){
|
||||
$anrede = $_POST['anrede'];
|
||||
$user = $_POST['user'];
|
||||
#$imtuid = $_SESSION["anr_imtuid"];
|
||||
|
||||
if($user != '' AND $anrede != ''){
|
||||
$sql1 = $db->query("UPDATE dep_user
|
||||
SET arid='$anrede'
|
||||
WHERE imtuid='$user'
|
||||
");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?imtuid=$user\">";
|
||||
}else{
|
||||
echo "Unzulässige Eingabe";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"1; URL=".$_SERVER['PHP_SELF']."?imtuid=$user\">";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
63
ch_fakultaet.php
Executable file
63
ch_fakultaet.php
Executable file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
require_once("config.inc.php");
|
||||
$db = dbconnect();
|
||||
session_start();
|
||||
//mitgegebene Parameter einlesen:
|
||||
|
||||
$action = $_GET['action'];
|
||||
|
||||
|
||||
if($action == ''){
|
||||
|
||||
if (isset($_GET['imtuid'])) { //welcher Datensatz
|
||||
$imtuid = $_GET['imtuid'];
|
||||
# $_SESSION["anr_imtuid_$imtuid"] = $imtuid;
|
||||
}
|
||||
|
||||
#if (isset($_SESSION["anr_imtuid"])){
|
||||
# $imtuid = $_SESSION["anr_imtuid"];
|
||||
#}
|
||||
|
||||
|
||||
//Anzeige des Buttons entsprechend grün oder rot
|
||||
echo "<form action=\"?action=fak_save\" method='post' name='erfassen'>";
|
||||
|
||||
$query_fak_vorh = $db->query("SELECT fakultaet
|
||||
FROM dep_user
|
||||
WHERE imtuid='$imtuid'");
|
||||
$row_fak_vorh = $query_fak_vorh->fetch_array();
|
||||
$fakultaet = $row_fak_vorh['fakultaet'];
|
||||
|
||||
|
||||
echo"<input type='hidden' name='user' value='$imtuid'>";
|
||||
|
||||
echo "<select name=\"fakultaet\" onchange=\"this.form.submit()\">";
|
||||
echo "<option value=''>Bitte Fakultät wählen</option>";
|
||||
echo "<option value='1' ";if($fakultaet == 1){echo "selected"; } echo">Fakultät 1</option>";
|
||||
echo "<option value='2' ";if($fakultaet == 2){echo "selected"; } echo">Fakultät 2</option>";
|
||||
echo"</select>
|
||||
</form>
|
||||
";
|
||||
}
|
||||
if($action == 'fak_save'){
|
||||
$fakultaet = $_POST['fakultaet'];
|
||||
$user = $_POST['user'];
|
||||
#$imtuid = $_SESSION["anr_imtuid"];
|
||||
|
||||
if($user != '' AND $fakultaet != ''){
|
||||
$sql1 = $db->query("UPDATE dep_user
|
||||
SET fakultaet='$fakultaet'
|
||||
WHERE imtuid='$user'
|
||||
");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?imtuid=$user\">";
|
||||
}else{
|
||||
echo "Unzulässige Eingabe";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"1; URL=".$_SERVER['PHP_SELF']."?imtuid=$user\">";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
72
class_idee.php
Executable file
72
class_idee.php
Executable file
@ -0,0 +1,72 @@
|
||||
<?php
|
||||
#error_reporting(E_ALL | E_STRICT);
|
||||
header("content-type: text/html; charset=utf-8");
|
||||
|
||||
#echo "Domain: ".$_SESSION["global_domain"];
|
||||
|
||||
$_SESSION["global_domain"] = "hsnet";
|
||||
if($_SESSION["global_domain"] == "hsnet"){
|
||||
require_once("adLDAP/adLDAP_hsnet.php");
|
||||
}
|
||||
|
||||
if($_SESSION["global_domain"] == "studnet"){
|
||||
require_once("adLDAP/adLDAP_studnet.php");
|
||||
}
|
||||
|
||||
class idee extends adLDAP {
|
||||
|
||||
/**
|
||||
* Converts a username (samAccountName) to a objectsid BY ALI
|
||||
*
|
||||
* @param string $username The username to query
|
||||
* @return string
|
||||
*/
|
||||
public function username2osid($username) {
|
||||
if (!$this->_bind){ return (false); }
|
||||
if ($username === null){ return ("Missing compulsory field [username]"); }
|
||||
|
||||
$filter = "samaccountname=" . $username;
|
||||
$fields = array("objectSid");
|
||||
$sr = @ldap_search($this->_conn, $this->_base_dn, $filter, $fields);
|
||||
if (ldap_count_entries($this->_conn, $sr) > 0) {
|
||||
$entry = @ldap_first_entry($this->_conn, $sr);
|
||||
$osid = @ldap_get_values_len($this->_conn, $entry, 'objectSid');
|
||||
$strOSID = $this->binary2text($osid[0]);
|
||||
return ($strOSID);
|
||||
}
|
||||
else {
|
||||
return (false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function username2vorname($username){
|
||||
$userinfo = $idee->user_info($username2, array("givenname"));
|
||||
$userinfo = trim($userinfo[0]["givenname"][0]);
|
||||
return $userinfo;
|
||||
}
|
||||
|
||||
public function username2nachname($username){
|
||||
$userinfo = $idee->user_info($username2, array("sn"));
|
||||
$userinfo = trim($userinfo[0]["sn"][0]);
|
||||
return $userinfo;
|
||||
}
|
||||
|
||||
public function username2mail($username){
|
||||
$userinfo = $idee->user_info($username2, array("mail"));
|
||||
$userinfo = trim($userinfo[0]["mail"][0]);
|
||||
return $userinfo;
|
||||
}
|
||||
|
||||
public function username2department($username){
|
||||
$userinfo = $this->user_info($username, array("distinguishedname"));
|
||||
$distinguishedname = $userinfo[0]["distinguishedname"][0];
|
||||
$group = preg_split('/OU=/', $distinguishedname);
|
||||
$group = trim(str_replace(',', '', $group[1]));
|
||||
return $group;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
19
classes/TestProjektSmarty.class.php
Executable file
19
classes/TestProjektSmarty.class.php
Executable file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
date_default_timezone_set("Europe/Berlin");
|
||||
|
||||
set_include_path( get_include_path().PATH_SEPARATOR.'./lib');
|
||||
require_once('lib/smarty/libs/Smarty.class.php');
|
||||
if(!defined('REQUIRED_SMARTY_DIR')) define('REQUIRED_SMARTY_DIR','./');
|
||||
|
||||
class SmartyAdmin extends Smarty{
|
||||
|
||||
function __construct(){
|
||||
$this->Smarty();
|
||||
|
||||
$this->template_dir = REQUIRED_SMARTY_DIR.'templates';
|
||||
$this->compile_dir = REQUIRED_SMARTY_DIR.'templates_c';
|
||||
$this->config_dir = REQUIRED_SMARTY_DIR.'config';
|
||||
$this->cache_dir = REQUIRED_SMARTY_DIR.'cache';
|
||||
}
|
||||
}
|
||||
?>
|
18
classes/TestProjektSmarty.class_subdir.php
Executable file
18
classes/TestProjektSmarty.class_subdir.php
Executable file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
date_default_timezone_set("Europe/Berlin");
|
||||
|
||||
set_include_path( get_include_path().PATH_SEPARATOR.'./lib');
|
||||
require_once('../lib/smarty/libs/Smarty.class.php');
|
||||
if(!defined('REQUIRED_SMARTY_DIR')) define('REQUIRED_SMARTY_DIR','./');
|
||||
|
||||
class SmartyAdmin extends Smarty{
|
||||
|
||||
public function __construct(){
|
||||
parent::__construct(); // this must be called
|
||||
$this->template_dir = REQUIRED_SMARTY_DIR.'../templates';
|
||||
$this->compile_dir = REQUIRED_SMARTY_DIR.'../templates_c';
|
||||
$this->config_dir = REQUIRED_SMARTY_DIR.'../config';
|
||||
$this->cache_dir = REQUIRED_SMARTY_DIR.'../cache';
|
||||
}
|
||||
}
|
||||
?>
|
52
config.inc.php
Executable file
52
config.inc.php
Executable file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
session_start();
|
||||
require_once("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
header('Content-Type: text/html; charset=utf-8');
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------
|
||||
# Ermittlung der Globalen Einstellungen
|
||||
$db = dbconnect();
|
||||
$result_ansprech_global = $db->query("SELECT wert1, wert2 FROM dep_parameter WHERE pid='1'");
|
||||
$row_ansprech_global = $result_ansprech_global->fetch_array();
|
||||
|
||||
$global_service_admin = "$row_ansprech_global[wert1]";
|
||||
$global_service_mail = "$row_ansprech_global[wert2]";
|
||||
|
||||
$query_ldapuser = $db->query("SELECT wert1, wert2 FROM dep_parameter WHERE pid='2'");
|
||||
$row_ldapuser = $query_ldapuser->fetch_array();
|
||||
|
||||
$global_ldap_user = "$row_ldapuser[wert1]";
|
||||
$global_ldap_pwd = "$row_ldapuser[wert2]";
|
||||
|
||||
$query_ldapserver = $db->query("SELECT wert1, wert2 FROM dep_parameter WHERE pid='3'");
|
||||
$row_ldapserver = $query_ldapserver->fetch_array();
|
||||
$global_ldap_serverhsnet = "$row_ldapserver[wert1]";
|
||||
$global_ldap_porthsnet = "$row_ldapserver[wert2]";
|
||||
|
||||
$result_ldap_global = $db->query("SELECT wert1 FROM dep_parameter WHERE pid='4'");
|
||||
$row_ldap_global = $result_ldap_global->fetch_array();
|
||||
$global_ldap_art = "$row_ldap_global[wert1]";
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
$username = $_SESSION["global_username"];
|
||||
$uid = $_SESSION["global_uid"];
|
||||
|
||||
$login_dateiname = basename($_SERVER['PHP_SELF']);
|
||||
|
||||
if($uid == "" AND $login_dateiname !='index.php'){
|
||||
echo"<script type='text/javascript'>window.top.location.href = \"index.php\";</script>";
|
||||
exit;
|
||||
}
|
||||
|
||||
# echo "<hr>";
|
||||
# echo nl2br(print_r($_SESSION,true));
|
||||
# echo "<hr>";
|
||||
|
||||
|
||||
$template = "modern";
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------
|
||||
?>
|
4
config/.htaccess
Executable file
4
config/.htaccess
Executable file
@ -0,0 +1,4 @@
|
||||
AuthName "pwd"
|
||||
AuthType Basic
|
||||
AuthUserFile /var/www/web712/html/config/.htpasswd
|
||||
require valid-user
|
1
config/.htpasswd
Executable file
1
config/.htpasswd
Executable file
@ -0,0 +1 @@
|
||||
admin:$1$mJMmTGPR$/db9TUBE9VIYJMUcNezBk0
|
13
config/datenbankanbindung.php
Executable file
13
config/datenbankanbindung.php
Executable file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
//--Funktion-Datenbankverbindung--------------------------------------------------------------------
|
||||
|
||||
function dbconnect() //--Prozedur - kein return-Wert
|
||||
{
|
||||
|
||||
$db = @new mysqli( 'localhost', 'schwaral', 'schnatz', 'deputat' );
|
||||
$db->query("SET NAMES 'utf8'");
|
||||
return $db;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
?>
|
204
datepicker/browserSniffer.js
Executable file
204
datepicker/browserSniffer.js
Executable file
@ -0,0 +1,204 @@
|
||||
//<!--
|
||||
// Ultimate client-side JavaScript client sniff. Version 3.03
|
||||
// (C) Netscape Communications 1999-2001. Permission granted to reuse and distribute.
|
||||
// Revised 17 May 99 to add is_nav5up and is_ie5up (see below).
|
||||
// Revised 20 Dec 00 to add is_gecko and change is_nav5up to is_nav6up
|
||||
// also added support for IE5.5 Opera4&5 HotJava3 AOLTV
|
||||
// Revised 22 Feb 01 to correct Javascript Detection for IE 5.x, Opera 4,
|
||||
// correct Opera 5 detection
|
||||
// add support for winME and win2k
|
||||
// synch with browser-type-oo.js
|
||||
// Revised 26 Mar 01 to correct Opera detection
|
||||
// Revised 02 Oct 01 to add IE6 detection
|
||||
|
||||
// Everything you always wanted to know about your JavaScript client
|
||||
// but were afraid to ask. Creates "is_" variables indicating:
|
||||
// (1) browser vendor:
|
||||
// is_nav, is_ie, is_opera, is_hotjava, is_webtv, is_TVNavigator, is_AOLTV
|
||||
// (2) browser version number:
|
||||
// is_major (integer indicating major version number: 2, 3, 4 ...)
|
||||
// is_minor (float indicating full version number: 2.02, 3.01, 4.04 ...)
|
||||
// (3) browser vendor AND major version number
|
||||
// is_nav2, is_nav3, is_nav4, is_nav4up, is_nav6, is_nav6up, is_gecko, is_ie3,
|
||||
// is_ie4, is_ie4up, is_ie5, is_ie5up, is_ie5_5, is_ie5_5up, is_ie6, is_ie6up, is_hotjava3, is_hotjava3up,
|
||||
// is_opera2, is_opera3, is_opera4, is_opera5, is_opera5up
|
||||
// (4) JavaScript version number:
|
||||
// is_js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
|
||||
// (5) OS platform and version:
|
||||
// is_win, is_win16, is_win32, is_win31, is_win95, is_winnt, is_win98, is_winme, is_win2k
|
||||
// is_os2
|
||||
// is_mac, is_mac68k, is_macppc
|
||||
// is_unix
|
||||
// is_sun, is_sun4, is_sun5, is_suni86
|
||||
// is_irix, is_irix5, is_irix6
|
||||
// is_hpux, is_hpux9, is_hpux10
|
||||
// is_aix, is_aix1, is_aix2, is_aix3, is_aix4
|
||||
// is_linux, is_sco, is_unixware, is_mpras, is_reliant
|
||||
// is_dec, is_sinix, is_freebsd, is_bsd
|
||||
// is_vms
|
||||
//
|
||||
// See https://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and
|
||||
// https://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html
|
||||
// for detailed lists of userAgent strings.
|
||||
//
|
||||
// Note: you don't want your Nav4 or IE4 code to "turn off" or
|
||||
// stop working when new versions of browsers are released, so
|
||||
// in conditional code forks, use is_ie5up ("IE 5.0 or greater")
|
||||
// is_opera5up ("Opera 5.0 or greater") instead of is_ie5 or is_opera5
|
||||
// to check version in code which you want to work on future
|
||||
// versions.
|
||||
|
||||
// convert all characters to lowercase to simplify testing
|
||||
var agt=navigator.userAgent.toLowerCase();
|
||||
|
||||
// *** BROWSER VERSION ***
|
||||
// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
|
||||
var is_major = parseInt(navigator.appVersion);
|
||||
var is_minor = parseFloat(navigator.appVersion);
|
||||
|
||||
// Note: Opera and WebTV spoof Navigator. We do strict client detection.
|
||||
// If you want to allow spoofing, take out the tests for opera and webtv.
|
||||
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
|
||||
&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
|
||||
&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
|
||||
var is_nav2 = (is_nav && (is_major == 2));
|
||||
var is_nav3 = (is_nav && (is_major == 3));
|
||||
var is_nav4 = (is_nav && (is_major == 4));
|
||||
var is_nav4up = (is_nav && (is_major >= 4));
|
||||
var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) ||
|
||||
(agt.indexOf("; nav") != -1)) );
|
||||
var is_nav6 = (is_nav && (is_major == 5));
|
||||
var is_nav6up = (is_nav && (is_major >= 5));
|
||||
var is_gecko = (agt.indexOf('gecko') != -1);
|
||||
|
||||
|
||||
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
|
||||
var is_ie3 = (is_ie && (is_major < 4));
|
||||
var is_ie4 = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
|
||||
var is_ie4up = (is_ie && (is_major >= 4));
|
||||
var is_ie5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
|
||||
var is_ie5_5 = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
|
||||
var is_ie5up = (is_ie && !is_ie3 && !is_ie4);
|
||||
var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
|
||||
var is_ie6 = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
|
||||
var is_ie6up = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
|
||||
|
||||
// KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
|
||||
// or if this is the first browser window opened. Thus the
|
||||
// variables is_aol, is_aol3, and is_aol4 aren't 100% reliable.
|
||||
var is_aol = (agt.indexOf("aol") != -1);
|
||||
var is_aol3 = (is_aol && is_ie3);
|
||||
var is_aol4 = (is_aol && is_ie4);
|
||||
var is_aol5 = (agt.indexOf("aol 5") != -1);
|
||||
var is_aol6 = (agt.indexOf("aol 6") != -1);
|
||||
|
||||
var is_opera = (agt.indexOf("opera") != -1);
|
||||
var is_opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
|
||||
var is_opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
|
||||
var is_opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
|
||||
var is_opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
|
||||
var is_opera5up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4);
|
||||
|
||||
var is_webtv = (agt.indexOf("webtv") != -1);
|
||||
|
||||
var is_TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1));
|
||||
var is_AOLTV = is_TVNavigator;
|
||||
|
||||
var is_hotjava = (agt.indexOf("hotjava") != -1);
|
||||
var is_hotjava3 = (is_hotjava && (is_major == 3));
|
||||
var is_hotjava3up = (is_hotjava && (is_major >= 3));
|
||||
|
||||
// *** JAVASCRIPT VERSION CHECK ***
|
||||
var is_js;
|
||||
if (is_nav2 || is_ie3) is_js = 1.0;
|
||||
else if (is_nav3) is_js = 1.1;
|
||||
else if (is_opera5up) is_js = 1.3;
|
||||
else if (is_opera) is_js = 1.1;
|
||||
else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2;
|
||||
else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3;
|
||||
else if (is_hotjava3up) is_js = 1.4;
|
||||
else if (is_nav6 || is_gecko) is_js = 1.5;
|
||||
// NOTE: In the future, update this code when newer versions of JS
|
||||
// are released. For now, we try to provide some upward compatibility
|
||||
// so that future versions of Nav and IE will show they are at
|
||||
// *least* JS 1.x capable. Always check for JS version compatibility
|
||||
// with > or >=.
|
||||
else if (is_nav6up) is_js = 1.5;
|
||||
// NOTE: ie5up on mac is 1.4
|
||||
else if (is_ie5up) is_js = 1.3
|
||||
|
||||
// HACK: no idea for other browsers; always check for JS version with > or >=
|
||||
else is_js = 0.0;
|
||||
|
||||
// *** PLATFORM ***
|
||||
var is_win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
|
||||
// NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
|
||||
// Win32, so you can't distinguish between Win95 and WinNT.
|
||||
var is_win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));
|
||||
|
||||
// is this a 16 bit compiled version?
|
||||
var is_win16 = ((agt.indexOf("win16")!=-1) ||
|
||||
(agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) ||
|
||||
(agt.indexOf("windows 16-bit")!=-1) );
|
||||
|
||||
var is_win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
|
||||
(agt.indexOf("windows 16-bit")!=-1));
|
||||
|
||||
var is_winme = ((agt.indexOf("win 9x 4.90")!=-1));
|
||||
var is_win2k = ((agt.indexOf("windows nt 5.0")!=-1));
|
||||
|
||||
// NOTE: Reliable detection of Win98 may not be possible. It appears that:
|
||||
// - On Nav 4.x and before you'll get plain "Windows" in userAgent.
|
||||
// - On Mercury client, the 32-bit version will return "Win98", but
|
||||
// the 16-bit version running on Win98 will still return "Win95".
|
||||
var is_win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
|
||||
var is_winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
|
||||
var is_win32 = (is_win95 || is_winnt || is_win98 ||
|
||||
((is_major >= 4) && (navigator.platform == "Win32")) ||
|
||||
(agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1));
|
||||
|
||||
var is_os2 = ((agt.indexOf("os/2")!=-1) ||
|
||||
(navigator.appVersion.indexOf("OS/2")!=-1) ||
|
||||
(agt.indexOf("ibm-webexplorer")!=-1));
|
||||
|
||||
var is_mac = (agt.indexOf("mac")!=-1);
|
||||
// hack ie5 js version for mac
|
||||
if (is_mac && is_ie5up) is_js = 1.4;
|
||||
var is_mac68k = (is_mac && ((agt.indexOf("68k")!=-1) ||
|
||||
(agt.indexOf("68000")!=-1)));
|
||||
var is_macppc = (is_mac && ((agt.indexOf("ppc")!=-1) ||
|
||||
(agt.indexOf("powerpc")!=-1)));
|
||||
|
||||
var is_sun = (agt.indexOf("sunos")!=-1);
|
||||
var is_sun4 = (agt.indexOf("sunos 4")!=-1);
|
||||
var is_sun5 = (agt.indexOf("sunos 5")!=-1);
|
||||
var is_suni86= (is_sun && (agt.indexOf("i86")!=-1));
|
||||
var is_irix = (agt.indexOf("irix") !=-1); // SGI
|
||||
var is_irix5 = (agt.indexOf("irix 5") !=-1);
|
||||
var is_irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
|
||||
var is_hpux = (agt.indexOf("hp-ux")!=-1);
|
||||
var is_hpux9 = (is_hpux && (agt.indexOf("09.")!=-1));
|
||||
var is_hpux10= (is_hpux && (agt.indexOf("10.")!=-1));
|
||||
var is_aix = (agt.indexOf("aix") !=-1); // IBM
|
||||
var is_aix1 = (agt.indexOf("aix 1") !=-1);
|
||||
var is_aix2 = (agt.indexOf("aix 2") !=-1);
|
||||
var is_aix3 = (agt.indexOf("aix 3") !=-1);
|
||||
var is_aix4 = (agt.indexOf("aix 4") !=-1);
|
||||
var is_linux = (agt.indexOf("inux")!=-1);
|
||||
var is_sco = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
|
||||
var is_unixware = (agt.indexOf("unix_system_v")!=-1);
|
||||
var is_mpras = (agt.indexOf("ncr")!=-1);
|
||||
var is_reliant = (agt.indexOf("reliantunix")!=-1);
|
||||
var is_dec = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) ||
|
||||
(agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) ||
|
||||
(agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1));
|
||||
var is_sinix = (agt.indexOf("sinix")!=-1);
|
||||
var is_freebsd = (agt.indexOf("freebsd")!=-1);
|
||||
var is_bsd = (agt.indexOf("bsd")!=-1);
|
||||
var is_unix = ((agt.indexOf("x11")!=-1) || is_sun || is_irix || is_hpux ||
|
||||
is_sco ||is_unixware || is_mpras || is_reliant ||
|
||||
is_dec || is_sinix || is_aix || is_linux || is_bsd || is_freebsd);
|
||||
|
||||
var is_vms = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));
|
||||
|
||||
//--> end hide JavaScript
|
40
datepicker/dynCalendar.css
Executable file
40
datepicker/dynCalendar.css
Executable file
@ -0,0 +1,40 @@
|
||||
.dynCalendar_header{
|
||||
font-family: Arial, Verdana, Helvetica, Sans-Serif;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
z-index: 1000;
|
||||
}
|
||||
.dynCalendar_dayname {
|
||||
background-color: #eeeeee;
|
||||
border: 1px solid #c0c0c0;
|
||||
font-family: Arial, Verdana, Helvetica, Sans-Serif;
|
||||
font-size: 8pt;
|
||||
text-align: center;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.dynCalendar_day {
|
||||
background-color: #eeeeee;
|
||||
color: #000000;
|
||||
font-family: Arial, Verdana, Helvetica, Sans-Serif;
|
||||
font-size: 8pt;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.dynCalendar_today {
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #c0c0c0;
|
||||
font-family: Arial, Verdana, Helvetica, Sans-Serif;
|
||||
font-size: 8pt;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.dynCalendar {
|
||||
background-color: #c0c0c0;
|
||||
border: 2px outset white;
|
||||
visibility: hidden;
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
left: 1px;
|
||||
z-index: 1000;
|
||||
}
|
465
datepicker/dynCalendar.js
Executable file
465
datepicker/dynCalendar.js
Executable file
@ -0,0 +1,465 @@
|
||||
|
||||
/**
|
||||
* o------------------------------------------------------------------------------o
|
||||
* | This package is licensed under the Phpguru license. A quick summary is |
|
||||
* | that the code is free to use for non-commercial purposes. For commercial |
|
||||
* | purposes of any kind there is a small license fee to pay. You can read more |
|
||||
* | at: |
|
||||
* | https://www.phpguru.org/static/license.html |
|
||||
* o------------------------------------------------------------------------------o
|
||||
*
|
||||
* © Copyright 2008 Richard Heyes
|
||||
*/
|
||||
|
||||
/**
|
||||
* Global variables
|
||||
*/
|
||||
dynCalendar_layers = new Array();
|
||||
dynCalendar_mouseoverStatus = false;
|
||||
dynCalendar_mouseX = 0;
|
||||
dynCalendar_mouseY = 0;
|
||||
|
||||
/**
|
||||
* The calendar constructor
|
||||
*
|
||||
* @access public
|
||||
* @param string objName Name of the object that you create
|
||||
* @param string callbackFunc Name of the callback function
|
||||
* @param string OPTIONAL Optional layer name
|
||||
* @param string OPTIONAL Optional images path
|
||||
*/
|
||||
function dynCalendar(objName, callbackFunc)
|
||||
{
|
||||
/**
|
||||
* Properties
|
||||
*/
|
||||
// Todays date
|
||||
this.today = new Date();
|
||||
this.date = this.today.getDate();
|
||||
this.month = this.today.getMonth();
|
||||
this.year = this.today.getFullYear();
|
||||
|
||||
this.objName = objName;
|
||||
this.callbackFunc = callbackFunc;
|
||||
this.imagesPath = arguments[2] ? arguments[2] : 'images/';
|
||||
this.layerID = arguments[3] ? arguments[3] : 'dynCalendar_layer_' + dynCalendar_layers.length;
|
||||
|
||||
/*byAli*/
|
||||
this.pos = arguments[4];
|
||||
|
||||
this.offsetX = 5;
|
||||
this.offsetY = -155;
|
||||
|
||||
this.useMonthCombo = true;
|
||||
this.useYearCombo = true;
|
||||
this.yearComboRange = 5;
|
||||
|
||||
this.currentMonth = this.month;
|
||||
this.currentYear = this.year;
|
||||
|
||||
/**
|
||||
* Public Methods
|
||||
*/
|
||||
this.show = dynCalendar_show;
|
||||
this.writeHTML = dynCalendar_writeHTML;
|
||||
|
||||
// Accessor methods
|
||||
this.setOffset = dynCalendar_setOffset;
|
||||
this.setOffsetX = dynCalendar_setOffsetX;
|
||||
this.setOffsetY = dynCalendar_setOffsetY;
|
||||
this.setImagesPath = dynCalendar_setImagesPath;
|
||||
this.setMonthCombo = dynCalendar_setMonthCombo;
|
||||
this.setYearCombo = dynCalendar_setYearCombo;
|
||||
this.setCurrentMonth = dynCalendar_setCurrentMonth;
|
||||
this.setCurrentYear = dynCalendar_setCurrentYear;
|
||||
this.setYearComboRange = dynCalendar_setYearComboRange;
|
||||
|
||||
/**
|
||||
* Private methods
|
||||
*/
|
||||
// Layer manipulation
|
||||
this._getLayer = dynCalendar_getLayer;
|
||||
this._hideLayer = dynCalendar_hideLayer;
|
||||
this._showLayer = dynCalendar_showLayer;
|
||||
this._setLayerPosition = dynCalendar_setLayerPosition;
|
||||
this._setHTML = dynCalendar_setHTML;
|
||||
|
||||
// Miscellaneous
|
||||
this._getDaysInMonth = dynCalendar_getDaysInMonth;
|
||||
this._mouseover = dynCalendar_mouseover;
|
||||
|
||||
/**
|
||||
* Constructor type code
|
||||
*/
|
||||
dynCalendar_layers[dynCalendar_layers.length] = this;
|
||||
this.writeHTML();
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the calendar, or updates the layer if
|
||||
* already visible.
|
||||
*
|
||||
* @access public
|
||||
* @param integer month Optional month number (0-11)
|
||||
* @param integer year Optional year (YYYY format)
|
||||
*/
|
||||
function dynCalendar_show()
|
||||
{
|
||||
// Variable declarations to prevent globalisation
|
||||
var month, year, monthnames, numdays, thisMonth, firstOfMonth;
|
||||
var ret, row, i, cssClass, linkHTML, previousMonth, previousYear;
|
||||
var nextMonth, nextYear, prevImgHTML, prevLinkHTML, nextImgHTML, nextLinkHTML;
|
||||
var monthComboOptions, monthCombo, yearComboOptions, yearCombo, html;
|
||||
|
||||
this.currentMonth = month = arguments[0] != null ? arguments[0] : this.currentMonth;
|
||||
this.currentYear = year = arguments[1] != null ? arguments[1] : this.currentYear;
|
||||
|
||||
monthnames = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
|
||||
numdays = this._getDaysInMonth(month, year);
|
||||
|
||||
thisMonth = new Date(year, month, 1);
|
||||
firstOfMonth = thisMonth.getDay();
|
||||
|
||||
// First few blanks up to first day
|
||||
ret = new Array(new Array());
|
||||
for(i=0; i<firstOfMonth; i++){
|
||||
ret[0][ret[0].length] = '<td> </td>';
|
||||
}
|
||||
|
||||
// Main body of calendar
|
||||
row = 0;
|
||||
i = 1;
|
||||
while(i <= numdays){
|
||||
if(ret[row].length == 7){
|
||||
ret[++row] = new Array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate this cells' HTML
|
||||
*/
|
||||
cssClass = (i == this.date && month == this.month && year == this.year) ? 'dynCalendar_today' : 'dynCalendar_day';
|
||||
linkHTML = '<a href="javascript: ' + this.callbackFunc + '(' + i + ', ' + (Number(month) + 1) + ', ' + year + ', ' + this.pos + '); ' + this.objName + '._hideLayer()">' + (i++) + '</a>';
|
||||
ret[row][ret[row].length] = '<td align="center" class="' + cssClass + '">' + linkHTML + '</td>';
|
||||
}
|
||||
|
||||
// Format the HTML
|
||||
for(i=0; i<ret.length; i++){
|
||||
ret[i] = ret[i].join('\n') + '\n';
|
||||
}
|
||||
|
||||
previousYear = thisMonth.getFullYear();
|
||||
previousMonth = thisMonth.getMonth() - 1;
|
||||
if(previousMonth < 0){
|
||||
previousMonth = 11;
|
||||
previousYear--;
|
||||
}
|
||||
|
||||
nextYear = thisMonth.getFullYear();
|
||||
nextMonth = thisMonth.getMonth() + 1;
|
||||
if(nextMonth > 11){
|
||||
nextMonth = 0;
|
||||
nextYear++;
|
||||
}
|
||||
|
||||
prevImgHTML = '<img src="' + this.imagesPath + '/prev.gif" alt="<<" border="0" />';
|
||||
prevLinkHTML = '<a href="javascript: ' + this.objName + '.show(' + previousMonth + ', ' + previousYear + ')">' + prevImgHTML + '</a>';
|
||||
nextImgHTML = '<img src="' + this.imagesPath + '/next.gif" alt="<<" border="0" />';
|
||||
nextLinkHTML = '<a href="javascript: ' + this.objName + '.show(' + nextMonth + ', ' + nextYear + ')">' + nextImgHTML + '</a>';
|
||||
|
||||
/**
|
||||
* Build month combo
|
||||
*/
|
||||
if (this.useMonthCombo) {
|
||||
monthComboOptions = '';
|
||||
for (i=0; i<12; i++) {
|
||||
selected = (i == thisMonth.getMonth() ? 'selected="selected"' : '');
|
||||
monthComboOptions += '<option value="' + i + '" ' + selected + '>' + monthnames[i] + '</option>';
|
||||
}
|
||||
monthCombo = '<select name="months" onchange="' + this.objName + '.show(this.options[this.selectedIndex].value, ' + this.objName + '.currentYear)">' + monthComboOptions + '</select>';
|
||||
} else {
|
||||
monthCombo = monthnames[thisMonth.getMonth()];
|
||||
}
|
||||
|
||||
/**
|
||||
* Build year combo
|
||||
*/
|
||||
if (this.useYearCombo) {
|
||||
yearComboOptions = '';
|
||||
for (i = thisMonth.getFullYear() - this.yearComboRange; i <= (thisMonth.getFullYear() + this.yearComboRange); i++) {
|
||||
selected = (i == thisMonth.getFullYear() ? 'selected="selected"' : '');
|
||||
yearComboOptions += '<option value="' + i + '" ' + selected + '>' + i + '</option>';
|
||||
}
|
||||
yearCombo = '<select style="border: 1px groove" name="years" onchange="' + this.objName + '.show(' + this.objName + '.currentMonth, this.options[this.selectedIndex].value)">' + yearComboOptions + '</select>';
|
||||
} else {
|
||||
yearCombo = thisMonth.getFullYear();
|
||||
}
|
||||
|
||||
html = '<table width=220pt border="0" bgcolor="#eeeeee">';
|
||||
html += '<tr><td class="dynCalendar_header">' + prevLinkHTML + '</td><td colspan="5" align="center" class="dynCalendar_header">' + monthCombo + ' ' + yearCombo + '</td><td align="right" class="dynCalendar_header">' + nextLinkHTML + '</td></tr>';
|
||||
html += '<tr>';
|
||||
html += '<td class="dynCalendar_dayname">So</td>';
|
||||
html += '<td class="dynCalendar_dayname">Mo</td>';
|
||||
html += '<td class="dynCalendar_dayname">Di</td>';
|
||||
html += '<td class="dynCalendar_dayname">Mi</td>';
|
||||
html += '<td class="dynCalendar_dayname">Do</td>';
|
||||
html += '<td class="dynCalendar_dayname">Fr</td>';
|
||||
html += '<td class="dynCalendar_dayname">Sa</td></tr>';
|
||||
html += '<tr>' + ret.join('</tr>\n<tr>') + '</tr>';
|
||||
html += '</table>';
|
||||
|
||||
this._setHTML(html);
|
||||
if (!arguments[0] && !arguments[1]) {
|
||||
this._showLayer();
|
||||
this._setLayerPosition();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes HTML to document for layer
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function dynCalendar_writeHTML()
|
||||
{
|
||||
if (is_ie5up || is_nav6up || is_gecko) {
|
||||
document.write('<a href="javascript: ' + this.objName + '.show()"><img src="' + this.imagesPath + 'dynCalendar.gif" border="0" width="16" height="16" /></a>');
|
||||
document.write('<div class="dynCalendar" id="' + this.layerID + '" onmouseover="' + this.objName + '._mouseover(true)" onmouseout="' + this.objName + '._mouseover(false)"></div>');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the offset to the mouse position
|
||||
* that the calendar appears at.
|
||||
*
|
||||
* @access public
|
||||
* @param integer Xoffset Number of pixels for vertical
|
||||
* offset from mouse position
|
||||
* @param integer Yoffset Number of pixels for horizontal
|
||||
* offset from mouse position
|
||||
*/
|
||||
function dynCalendar_setOffset(Xoffset, Yoffset)
|
||||
{
|
||||
this.setOffsetX(Xoffset);
|
||||
this.setOffsetY(Yoffset);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the X offset to the mouse position
|
||||
* that the calendar appears at.
|
||||
*
|
||||
* @access public
|
||||
* @param integer Xoffset Number of pixels for horizontal
|
||||
* offset from mouse position
|
||||
*/
|
||||
function dynCalendar_setOffsetX(Xoffset)
|
||||
{
|
||||
this.offsetX = Xoffset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Y offset to the mouse position
|
||||
* that the calendar appears at.
|
||||
*
|
||||
* @access public
|
||||
* @param integer Yoffset Number of pixels for vertical
|
||||
* offset from mouse position
|
||||
*/
|
||||
function dynCalendar_setOffsetY(Yoffset)
|
||||
{
|
||||
this.offsetY = Yoffset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the images path
|
||||
*
|
||||
* @access public
|
||||
* @param string path Path to use for images
|
||||
*/
|
||||
function dynCalendar_setImagesPath(path)
|
||||
{
|
||||
this.imagesPath = path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on/off the month dropdown
|
||||
*
|
||||
* @access public
|
||||
* @param boolean useMonthCombo Whether to use month dropdown or not
|
||||
*/
|
||||
function dynCalendar_setMonthCombo(useMonthCombo)
|
||||
{
|
||||
this.useMonthCombo = useMonthCombo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on/off the year dropdown
|
||||
*
|
||||
* @access public
|
||||
* @param boolean useYearCombo Whether to use year dropdown or not
|
||||
*/
|
||||
function dynCalendar_setYearCombo(useYearCombo)
|
||||
{
|
||||
this.useYearCombo = useYearCombo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current month being displayed
|
||||
*
|
||||
* @access public
|
||||
* @param boolean month The month to set the current month to
|
||||
*/
|
||||
function dynCalendar_setCurrentMonth(month)
|
||||
{
|
||||
this.currentMonth = month;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current month being displayed
|
||||
*
|
||||
* @access public
|
||||
* @param boolean year The year to set the current year to
|
||||
*/
|
||||
function dynCalendar_setCurrentYear(year)
|
||||
{
|
||||
this.currentYear = year;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the range of the year combo. Displays this number of
|
||||
* years either side of the year being displayed.
|
||||
*
|
||||
* @access public
|
||||
* @param integer range The range to set
|
||||
*/
|
||||
function dynCalendar_setYearComboRange(range)
|
||||
{
|
||||
this.yearComboRange = range;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the layer object
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function dynCalendar_getLayer()
|
||||
{
|
||||
var layerID = this.layerID;
|
||||
|
||||
if (document.getElementById(layerID)) {
|
||||
|
||||
return document.getElementById(layerID);
|
||||
|
||||
} else if (document.all(layerID)) {
|
||||
return document.all(layerID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides the calendar layer
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function dynCalendar_hideLayer()
|
||||
{
|
||||
this._getLayer().style.visibility = 'hidden';
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows the calendar layer
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function dynCalendar_showLayer()
|
||||
{
|
||||
this._getLayer().style.visibility = 'visible';
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the layers position
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function dynCalendar_setLayerPosition()
|
||||
{
|
||||
this._getLayer().style.top = (dynCalendar_mouseY + this.offsetY) + 'px';
|
||||
this._getLayer().style.left = (dynCalendar_mouseX + this.offsetX) + 'px';
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the innerHTML attribute of the layer
|
||||
*
|
||||
* @access private
|
||||
*/
|
||||
function dynCalendar_setHTML(html)
|
||||
{
|
||||
this._getLayer().innerHTML = html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns number of days in the supplied month
|
||||
*
|
||||
* @access private
|
||||
* @param integer month The month to get number of days in
|
||||
* @param integer year The year of the month in question
|
||||
*/
|
||||
function dynCalendar_getDaysInMonth(month, year)
|
||||
{
|
||||
monthdays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
||||
if (month != 1) {
|
||||
return monthdays[month];
|
||||
} else {
|
||||
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? 29 : 28);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onMouse(Over|Out) event handler
|
||||
*
|
||||
* @access private
|
||||
* @param boolean status Whether the mouse is over the
|
||||
* calendar or not
|
||||
*/
|
||||
function dynCalendar_mouseover(status)
|
||||
{
|
||||
dynCalendar_mouseoverStatus = status;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* onMouseMove event handler
|
||||
*/
|
||||
dynCalendar_oldOnmousemove = document.onmousemove ? document.onmousemove : new Function;
|
||||
|
||||
document.onmousemove = function ()
|
||||
{
|
||||
if (is_ie5up || is_nav6up || is_gecko) {
|
||||
if (arguments[0]) {
|
||||
dynCalendar_mouseX = arguments[0].pageX;
|
||||
dynCalendar_mouseY = arguments[0].pageY;
|
||||
} else {
|
||||
dynCalendar_mouseX = event.clientX + document.body.scrollLeft;
|
||||
dynCalendar_mouseY = event.clientY + document.body.scrollTop;
|
||||
arguments[0] = null;
|
||||
}
|
||||
|
||||
dynCalendar_oldOnmousemove();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callbacks for document.onclick
|
||||
*/
|
||||
dynCalendar_oldOnclick = document.onclick ? document.onclick : new Function;
|
||||
|
||||
document.onclick = function ()
|
||||
{
|
||||
if (is_ie5up || is_nav6up || is_gecko) {
|
||||
if(!dynCalendar_mouseoverStatus){
|
||||
for(i=0; i<dynCalendar_layers.length; ++i){
|
||||
dynCalendar_layers[i]._hideLayer();
|
||||
}
|
||||
}
|
||||
|
||||
dynCalendar_oldOnclick(arguments[0] ? arguments[0] : null);
|
||||
}
|
||||
}
|
88
datepicker/dyncalendar.php
Executable file
88
datepicker/dyncalendar.php
Executable file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
include("kurs/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
echo"
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<link rel='stylesheet' href='dynCalendar/dynCalendar.css' type='text/css' media='screen'>
|
||||
<script src='dynCalendar/browserSniffer.js' type='text/javascript' language='javascript'></script>
|
||||
<script src='dynCalendar/dynCalendar.js' type='text/javascript' language='javascript'></script>
|
||||
<script type='text/javascript'>
|
||||
<!--
|
||||
// Calendar callback. When a date is clicked on the calendar
|
||||
// this function is called so you can do as you want with it
|
||||
function calendarCallback(date, month, year, pos)
|
||||
{
|
||||
if(date<10){date='0'+date;}
|
||||
if(month<10){month='0'+month;}
|
||||
date_tag = date;
|
||||
date_mon = month;
|
||||
date_jahr = year;
|
||||
document.getElementById('date_tag'+pos).value = date_tag;
|
||||
document.getElementById('date_mon'+pos).value = date_mon;
|
||||
document.getElementById('date_jahr'+pos).value = date_jahr;
|
||||
}
|
||||
|
||||
function calendarCallback_end(date, month, year, pos)
|
||||
{
|
||||
if(date<10){date='0'+date;}
|
||||
if(month<10){month='0'+month;}
|
||||
date_tag = date;
|
||||
date_mon = month;
|
||||
date_jahr = year;
|
||||
document.getElementById('date_tag_end'+pos).value = date_tag;
|
||||
document.getElementById('date_mon_end'+pos).value = date_mon;
|
||||
document.getElementById('date_jahr_end'+pos).value = date_jahr;
|
||||
}
|
||||
// -->
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<table width=100%>
|
||||
<form>
|
||||
<tr>
|
||||
<td width='60%' align='left' style='border-style: none; border-width: medium' height='0'>
|
||||
|
||||
<input type='text' name='date_tag2' id='date_tag2' value='' size=2>.<input type='text' name='date_mon2' id='date_mon2'value='' size=2>.<input type='text' name='date_jahr2' id='date_jahr2' value='' size=4>
|
||||
<script language='JavaScript' type='text/javascript'>
|
||||
<!--
|
||||
fooCalendar1 = new dynCalendar('fooCalendar1', 'calendarCallback', 'dynCalendar/images/', '', '2');
|
||||
//-->
|
||||
</script>
|
||||
bis
|
||||
|
||||
<input type='text' name='date_tag_end2' id='date_tag_end2' value='' size=2>.<input type='text' name='date_mon_end2' id='date_mon_end2'value='' size=2>.<input type='text' name='date_jahr_end2' id='date_jahr_end2' value='' size=4>
|
||||
<script language='JavaScript' type='text/javascript'>
|
||||
<!--
|
||||
fooCalendar2 = new dynCalendar('fooCalendar2', 'calendarCallback_end', 'dynCalendar/images/', '', '2');
|
||||
//-->
|
||||
</script>
|
||||
</td>
|
||||
<td width='60%' align='left' style='border-style: none; border-width: medium' height='0'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width='60%' align='left' style='border-style: none; border-width: medium' height='0'>
|
||||
|
||||
<input type='text' name='date_tag3' id='date_tag3' value='' size=2>.<input type='text' name='date_mon3' id='date_mon3'value='' size=2>.<input type='text' name='date_jahr3' id='date_jahr3' value='' size=4>
|
||||
<script language='JavaScript' type='text/javascript'>
|
||||
<!--
|
||||
fooCalendar3 = new dynCalendar('fooCalendar3', 'calendarCallback', 'dynCalendar/images/', '', '3');
|
||||
//-->
|
||||
</script>
|
||||
|
||||
</td>
|
||||
<td width='60%' align='left' style='border-style: none; border-width: medium' height='0'>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>";
|
||||
|
||||
?>
|
BIN
datepicker/images/dynCalendar.gif
Executable file
BIN
datepicker/images/dynCalendar.gif
Executable file
Binary file not shown.
After Width: | Height: | Size: 895 B |
BIN
datepicker/images/next.gif
Executable file
BIN
datepicker/images/next.gif
Executable file
Binary file not shown.
After Width: | Height: | Size: 844 B |
BIN
datepicker/images/prev.gif
Executable file
BIN
datepicker/images/prev.gif
Executable file
Binary file not shown.
After Width: | Height: | Size: 844 B |
2
eingabe_frame.php
Executable file
2
eingabe_frame.php
Executable file
@ -0,0 +1,2 @@
|
||||
<?php
include_once 'classes/TestProjektSmarty.class.php';
require_once("config.inc.php");
#$template = "standard";
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
$smarty = new Smarty();
require_once "language/german.inc.php";
|
||||
$smarty->display("$template/$templatename");
?>
|
199
erf_fz.php
Executable file
199
erf_fz.php
Executable file
@ -0,0 +1,199 @@
|
||||
<?php
|
||||
/*
|
||||
# Fuer debugging
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', 1);
|
||||
#echo __LINE__."<br>";
|
||||
*/
|
||||
session_start();
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
|
||||
require_once "language/german.inc.php";
|
||||
require_once("func_rollenrechte.php");
|
||||
|
||||
// Rechteüberprüfung
|
||||
if (!rore($uid, '5', 'RE')) {echo "Keine Rechte";exit;}
|
||||
// Rechteüberprüfung ende
|
||||
|
||||
|
||||
if(isset($_GET['action'])){
|
||||
$action = $_GET['action'];
|
||||
}else{
|
||||
$action = '';
|
||||
}
|
||||
|
||||
if($action == ''){
|
||||
#$db = dbconnect();
|
||||
$query = "SELECT kfid, bezeichnung
|
||||
FROM dep_kat_funktionen
|
||||
ORDER BY bezeichnung ASC";
|
||||
$result = $db->query( $query)
|
||||
or die ("Cannot execute query");
|
||||
|
||||
while ($row = $result->fetch_array()){
|
||||
$value_funktionen[] = $row;
|
||||
}
|
||||
$smarty->assign('table_data', $value_funktionen);
|
||||
}
|
||||
|
||||
if($action == 'lbfzerf'){
|
||||
|
||||
|
||||
|
||||
if(isset($_POST['funktion'])){
|
||||
$funktion = $_POST['funktion'];
|
||||
$_SESSION["fz_kfid"] = $funktion;
|
||||
$_SESSION["fz_status"] = 'neu';
|
||||
}else{
|
||||
$funktion = $_SESSION['fz_kfid'];
|
||||
|
||||
if(isset($_GET['kfid'])){
|
||||
$funktion = $_GET['kfid'];
|
||||
$_SESSION["fz_kfid"] = $funktion;
|
||||
$_SESSION["fz_status"] = 'neu';
|
||||
unset($_SESSION['fz_lbfzid']);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_GET['edit'])){
|
||||
$_SESSION["fz_status"] = 'edit';
|
||||
$lbfzid = $_GET['edit'];
|
||||
$_SESSION["fz_lbfzid"] = $lbfzid;
|
||||
}
|
||||
|
||||
if($_GET['editende']==1){
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["fz_status"] = 'neu';
|
||||
}
|
||||
|
||||
$result = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_funktionen
|
||||
WHERE kfid = $funktion
|
||||
");
|
||||
$row = $result->fetch_array();
|
||||
$smarty->assign('fz_funktion', "$row[bezeichnung]");
|
||||
|
||||
$query_prof = "SELECT imtuid, b.bezeichnung titel, vorname, nachname
|
||||
FROM dep_user a
|
||||
LEFT JOIN dep_kat_anrede b ON a.arid=b.arid
|
||||
ORDER BY nachname ASC";
|
||||
$result_prof = $db->query($query_prof)
|
||||
or die ("Cannot execute query prof");
|
||||
|
||||
while ($row_prof = $result_prof->fetch_array()){
|
||||
$value_prof[] = $row_prof;
|
||||
}
|
||||
$smarty->assign('table_data3', $value_prof);
|
||||
|
||||
|
||||
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if($_SESSION["fz_status"] == 'edit'){
|
||||
$result_edit = $db->query("SELECT date_format(startdat, '%d') startdat_tag
|
||||
, date_format(startdat, '%m') startdat_mon
|
||||
, date_format(startdat, '%Y') startdat_jahr
|
||||
, wert
|
||||
, date_format(enddat, '%d') enddat_tag
|
||||
, date_format(enddat, '%m') enddat_mon
|
||||
, date_format(enddat, '%Y') enddat_jahr
|
||||
, imtuid
|
||||
FROM dep_fz_zuord
|
||||
WHERE lbfzid = $lbfzid");
|
||||
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('fz_startdat_tag', "$row_edit[startdat_tag]");
|
||||
$smarty->assign('fz_startdat_mon', "$row_edit[startdat_mon]");
|
||||
$smarty->assign('fz_startdat_jahr', "$row_edit[startdat_jahr]");
|
||||
$smarty->assign('fz_wert', "$row_edit[wert]");
|
||||
$smarty->assign('fz_imtuid', "$row_edit[imtuid]");
|
||||
$smarty->assign('fz_enddat_tag', "$row_edit[enddat_tag]");
|
||||
$smarty->assign('fz_enddat_mon', "$row_edit[enddat_mon]");
|
||||
$smarty->assign('fz_enddat_jahr', "$row_edit[enddat_jahr]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
# --- Gespeicherte Bezüge ausgeben ----------
|
||||
|
||||
$query2 = "SELECT lbfzid
|
||||
, date_format(startdat, '%d.%m.%Y') startdat_form
|
||||
, date_format(enddat, '%d.%m.%Y') enddat_form
|
||||
, replace(wert,'.',',') wert
|
||||
, imtuid
|
||||
FROM dep_fz_zuord
|
||||
WHERE kfid = $funktion
|
||||
ORDER BY startdat ASC";
|
||||
|
||||
$result2 = $db->query( $query2)
|
||||
or die ("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()){
|
||||
$result_imtuid = $db->query("SELECT imtuid, b.bezeichnung titel, vorname, nachname
|
||||
FROM dep_user a
|
||||
LEFT JOIN dep_kat_anrede b ON A.arid=B.arid
|
||||
WHERE imtuid = $row2[imtuid]
|
||||
");
|
||||
$row_imtuid = $result_imtuid->fetch_array();
|
||||
$row2['name'] = "$row_imtuid[doz_titel] $row_imtuid[doz_vorname] $row_imtuid[doz_name]";
|
||||
$value_lbzul[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $value_lbzul);
|
||||
|
||||
|
||||
# --- Gespeicherte Bezüge Ende -----
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
if($action == 'save'){
|
||||
$funktion = $_SESSION["fz_kfid"];
|
||||
$prof = $_POST["prof"];
|
||||
$startdat = $_POST['jahr1']."-".$_POST['mon1']."-".$_POST['tag1'];
|
||||
$enddat = $_POST['jahr3']."-".$_POST['mon3']."-".$_POST['tag3'];
|
||||
$wert = $_POST['wert'];
|
||||
$modify_date = date("Y-m-d H:i:s");
|
||||
|
||||
if($_SESSION["fz_status"] == 'neu'){
|
||||
$result = $db->query("INSERT INTO dep_fz_zuord (startdat, enddat, wert, imtuid, kfid, modify_date) VALUES ('$startdat', '$enddat', '$wert', '$prof', $funktion, '$modify_date')");
|
||||
}
|
||||
|
||||
if($_SESSION["fz_status"] == 'edit'){
|
||||
$lbfzid = $_SESSION["fz_lbfzid"];
|
||||
$result = $db->query("UPDATE dep_fz_zuord
|
||||
SET startdat = '$startdat'
|
||||
, enddat = '$enddat'
|
||||
, wert = '$wert'
|
||||
, imtuid = '$prof'
|
||||
, modify_date = '$modify_date'
|
||||
WHERE lbfzid = $lbfzid
|
||||
");
|
||||
|
||||
unset($_SESSION['fz_lbfzid']);
|
||||
}
|
||||
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende=1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"2; URL=" . $_SERVER['PHP_SELF'] . "?action=lbfzerf&prof=$funktion&editende=$editende\">";
|
||||
}
|
||||
|
||||
if($action == 'del'){
|
||||
$funktion = $_SESSION["fz_kfid"];
|
||||
$lbfzid = $_GET['lbfzid'];
|
||||
|
||||
$result = $db->query("DELETE FROM dep_fz_zuord
|
||||
WHERE lbfzid=$lbfzid");
|
||||
|
||||
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende=1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?action=lbfzerf&prof=$funktion&editende=$editende\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
?>
|
708
erfassen_eingabe.js
Executable file
708
erfassen_eingabe.js
Executable file
@ -0,0 +1,708 @@
|
||||
function felder_aktiv(teaching) {
|
||||
|
||||
if (document.erfassen.gemlv.value == 'J') {
|
||||
document.erfassen.fachlv.disabled = false;
|
||||
document.erfassen.anzgemlv.disabled = false;
|
||||
document.erfassen.namegemlv.disabled = false;
|
||||
document.erfassen.basislvsgemlv.disabled = false;
|
||||
document.erfassen.teamteaching.disabled = false;
|
||||
} else {
|
||||
document.erfassen.fachlv.disabled = true;
|
||||
document.erfassen.anzgemlv.disabled = true;
|
||||
document.erfassen.namegemlv.disabled = true;
|
||||
document.erfassen.basislvsgemlv.disabled = true;
|
||||
document.erfassen.teamteaching.disabled = true;
|
||||
}
|
||||
|
||||
/* Basiswert LVS Defaultwer setzen */
|
||||
var basisstd = document.getElementById("std_default").value;
|
||||
var anzahl = document.getElementById('anz_ag').options[document.getElementById('anz_ag').options.selectedIndex].value;
|
||||
var neuwert = anzahl * basisstd;
|
||||
var neuwert = neuwert.toFixed(2);
|
||||
document.getElementById("basislvsgemlv").value = neuwert.replace(".", ",");
|
||||
|
||||
|
||||
/* fachübergreifende Lehrveranstaltung: Teachinfaktor ausblenden*/
|
||||
if (teaching == 1) {
|
||||
|
||||
var fachlv = document.getElementById('fachlv').options[document.getElementById('fachlv').options.selectedIndex].value;
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
if (fachlv == 'J') {
|
||||
$("#" + id14).hide();
|
||||
$("#" + id15).hide();
|
||||
} else {
|
||||
/*bei Studiengang 5+6 Master darf der Teachingfaktor nicht eingeblendet werden, da es ihn nicht gibt*/
|
||||
if (document.getElementById("studiengang").value == "5" || document.getElementById("studiengang").value == "6") {
|
||||
$("#" + id14).hide();
|
||||
}else{
|
||||
$("#" + id14).show();
|
||||
}
|
||||
$("#" + id15).show();
|
||||
}
|
||||
});
|
||||
//]]>
|
||||
|
||||
/* Bei Schwerpunkttehema (ID 11) wird die Zeile Teachingfaktor nicht angezeigt: Mail Haug vom 10.07.19*/
|
||||
if (document.getElementById("art").value == "11") {
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
$("#" + id14).hide();
|
||||
$("#" + id15).hide();
|
||||
});
|
||||
//]]>
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*Gesamtvolumen bereits ausrechnen für das Infofeld*/
|
||||
gesvol_calc()
|
||||
|
||||
}
|
||||
|
||||
|
||||
function show(gemlv, erf_value_art, erf_value_exk_tage) {
|
||||
|
||||
if (gemlv == 'J') {
|
||||
document.erfassen.fachlv.disabled = false;
|
||||
document.erfassen.anzgemlv.disabled = false;
|
||||
document.erfassen.namegemlv.disabled = false;
|
||||
document.erfassen.basislvsgemlv.disabled = false;
|
||||
document.erfassen.teamteaching.disabled = false;
|
||||
|
||||
/* Bei fachlv == J dann basislvsgemlv und teamteaching ausblenden*/
|
||||
if (document.getElementById("fachlv").value == "J") {
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
$("#" + id14).hide();
|
||||
$("#" + id15).hide();
|
||||
});
|
||||
//]]>
|
||||
}
|
||||
}
|
||||
|
||||
if (erf_value_exk_tage == '1') {
|
||||
/* Bei bearbeiten: Eintägig wird ausgewählt, Mehrtägig werden Werte gelöscht und disabled*/
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id17 = "teachingblock_hinw";
|
||||
$("#" + id).show();
|
||||
$("#" + id2).hide();
|
||||
$("#" + id3).hide();
|
||||
$("#" + id17).hide();
|
||||
});
|
||||
//]]>
|
||||
document.getElementById('tage_exkursion1').checked = true;
|
||||
document.getElementById('exk_datumvon2').value = '';
|
||||
document.getElementById("exk_datumvon2").disabled = true;
|
||||
document.getElementById('exk_datumbis2').value = '';
|
||||
document.getElementById("exk_datumbis2").disabled = true;
|
||||
document.getElementById('exk_beschreibung2').value = '';
|
||||
document.getElementById("exk_beschreibung2").disabled = true;
|
||||
document.getElementById('exk_stdanreise2').value = '';
|
||||
document.getElementById("exk_stdanreise2").disabled = true;
|
||||
document.getElementById('exk_stdabreise2').value = '';
|
||||
document.getElementById("exk_stdabreise2").disabled = true;
|
||||
|
||||
} else if (erf_value_exk_tage == '2') {
|
||||
/* Bei bearbeiten: Mehrtägig wird ausgewählt, Eintägig werden Werte gelöscht und disabled*/
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id17 = "teachingblock_hinw";
|
||||
$("#" + id).show();
|
||||
$("#" + id2).hide();
|
||||
$("#" + id3).hide();
|
||||
$("#" + id17).hide();
|
||||
});
|
||||
//]]>
|
||||
document.getElementById('tage_exkursion2').checked = true;
|
||||
document.getElementById('exk_datumvon1').value = '';
|
||||
document.getElementById("exk_datumvon1").disabled = true;
|
||||
document.getElementById('exk_beschreibung1').value = '';
|
||||
document.getElementById("exk_beschreibung1").disabled = true;
|
||||
document.getElementById('exk_stdanreise1').value = '';
|
||||
document.getElementById("exk_stdanreise1").disabled = true;
|
||||
|
||||
} else {
|
||||
/* Default beim Laden der Seite nur das lvs Gesamtsummenfeld einblenden und exkursion ausblenden*/
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id17 = "teachingblock_hinw";
|
||||
var id21= "art2";
|
||||
|
||||
$("#" + id).hide();
|
||||
$("#" + id2).show()
|
||||
$("#" + id17).hide();
|
||||
$("#" + id21).hide();
|
||||
|
||||
/* Beim Editieren von Extracurricularem Klausurenkurs soll der hinweis angezeigt werden, sonst nicht (beim Laden ist erf_value_art sonst leer)*/
|
||||
if (erf_value_art == '6') {
|
||||
$("#" + id3).show();
|
||||
} else {
|
||||
$("#" + id3).hide();
|
||||
}
|
||||
|
||||
});
|
||||
//]]>
|
||||
}
|
||||
|
||||
/* Bei Vorlesungen Dropdown einblenden und Titel ausblenden*/
|
||||
var id4 = "titel";
|
||||
var id5 = "module";
|
||||
var id6 = "schwerpunkt";
|
||||
|
||||
if (erf_value_art == '1') {
|
||||
$("#" + id4).hide();
|
||||
$("#" + id5).show();
|
||||
$("#" + id6).hide();
|
||||
|
||||
} else if (erf_value_art == '11') {
|
||||
$("#" + id4).hide();
|
||||
$("#" + id5).hide();
|
||||
$("#" + id6).show()
|
||||
} else {
|
||||
$("#" + id4).show();
|
||||
$("#" + id5).hide();
|
||||
$("#" + id6).hide();
|
||||
}
|
||||
document.getElementById("titel").focus();
|
||||
|
||||
/* Im Fehlerfall muss das entsprechende Dropdownmenü wieder ausgewählt werden*/
|
||||
einblenden(erf_value_exk_tage);
|
||||
|
||||
}
|
||||
|
||||
function fetch_select() {
|
||||
/* Nur bei den Studiengangen Public, Steuer, Renten, Finanz soll ein Katalog hinterlegt werden. Bei MPM und MEPA soll das Titel-Textfeld eingeblendet werden */
|
||||
/* Wenn die Art 11 (Schwerpunktthema) ist, dann soll immer nur das Dropdown für Schwerpunkt eingeblendet werden, sonst nicht*/
|
||||
var id4 = "titel";
|
||||
var id5 = "module";
|
||||
var id6 = "schwerpunkt";
|
||||
var id20= "art";
|
||||
var id21= "art2";
|
||||
var id14= "teachingblock4";
|
||||
|
||||
var studiengang = document.getElementById('studiengang').options[document.getElementById('studiengang').options.selectedIndex].value;
|
||||
if ((studiengang == "1" || studiengang == "2" || studiengang == "3" || studiengang == "4" || studiengang == "5" || studiengang == "6")
|
||||
&& (document.getElementById("art").value == "1" || document.getElementById("art2").value == "1")) {
|
||||
|
||||
$("#" + id4).hide();
|
||||
$("#" + id6).hide();
|
||||
$("#" + id5).show();
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'fetch_data.php',
|
||||
data: {
|
||||
get_option: studiengang
|
||||
},
|
||||
success: function (response) {
|
||||
document.getElementById("module").innerHTML = response;
|
||||
fetch_select2();
|
||||
}
|
||||
});
|
||||
} else if (document.getElementById("art").value == "11") {
|
||||
$("#" + id4).hide();
|
||||
$("#" + id5).hide();
|
||||
$("#" + id6).show();
|
||||
} else {
|
||||
$("#" + id5).hide();
|
||||
$("#" + id6).hide();
|
||||
$("#" + id4).show();
|
||||
}
|
||||
/* Bei Master sollen nur Vorlesungen angezeigt werden*/
|
||||
if(studiengang == "5" || studiengang == "6"){
|
||||
$("#" + id20).hide();
|
||||
$("#" + id21).show();
|
||||
$("#" + id14).hide();
|
||||
}else{
|
||||
$("#" + id21).hide();
|
||||
$("#" + id20).show();
|
||||
$("#" + id14).show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Für das abhängige Dropdownmenü Studiengang -> Module */
|
||||
function fetch_select2() {
|
||||
/*
|
||||
Diese Funktion wird aufgerufen, wenn der Studiengang geändert wird in "fetch_select"
|
||||
und wenn die Art der LV geändert wird in "einblenden()"
|
||||
Außerdem ist auf der Dropdownbox ein onchange event hinterlegt
|
||||
*/
|
||||
if (document.getElementById("art").value == "1") {
|
||||
/* Bei Vorlesungen defaultwert setzen */
|
||||
var module = document.getElementById('module').options[document.getElementById('module').options.selectedIndex].value;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'fetch_data2.php',
|
||||
data: {
|
||||
get_option: module
|
||||
},
|
||||
success: function (response) {
|
||||
/*NICHT IM EDITMODUS, SONST KOMMEN DEFAULTWERTE REIN. In der PHP wird der response auf 0 gesetzt im Editmodus
|
||||
BEI SCHWERPUNKTE AUCH PRÜFEN
|
||||
*/
|
||||
if(response > 0){
|
||||
document.getElementById("std").value = response.replace(".", ",");
|
||||
|
||||
/* Basiswert setzen, da mit den Std gerechnet wird, nach Anzahl der Arbeitsgemeinschaften*/
|
||||
document.getElementById("std_default").value = response;
|
||||
|
||||
/* Basiswert Teamteaching setzen*/
|
||||
document.getElementById("basislvsgemlv").value = response.replace(".", ",");
|
||||
/* Gleich mit der Anzahl der Arbeitsgemeinschaften multiplizieren, fall da im Vorfeld ein anderer Wert als 1 drinstehen würde*/
|
||||
fetch_anzahl();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
<!-- Für das abhängige Dropdownmenü Studiengang -> Module -->
|
||||
function fetch_anzahl() {
|
||||
/*
|
||||
Diese Funktion wird aufgerufen, wenn die Anzahl der Arbeitsgemeinschaften geändert wird
|
||||
*/
|
||||
|
||||
/* Bei Vorlesungen defaultwert setzen */
|
||||
var anzahl = document.getElementById('anz_ag').options[document.getElementById('anz_ag').options.selectedIndex].value;
|
||||
|
||||
var basisstd = document.querySelector("#std_default").value;
|
||||
var neuwert = anzahl * basisstd;
|
||||
var neuwert = neuwert.toFixed(2);
|
||||
document.getElementById("std").value = neuwert.replace(".", ",");
|
||||
document.getElementById("basislvsgemlv").value = neuwert.replace(".", ",");
|
||||
}
|
||||
|
||||
function einblenden(exkursionstage) {
|
||||
|
||||
/* Der Eingabeparameter wird nur aus show() bedient. Wenn eine Mehrtägige Exkursion bearbeitet wird, dann darf Sie in der function einblenden() nicht ausgeblendet werden*/
|
||||
/* Bei Exkursionen Erfassungsfeld einblenden*/
|
||||
|
||||
if (document.getElementById("art").value == "5") {
|
||||
document.getElementById("exkursion1").style.visibility = "visible";
|
||||
document.getElementById("lehrstd1").style.visibility = "hidden";
|
||||
|
||||
if(exkursionstage != 2){
|
||||
document.getElementById("exk_datumvon2").disabled = true;
|
||||
document.getElementById("exk_datumbis2").disabled = true;
|
||||
document.getElementById("exk_beschreibung2").disabled = true;
|
||||
document.getElementById("exk_stdanreise2").disabled = true;
|
||||
document.getElementById("exk_stdabreise2").disabled = true;
|
||||
}
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id4 = "titel";
|
||||
var id5 = "module";
|
||||
var id6 = "schwerpunkt";
|
||||
var id8 = "anz_agtage";
|
||||
/* Bei Exkursionen gibt es kein Teamteaching. Hier ausblenden, bei allen anderen einblenden*/
|
||||
var id10 = "teachingblock0";
|
||||
var id11 = "teachingblock1";
|
||||
var id12 = "teachingblock2";
|
||||
var id13 = "teachingblock3";
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
var id16 = "teachingblock_field";
|
||||
var id17 = "teachingblock_hinw";
|
||||
|
||||
$("#" + id2).fadeOut("slow");
|
||||
$("#" + id3).fadeOut("slow");
|
||||
$("#" + id5).fadeOut("slow");
|
||||
$("#" + id6).fadeOut("slow");
|
||||
$("#" + id8).fadeOut("slow");
|
||||
$("#" + id).fadeIn("slow");;
|
||||
$("#" + id4).fadeIn("slow");
|
||||
|
||||
$("#" + id10).hide();
|
||||
$("#" + id11).hide();
|
||||
$("#" + id12).hide();
|
||||
$("#" + id13).hide();
|
||||
$("#" + id14).hide();
|
||||
$("#" + id15).hide();
|
||||
$("#" + id16).hide();
|
||||
|
||||
|
||||
/* Hinweise werden nur bei der Berechnung des Gesamtvolumens eingeblendet */
|
||||
$("#" + id17).hide();
|
||||
|
||||
|
||||
});
|
||||
//]]>
|
||||
|
||||
} else if (document.getElementById("art").value == "6") {
|
||||
/*Hinweis zu Extracurricularer Klausurenkurs einblenden*/
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id4 = "titel";
|
||||
var id5 = "module";
|
||||
var id6 = "schwerpunkt";
|
||||
var id8 = "anz_agtage";
|
||||
|
||||
var id10 = "teachingblock0";
|
||||
var id11 = "teachingblock1";
|
||||
var id12 = "teachingblock2";
|
||||
var id13 = "teachingblock3";
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
var id16 = "teachingblock_field";
|
||||
var id17 = "teachingblock_hinw";
|
||||
|
||||
$("#" + id).fadeOut("slow");
|
||||
$("#" + id5).fadeOut("slow");
|
||||
$("#" + id6).fadeOut("slow");
|
||||
$("#" + id2).fadeIn("slow");
|
||||
$("#" + id3).fadeIn("slow");
|
||||
$("#" + id4).fadeIn("slow");
|
||||
|
||||
$("#" + id8).show();
|
||||
$("#" + id10).show();
|
||||
$("#" + id11).show();
|
||||
$("#" + id12).show();
|
||||
$("#" + id13).show();
|
||||
$("#" + id14).show();
|
||||
$("#" + id15).show();
|
||||
$("#" + id16).show();
|
||||
|
||||
/* Hinweise werden nur bei der Berechnung des Gesamtvolumens eingeblendet */
|
||||
$("#" + id17).hide();
|
||||
});
|
||||
//]]>
|
||||
} else if (document.getElementById("art").value == "1" || document.getElementById("art2").value == "1") {
|
||||
/* Vorlesungen */
|
||||
|
||||
document.getElementById("exkursion1").style.visibility = "hidden";
|
||||
document.getElementById("lehrstd1").style.visibility = "visible";
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id4 = "titel";
|
||||
var id5 = "module";
|
||||
var id6 = "schwerpunkt";
|
||||
var id8 = "anz_agtage";
|
||||
|
||||
var id10 = "teachingblock0";
|
||||
var id11 = "teachingblock1";
|
||||
var id12 = "teachingblock2";
|
||||
var id13 = "teachingblock3";
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
var id16 = "teachingblock_field";
|
||||
var id17 = "teachingblock_hinw";
|
||||
|
||||
$("#" + id).fadeOut("slow");
|
||||
$("#" + id3).fadeOut("slow");
|
||||
$("#" + id4).fadeOut("slow");
|
||||
$("#" + id2).fadeIn("slow");
|
||||
$("#" + id5).fadeIn("slow");
|
||||
$("#" + id6).fadeOut("slow");
|
||||
|
||||
$("#" + id8).show();
|
||||
$("#" + id10).show();
|
||||
$("#" + id11).show();
|
||||
$("#" + id12).show();
|
||||
$("#" + id13).show();
|
||||
$("#" + id14).show();
|
||||
$("#" + id15).show();
|
||||
$("#" + id16).show();
|
||||
|
||||
|
||||
/* Hinweise werden nur bei der Berechnung des Gesamtvolumens eingeblendet */
|
||||
$("#" + id17).hide();
|
||||
|
||||
/* Wenn Vorlesung aus Art ausgewählt, dann Katalog holen */
|
||||
fetch_select();
|
||||
|
||||
});
|
||||
//]]>
|
||||
} else if (document.getElementById("art").value == "11") {
|
||||
document.getElementById("exkursion1").style.visibility = "hidden";
|
||||
document.getElementById("lehrstd1").style.visibility = "visible";
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id4 = "titel";
|
||||
var id5 = "module";
|
||||
var id6 = "schwerpunkt";
|
||||
var id8 = "anz_agtage";
|
||||
|
||||
var id10 = "teachingblock0";
|
||||
var id11 = "teachingblock1";
|
||||
var id12 = "teachingblock2";
|
||||
var id13 = "teachingblock3";
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
var id16 = "teachingblock_field";
|
||||
var id17 = "teachingblock_hinw";
|
||||
|
||||
$("#" + id).fadeOut("fast");
|
||||
$("#" + id3).fadeOut("fast");
|
||||
$("#" + id5).fadeOut("fast");
|
||||
$("#" + id2).fadeIn("slow");
|
||||
$("#" + id4).fadeOut("slow");
|
||||
$("#" + id6).fadeIn("slow");
|
||||
|
||||
$("#" + id8).show();
|
||||
$("#" + id10).show();
|
||||
$("#" + id11).show();
|
||||
$("#" + id12).show();
|
||||
$("#" + id13).show();
|
||||
$("#" + id14).hide();
|
||||
$("#" + id15).hide();
|
||||
$("#" + id16).show();
|
||||
|
||||
/* Hinweise werden nur bei der Berechnung des Gesamtvolumens eingeblendet */
|
||||
$("#" + id17).hide();
|
||||
|
||||
/*Dropdown befüllen*/
|
||||
|
||||
var spt = document.getElementById('art').options[document.getElementById('art').options.selectedIndex].value;
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'fetch_schwerpunkt.php',
|
||||
data: {
|
||||
get_option: spt
|
||||
},
|
||||
success: function (response) {
|
||||
document.getElementById("schwerpunkt").innerHTML = response;
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
//]]>
|
||||
}else if (document.getElementById("art").value == "4") {
|
||||
/*Wahlpflichtfach*/
|
||||
|
||||
document.getElementById("exkursion1").style.visibility = "hidden";
|
||||
document.getElementById("lehrstd1").style.visibility = "visible";
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id4 = "titel";
|
||||
var id5 = "module";
|
||||
var id6 = "schwerpunkt";
|
||||
var id8 = "anz_agtage";
|
||||
|
||||
var id10 = "teachingblock0";
|
||||
var id11 = "teachingblock1";
|
||||
var id12 = "teachingblock2";
|
||||
var id13 = "teachingblock3";
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
var id16 = "teachingblock_field";
|
||||
var id17 = "teachingblock_hinw";
|
||||
|
||||
$("#" + id).fadeOut("fast");
|
||||
$("#" + id3).fadeOut("fast");
|
||||
$("#" + id5).fadeOut("fast");
|
||||
$("#" + id2).fadeIn("slow");
|
||||
$("#" + id4).fadeIn("slow");
|
||||
$("#" + id6).fadeOut("slow");
|
||||
$("#" + id8).fadeOut("slow");
|
||||
|
||||
$("#" + id10).show();
|
||||
$("#" + id11).show();
|
||||
$("#" + id12).show();
|
||||
$("#" + id13).show();
|
||||
$("#" + id14).show();
|
||||
$("#" + id15).show();
|
||||
$("#" + id16).show();
|
||||
|
||||
/* Hinweise werden nur bei der Berechnung des Gesamtvolumens eingeblendet */
|
||||
$("#" + id17).hide();
|
||||
});
|
||||
//]]>
|
||||
}else {
|
||||
document.getElementById("exkursion1").style.visibility = "hidden";
|
||||
document.getElementById("lehrstd1").style.visibility = "visible";
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id = "exkursion1";
|
||||
var id2 = "lehrstd1";
|
||||
var id3 = "extracurr";
|
||||
var id4 = "titel";
|
||||
var id5 = "module";
|
||||
var id6 = "schwerpunkt";
|
||||
var id8 = "anz_agtage";
|
||||
|
||||
var id10 = "teachingblock0";
|
||||
var id11 = "teachingblock1";
|
||||
var id12 = "teachingblock2";
|
||||
var id13 = "teachingblock3";
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
var id16 = "teachingblock_field";
|
||||
var id17 = "teachingblock_hinw";
|
||||
|
||||
$("#" + id).fadeOut("fast");
|
||||
$("#" + id3).fadeOut("fast");
|
||||
$("#" + id5).fadeOut("fast");
|
||||
$("#" + id2).fadeIn("slow");
|
||||
$("#" + id4).fadeIn("slow");
|
||||
$("#" + id6).fadeOut("slow");
|
||||
|
||||
$("#" + id8).show();
|
||||
$("#" + id10).show();
|
||||
$("#" + id11).show();
|
||||
$("#" + id12).show();
|
||||
$("#" + id13).show();
|
||||
$("#" + id14).show();
|
||||
$("#" + id15).show();
|
||||
$("#" + id16).show();
|
||||
|
||||
/* Hinweise werden nur bei der Berechnung des Gesamtvolumens eingeblendet */
|
||||
$("#" + id17).hide();
|
||||
});
|
||||
//]]>
|
||||
}
|
||||
|
||||
/* Bei fachlv == J dann basislvsgemlv und teamteaching ausblenden
|
||||
Wird auch bei show() bereits ausgeführt. Hier nochmals, da einblenden() nach show kommt, hätte das bei fachübergreifenden LV die Felder basislgemlvs und teamteaching wieder eingeblendet
|
||||
*/
|
||||
|
||||
if (document.getElementById("fachlv").value == "J") {
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id14 = "teachingblock4";
|
||||
var id15 = "teachingblock5";
|
||||
$("#" + id14).hide();
|
||||
$("#" + id15).hide();
|
||||
});
|
||||
//]]>
|
||||
}
|
||||
|
||||
fetch_select2();
|
||||
|
||||
/* Zum holen der LVS muss kurz gewartet werden, da die Befüllung des Dropdowns sonst noch nicht abgeschlossen ist. Es wird im selben javascript "einblenden()" befüllt*/
|
||||
setTimeout(fetch_schwerpunkt2, 500);
|
||||
|
||||
|
||||
}
|
||||
|
||||
function func_krankheit(krankheitsart) {
|
||||
/*Bei krankheitsbedingten Merkmalen sollen die Basisstd LVS und Summe der eingenen LVS leer gesetzt werden*/
|
||||
if(krankheitsart == 1){
|
||||
fetch_anzahl();
|
||||
}else{
|
||||
/* Werte auf 0 setzen*/
|
||||
document.getElementById("basislvsgemlv").value = "0,0";
|
||||
document.getElementById("std").value = "0,0";
|
||||
/* vorhandene Werte in hidden speichern*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function gesvol_calc() {
|
||||
/*
|
||||
Diese Funktion berechnet das Gesamtvolumen.
|
||||
Bsp: Basiswert 56Lvs als Wahlpflichtfach mit Faktor 0,5
|
||||
Berechnung: 56 + (56*0,5) = 84 LVS Gesamtvolumen
|
||||
|
||||
Diese Funktion wird verwendet in felder_aktiv und beim Teamteachingfaktor als onchange event
|
||||
*/
|
||||
|
||||
if (document.getElementById("fachlv").value == "N") {
|
||||
|
||||
/* Bei Vorlesungen defaultwert setzen */
|
||||
var teamteaching =$( "#teamteaching" ).val();
|
||||
|
||||
if (teamteaching != null){
|
||||
var teamteaching = document.getElementById('teamteaching').options[document.getElementById('teamteaching').options.selectedIndex].value;
|
||||
}else{
|
||||
var teamteaching = 0;
|
||||
}
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: 'fetch_teachingfacktor.php',
|
||||
data: {
|
||||
get_option: teamteaching
|
||||
},
|
||||
success: function (response) {
|
||||
if (response == ''){
|
||||
var response2 = 0;
|
||||
}else{
|
||||
var response2 = response;
|
||||
}
|
||||
if(response > 0){
|
||||
let gesamtvolumen_count = parseFloat(document.getElementById("basislvsgemlv").value.replace(',', '.')) + (parseFloat(document.getElementById("basislvsgemlv").value.replace(',', '.')) * parseFloat(response2));
|
||||
var gescount = gesamtvolumen_count.toFixed(2);
|
||||
document.getElementById("gesamtvolumen_count").innerHTML = "<strong>" + gescount.replace(".", ",") + "</strong>";
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id17 = "teachingblock_hinw";
|
||||
var id15 = "teachingblock5";
|
||||
$("#" + id15).show();
|
||||
$("#" + id17).show();
|
||||
});
|
||||
}
|
||||
|
||||
//]]>
|
||||
}
|
||||
});
|
||||
} else {
|
||||
/*bei fachübergreifende LV das Hinweisfeld ausblenden*/
|
||||
//<![CDATA[
|
||||
$(document).ready(function () {
|
||||
var id17 = "teachingblock_hinw";
|
||||
var id15 = "teachingblock5";
|
||||
$("#" + id15).hide();
|
||||
$("#" + id17).hide();
|
||||
});
|
||||
//]]>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function senden_aktiv() {
|
||||
if (document.erfassen.tage_exkursion1.checked == true) {
|
||||
document.getElementById("exk_datumvon1").disabled = false;
|
||||
document.getElementById("exk_beschreibung1").disabled = false;
|
||||
document.getElementById("exk_stdanreise1").disabled = false;
|
||||
} else {
|
||||
document.getElementById("exk_datumvon1").disabled = true;
|
||||
document.getElementById("exk_beschreibung1").disabled = true;
|
||||
document.getElementById("exk_stdanreise1").disabled = true;
|
||||
}
|
||||
if (document.erfassen.tage_exkursion2.checked == true) {
|
||||
document.getElementById("exk_datumvon2").disabled = false;
|
||||
document.getElementById("exk_datumbis2").disabled = false;
|
||||
document.getElementById("exk_beschreibung2").disabled = false;
|
||||
document.getElementById("exk_stdanreise2").disabled = false;
|
||||
document.getElementById("exk_stdabreise2").disabled = false;
|
||||
} else {
|
||||
document.getElementById("exk_datumvon2").disabled = true;
|
||||
document.getElementById("exk_datumbis2").disabled = true;
|
||||
document.getElementById("exk_beschreibung2").disabled = true;
|
||||
document.getElementById("exk_stdanreise2").disabled = true;
|
||||
document.getElementById("exk_stdabreise2").disabled = true;
|
||||
}
|
||||
}
|
723
erfassen_eingabe.php
Executable file
723
erfassen_eingabe.php
Executable file
@ -0,0 +1,723 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
require_once "func_lvs_exk_mehrtaegig.php";
|
||||
require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
# Wenn Seite neu aufgerufen wird, dann alle Sessions, die mit "erf_" beginnen löschen
|
||||
if (isset($_GET['new']) AND $_GET['new'] == 1) {
|
||||
;
|
||||
$search_prefix = 'erf_';
|
||||
$search_len = strlen($search_prefix);
|
||||
foreach ($_SESSION as $key => $value) {
|
||||
if (substr($key, 0, $search_len) == $search_prefix) {
|
||||
unset($_SESSION[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#echo "<pre>";
|
||||
#echo nl2br(print_r($_SESSION,true));
|
||||
#echo "</pre>";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Prüfen ob der Jahrgang schon abgeschlossen wurde, dann soll der Button "Abschließen und absenden" ausgeblendet werden
|
||||
$query_closed = $db->query("SELECT count(*) Anz
|
||||
FROM dep_doz_abschluss
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang");
|
||||
$row_closed = $query_closed->fetch_array();
|
||||
|
||||
if ($row_closed['Anz'] > 0) {
|
||||
$smarty->assign('erf_abschluss', 1);
|
||||
$smarty->assign('erf_error', 1);
|
||||
$smarty->assign('erf_error_text', 'Der aktuelle Jahrgang ist bereits abgeschlossen!');
|
||||
} else {
|
||||
$smarty->assign('erf_abschluss', 0);
|
||||
} // Jahrgang abgeschlossen
|
||||
|
||||
# Ausgabe Anzahl der max LVS für extracurriculare Klausurenkurs pro Jahr
|
||||
$query_extracur = $db->query("SELECT wert1, wert2
|
||||
FROM dep_parameter
|
||||
WHERE pid =6");
|
||||
$row_extracur = $query_extracur->fetch_array();
|
||||
$summe_extracur = number_format($row_extracur['wert1'], 0);
|
||||
$einheit_extracur = $row_extracur['wert2'];
|
||||
$smarty->assign('abschluss_value_max_extracur', $summe_extracur);
|
||||
$smarty->assign('abschluss_einheit_max_extracur', $einheit_extracur);
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('erf_error', 1);
|
||||
|
||||
$smarty->assign('erf_value_titel', $_SESSION["erf_titel"]);
|
||||
if($_SESSION["erf_titel"] == "" or $_SESSION["erf_module"] == "" or $_SESSION["erf_schwerpunkt"] == ""){ $smarty->assign('erf_titel_hig', 1);}else{$smarty->assign('erf_titel_hig', 0);}
|
||||
|
||||
$smarty->assign('erf_value_module', $_SESSION["erf_module"]);
|
||||
|
||||
$smarty->assign('erf_value_schwerpunkt', $_SESSION["erf_schwerpunkt"]);
|
||||
|
||||
$smarty->assign('erf_value_art', $_SESSION["erf_art"]);
|
||||
if($_SESSION["erf_art"] == ""){ $smarty->assign('erf_art_hig', 1);}else{$smarty->assign('erf_art_hig', 0);}
|
||||
|
||||
$smarty->assign('erf_value_anz_ag', $_SESSION["erf_anz_ag"]);
|
||||
|
||||
$smarty->assign('erf_value_studiengang', $_SESSION["erf_studiengang"]);
|
||||
if($_SESSION["erf_studiengang"] == ""){ $smarty->assign('erf_studiengang_hig', 1);}else{$smarty->assign('erf_studiengang_hig', 0);}
|
||||
|
||||
$smarty->assign('erf_value_krankheit', $_SESSION["erf_krankheit"]);
|
||||
|
||||
$smarty->assign('erf_value_gemlv', $_SESSION["erf_gemlv"]);
|
||||
|
||||
$smarty->assign('erf_value_fachlv', $_SESSION["erf_fachlv"]);
|
||||
|
||||
$smarty->assign('erf_value_anzgemlv', $_SESSION["erf_anzgemlv"]);
|
||||
if($_SESSION["erf_anzgemlv"] == "" AND $_SESSION["erf_gemlv"] == "J"){ $smarty->assign('erf_anzgemlv_hig', 1);}else{$smarty->assign('erf_anzgemlv_hig', 0);}
|
||||
|
||||
$smarty->assign('erf_value_namegemlv', $_SESSION["erf_namegemlv"]);
|
||||
if($_SESSION["erf_namegemlv"] == "" AND $_SESSION["erf_gemlv"] == "J"){ $smarty->assign('erf_namegemlv_hig', 1);}else{$smarty->assign('erf_namegemlv_hig', 0);}
|
||||
|
||||
$smarty->assign('erf_value_basislvsgemlv', $_SESSION["erf_basislvsgemlv"]);
|
||||
if(($_SESSION["erf_basislvsgemlv"] == "" or $_SESSION["erf_basislvsgemlv"] < "0,1") AND $_SESSION["erf_gemlv"] == "J"){ $smarty->assign('erf_basislvsgemlv_hig', 1);}else{$smarty->assign('erf_basislvsgemlv_hig', 0);}
|
||||
|
||||
$smarty->assign('erf_value_teamteaching', $_SESSION["erf_teamteaching"]);
|
||||
if($_SESSION["erf_teamteaching"] == "" AND $_SESSION["erf_gemlv"] == "J"){ $smarty->assign('erf_teamteaching_hig', 1);}else{$smarty->assign('erf_teamteaching_hig', 0);}
|
||||
|
||||
$smarty->assign('erf_value_tage_exkursion', $_SESSION["erf_tage_exkursion"]);
|
||||
if($_SESSION["erf_tage_exkursion"] == "1" AND
|
||||
($_SESSION["erf_exk_datumvon"] == "" OR
|
||||
$_SESSION["erf_exk_beschreibung"] == "" OR
|
||||
$_SESSION["erf_exk_stdanreise"] == "")
|
||||
){ $smarty->assign('erf_tage_exkursion_hig', 1);}else{$smarty->assign('erf_tage_exkursion_hig', 0);}
|
||||
|
||||
if($_SESSION["erf_tage_exkursion"] == "2" AND
|
||||
($_SESSION["erf_exk_datumvon"] == "" OR
|
||||
$_SESSION["erf_exk_datumbis"] == "" OR
|
||||
$_SESSION["erf_exk_beschreibung"] == "" OR
|
||||
$_SESSION["erf_exk_stdanreise"] == "" OR
|
||||
$_SESSION["erf_exk_stdabreise"] == "")
|
||||
){ $smarty->assign('erf_tage_exkursion_hig', 1);}else{$smarty->assign('erf_tage_exkursion_hig', 0);}
|
||||
|
||||
|
||||
$smarty->assign('erf_value_std', $_SESSION["erf_std"]);
|
||||
if($_SESSION["erf_std"] == "" or $_SESSION["erf_std"] < "0,1"){ $smarty->assign('erf_std_hig', 1);}else{$smarty->assign('erf_std_hig', 0);}
|
||||
|
||||
$smarty->assign('erf_value_hinweise', $_SESSION["erf_hinweise"]);
|
||||
/*Hinweise sind keine Pflichtfelder, daher auch hier keine _hig Variable*/
|
||||
|
||||
if ($errorno == 1) {
|
||||
$smarty->assign('erf_error_text', "Es müssen alle aktiven Felder (ausgenommen dem Hinweisfeld) ausgefüllt werden! ");
|
||||
}
|
||||
if ($errorno == 2) {
|
||||
# Extracurriculare Stunden wären überschritten
|
||||
$bisherige_extracurr = number_format($_GET['summecurr'], 2, ',', '.');
|
||||
$smarty->assign('erf_error_text', "Der eingegebene LVS-Wert würde die maximal zulässige Summe von $summe_extracur LVS überschreiten.<br>Derzeit sind $bisherige_extracurr Std vom Typ \"Extracurricularem Klausurenkurs\" erfasst!");
|
||||
}
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('erf_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["erf_status"] = 'edit';
|
||||
$did = $_GET['edit'];
|
||||
$_SESSION["erf_did"] = $did;
|
||||
} else {
|
||||
$_SESSION["erf_status"] = 'neu';
|
||||
}
|
||||
|
||||
# Defaultwert bei Krankheitsbedingten Merkmale:
|
||||
$smarty->assign('erf_value_krankheit', "0");
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["erf_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT did, titel, module, schwerpunkt, dsgid, verid, anz_ag, krankheitsmerkmal, gemlv, fachlv, anzgemlv, namegemlv, basislvsgemlv, teamteaching, exk_tage, date_format(exk_datumvon, '%d.%m.%Y') exk_datumvon, date_format(exk_datumbis, '%d.%m.%Y') exk_datumbis, exk_beschreibung, exk_stdanreise, exk_stdabreise, std, std_default, hinweise
|
||||
FROM dep_deputat
|
||||
WHERE did = $did");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
|
||||
$smarty->assign('erf_value_titel', "$row_edit[titel]");
|
||||
$_SESSION["erf_module"] = $row_edit['module'];
|
||||
$_SESSION["erf_schwerpunkt"] = $row_edit['schwerpunkt'];
|
||||
$smarty->assign('erf_value_art', "$row_edit[verid]");
|
||||
$smarty->assign('erf_value_anz_ag', "$row_edit[anz_ag]");
|
||||
$smarty->assign('erf_value_studiengang', "$row_edit[dsgid]");
|
||||
$smarty->assign('erf_value_krankheit', "$row_edit[krankheitsmerkmal]");
|
||||
$smarty->assign('erf_value_gemlv', "$row_edit[gemlv]");
|
||||
$smarty->assign('erf_value_fachlv', "$row_edit[fachlv]");
|
||||
$smarty->assign('erf_value_anzgemlv', "$row_edit[anzgemlv]");
|
||||
$smarty->assign('erf_value_namegemlv', "$row_edit[namegemlv]");
|
||||
$smarty->assign('erf_value_basislvsgemlv', "$row_edit[basislvsgemlv]");
|
||||
$smarty->assign('erf_value_teamteaching', "$row_edit[teamteaching]");
|
||||
$smarty->assign('erf_value_exk_tage', "$row_edit[exk_tage]");
|
||||
$smarty->assign('erf_value_exk_datumvon', "$row_edit[exk_datumvon]");
|
||||
$smarty->assign('erf_value_exk_datumbis', "$row_edit[exk_datumbis]");
|
||||
$smarty->assign('erf_value_exk_beschreibung', "$row_edit[exk_beschreibung]");
|
||||
$smarty->assign('erf_value_exk_stdanreise', "$row_edit[exk_stdanreise]");
|
||||
$smarty->assign('erf_value_exk_stdabreise', "$row_edit[exk_stdabreise]");
|
||||
$smarty->assign('erf_value_std', "$row_edit[std]");
|
||||
$smarty->assign('erf_value_std_default', "$row_edit[std_default]");
|
||||
$smarty->assign('erf_value_hinweise', "$row_edit[hinweise]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["erf_status"] = 'neu';
|
||||
}
|
||||
|
||||
# Alle Veranstaltungsarten
|
||||
$query0 = "SELECT dsgid, bezeichnung
|
||||
FROM dep_kat_studiengang";
|
||||
|
||||
$result0 = $db->query($query0) or die("Cannot execute query0");
|
||||
|
||||
while ($row0 = $result0->fetch_array()) {
|
||||
$table_data0[] = $row0;
|
||||
}
|
||||
$smarty->assign('table_data0', $table_data0);
|
||||
|
||||
|
||||
|
||||
# Alle Veranstaltungsarten
|
||||
$query = "SELECT verid, bezeichnung
|
||||
FROM dep_kat_veranstaltungsart
|
||||
WHERE sonstige = 0";
|
||||
|
||||
$result = $db->query($query) or die("Cannot execute query");
|
||||
|
||||
while ($row = $result->fetch_array()) {
|
||||
$table_data1[] = $row;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
# Alle Teamteachingfaktoren ausgeben
|
||||
$query3 = "SELECT tid, bezeichnung
|
||||
FROM dep_kat_teamteaching";
|
||||
|
||||
$result3 = $db->query($query3) or die("Cannot execute query3");
|
||||
|
||||
while ($row3 = $result3->fetch_array()) {
|
||||
$table_data3[] = $row3;
|
||||
}
|
||||
$smarty->assign('table_data3', $table_data3);
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT did, titel, module, schwerpunkt, dsgid, verid, krankheitsmerkmal, gemlv, anzgemlv, namegemlv, teamteaching, exk_tage, exk_datumvon, exk_datumbis, exk_beschreibung, exk_stdanreise, exk_stdabreise, std, hinweise
|
||||
FROM dep_deputat
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
ORDER BY created desc";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
|
||||
$query_dsgid = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_studiengang
|
||||
WHERE dsgid='$row2[dsgid]'");
|
||||
$row_dsgid = $query_dsgid->fetch_array();
|
||||
|
||||
$query_verid = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_veranstaltungsart
|
||||
WHERE verid='$row2[verid]'");
|
||||
$row_verid = $query_verid->fetch_array();
|
||||
# Wird aktuell nicht mehr im Frontend eingeblendet
|
||||
$query_tid = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_teamteaching
|
||||
WHERE tid='$row2[teamteaching]'");
|
||||
$row_tid = $query_tid->fetch_array();
|
||||
|
||||
if ($row2['gemlv'] == 'J') {
|
||||
$gemlv_form = 'Ja';
|
||||
}
|
||||
if ($row2['gemlv'] == 'N') {
|
||||
$gemlv_form = 'Nein';
|
||||
}
|
||||
# Krankheitsbedingte Merkmale
|
||||
# 0=Keine; 1=LV übernommen; 2=LV nachgeholt
|
||||
if ($row2['krankheitsmerkmal'] == 0) {
|
||||
$krankheitsmerkmal = "keine";
|
||||
}
|
||||
if ($row2['krankheitsmerkmal'] == 1) {
|
||||
$krankheitsmerkmal = "LV übernommen";
|
||||
}
|
||||
if ($row2['krankheitsmerkmal'] == 2) {
|
||||
$krankheitsmerkmal = "LV nachgeholt";
|
||||
}
|
||||
|
||||
|
||||
/* Marix, wann $modul $schwerpunkt oder $titel verwendet wird
|
||||
findet sind in Excel "erfassen_eingabe_felder.xlsx" Tab "Matrix Titel"
|
||||
|
||||
$titel = $_POST['titel'];
|
||||
$module = $_POST['module'];
|
||||
$schwerpunkt = $_POST['schwerpunkt'];
|
||||
*/
|
||||
if ($row2['verid'] == "1" AND ($row2['dsgid'] == "1" or $row2['dsgid'] == "2" or $row2['dsgid'] == "3" or $row2['dsgid'] == "4")) {
|
||||
# In Kombination Vorlesung mit Public Management, Steuer, Rente und Finanz gilt $modul und $titel und $schwerpunkt sind leer
|
||||
$query_vorl = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_studienmodul
|
||||
WHERE dsmid='$row2[module]'");
|
||||
$row_vorl = $query_vorl->fetch_array();
|
||||
$titel = $row_vorl['bezeichnung'];
|
||||
} elseif ($row2['verid'] == 11) {
|
||||
# Bei Schwerpunkt gilt immer $schwerpunkt
|
||||
$query_spt = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_schwerpunkt
|
||||
WHERE dspid='$row2[schwerpunkt]'");
|
||||
$row_spt = $query_spt->fetch_array();
|
||||
$titel = $row_spt['bezeichnung'];
|
||||
} else {
|
||||
# Bei anderen konstellationen gibt es immer $titel
|
||||
$titel = $row2['titel'];
|
||||
}
|
||||
|
||||
$std = number_format($row2['std'], 2, ',', '.');
|
||||
$row2['std'] = $std;
|
||||
$row2['titel'] = $titel;
|
||||
$row2['gemlv_form'] = $gemlv_form;
|
||||
$row2['krankheitsmerkmal'] = $krankheitsmerkmal;
|
||||
$row2['studiengang'] = $row_dsgid['bezeichnung'];
|
||||
$row2['veranstaltung'] = $row_verid['bezeichnung'];
|
||||
$row2['teamteaching_form'] = $row_tid['bezeichnung'];
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(std) summe_jahr
|
||||
FROM dep_deputat
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('erf_value_summe_jahr', $summe_jahr);
|
||||
|
||||
# Exkursionen
|
||||
$query_exkurs = $db->query("SELECT faktor, max_wert FROM `dep_kat_veranstaltungsart` WHERE verid=5");
|
||||
$row_exkurs = $query_exkurs->fetch_array();
|
||||
$faktor = number_format($row_exkurs['faktor'], 2, ',', '.');
|
||||
$max_wert = number_format($row_exkurs['max_wert'], 2, ',', '.');
|
||||
$smarty->assign('erf_value_exk_faktor', $faktor);
|
||||
$smarty->assign('erf_value_exk_max_wert', $max_wert);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if ($action == 'register') {
|
||||
|
||||
#Debug alle get parameter ausgeben
|
||||
#foreach($_POST as $key=>$value)
|
||||
#{
|
||||
# echo $key." -> ".$value."<br>";
|
||||
#}
|
||||
#exit;
|
||||
|
||||
/* Entweder gibt es Titel, Modul aus DB-Katalog oder Schwerpunkt aus DB-Katalog*/
|
||||
|
||||
|
||||
$art = $_POST['art']; # Vorlesung, Übung, Seminar
|
||||
$studiengang = $_POST['studiengang']; # Public Management, Steurverwaltung
|
||||
$anz_ag = $_POST['anz_ag']; # Anzahl der Arbeitsgemeinschaften
|
||||
$krankheit = $_POST['krankheit']; # keine, Lehrveranstaltung übernommen, Lehrveranstaltung nachgeholt
|
||||
$tage_exkursion = $_POST['tage_exkursion']; # Exkursionstage
|
||||
$gemlv = $_POST['gemlv']; # Gemeinsame Lehrveranstaltung J/N
|
||||
$fachlv = $_POST['fachlv']; # fachübergreifende LV
|
||||
$anzgemlv = $_POST['anzgemlv']; # Anzahl der Lehrenden
|
||||
$namegemlv = $_POST['namegemlv']; # Name der Lehrenden
|
||||
$hinweise = $_POST['hinweise']; # Hinweise des Dozenten
|
||||
|
||||
/* Marix, wann $modul $schwerpunkt oder $titel verwendet wird
|
||||
findet sind in Excel "erfassen_eingabe_felder.xlsx" Tab "Matrix Titel"
|
||||
|
||||
$titel = $_POST['titel'];
|
||||
$module = $_POST['module'];
|
||||
$schwerpunkt = $_POST['schwerpunkt'];
|
||||
*/
|
||||
if ($art == "1" AND ($studiengang == "1" or $studiengang == "2" or $studiengang == "3" or $studiengang == "4")) {
|
||||
# In Kombination Vorlesung mit Public Management, Steuer, Rente und Finanz gilt $modul und $titel und $schwerpunkt sind leer
|
||||
$titel = "";
|
||||
$module = $_POST['module'];
|
||||
$schwerpunkt = "";
|
||||
} elseif ($art == 11) {
|
||||
# Bei Schwerpunkt gilt immer $schwerpunkt
|
||||
$titel = "";
|
||||
$module = "";
|
||||
$schwerpunkt = $_POST['schwerpunkt'];
|
||||
} else {
|
||||
# Bei anderen konstellationen gibt es immer $titel
|
||||
$titel = $_POST['titel'];
|
||||
$module = "";
|
||||
$schwerpunkt = "";
|
||||
}
|
||||
|
||||
/* Variablen zu Exkursionen kommen nur bei Exkursionen vor, ansonsten gilt $std
|
||||
|
||||
$exk_datumvon = $_POST['exk_datumvon']; # Datum von Exkursion
|
||||
$exk_datumbis = $_POST['exk_datumbis']; # Datum bis bei mehrtägig
|
||||
$exk_beschreibung = $_POST['exk_beschreibung']; # Beschreibung/Ort Exkursion
|
||||
$exk_stdanreise = $_POST['exk_stdanreise']; # Stunden Exkursion Anreisetag
|
||||
$exk_stdabreise = $_POST['exk_stdabreise']; # Stunden Ankunftstag zu Hause
|
||||
*/
|
||||
if ($art == 5) {
|
||||
if ($tage_exkursion == 1) {
|
||||
# Eintägige Exkursionen
|
||||
|
||||
# Datumsformat von DD.MM.YYYY nach YYYY-MM-DD
|
||||
$exk_datumvon = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['exk_datumvon']);
|
||||
$exk_datumbis = ""; # Datum bis bei mehrtägig
|
||||
|
||||
$exk_beschreibung = $_POST['exk_beschreibung']; # Beschreibung/Ort Exkursion
|
||||
$exk_stdanreise = str_replace(',','.',str_replace('.','', $_POST['exk_stdanreise'])); # Stunden Exkursion Anreisetag
|
||||
$exk_stdabreise = ""; # Stunden Ankunftstag zu Hause bei mehrtögig
|
||||
}
|
||||
if ($tage_exkursion == 2) {
|
||||
# Mehrtägige Exkursionen
|
||||
|
||||
# Datumsformat von DD.MM.YYYY nach YYYY-MM-DD
|
||||
$exk_datumvon = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['exk_datumvon']);
|
||||
$exk_datumbis = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['exk_datumbis']);
|
||||
|
||||
$exk_beschreibung = $_POST['exk_beschreibung']; # Beschreibung/Ort Exkursion
|
||||
$exk_stdanreise = str_replace(',','.',str_replace('.','', $_POST['exk_stdanreise'])); # Stunden Exkursion Anreisetag
|
||||
$exk_stdabreise = str_replace(',','.',str_replace('.','', $_POST['exk_stdabreise'])); # Stunden Ankunftstag zu Hause bei mehrtägig
|
||||
}
|
||||
$std = "";
|
||||
$std_default = "";
|
||||
} else {
|
||||
$std = str_replace(',','.',str_replace('.','', $_POST['std'])); # Summe eigene Lehrstunden (LVS)
|
||||
|
||||
$std_default = $_POST['std_default']; # Verstecktes Feld: Da wird für das Javascript die Basisstunden Erfasst. Bei der Anzahl der Arbeitsgemeinschaften wird die Basiswert mit Anzahl Ags multipliziert. Im hiddenfeld ist immer der Basiswert aus dem Katalog
|
||||
# Exkursionen gibts außerhalb art=5 nicht
|
||||
$exk_datumvon = ""; # Datum von Exkursion
|
||||
$exk_datumbis = ""; # Datum bis bei mehrtägig
|
||||
$exk_beschreibung = ""; # Beschreibung/Ort Exkursion
|
||||
$exk_stdanreise = ""; # Stunden Exkursion Anreisetag
|
||||
$exk_stdabreise = ""; # Stunden Ankunftstag zu Hause bei mehrtögig
|
||||
}
|
||||
|
||||
/* Variablen zu Teamteching setzen
|
||||
Bei fachübergreifende LV gibt es kein Teamteaching und kein Basiswert
|
||||
*/
|
||||
if ($fachlv == 'J') {
|
||||
$basislvsgemlv = ""; # Basiswert der gemeinsamen LV bei nicht fächerübergreifende LV. Damit wird die Gesamtsume mit dem Teachingfaktor multipliziert. Bekommt Doz an der Oberfläche angezeigt. Wert wird nachrichtlich übernommen
|
||||
$teamteaching = ""; # Teachingfaktor
|
||||
} else {
|
||||
$basislvsgemlv = $_POST['basislvsgemlv']; # Basiswert der gemeinsamen LV bei nicht fächerübergreifende LV. Damit wird die Gesamtsume mit dem Teachingfaktor multipliziert. Bekommt Doz an der Oberfläche angezeigt. Wert wird nachrichtlich übernommen
|
||||
$teamteaching = $_POST['teamteaching']; # Teachingfaktor
|
||||
}
|
||||
|
||||
|
||||
$_SESSION["erf_titel"] = $titel;
|
||||
$_SESSION["erf_module"] = $module;
|
||||
$_SESSION["erf_schwerpunkt"] = $schwerpunkt;
|
||||
$_SESSION["erf_art"] = $art;
|
||||
$_SESSION["erf_studiengang"] = $studiengang;
|
||||
$_SESSION["erf_anz_ag"] = $anz_ag;
|
||||
$_SESSION["erf_krankheit"] = $krankheit;
|
||||
$_SESSION["erf_gemlv"] = $gemlv;
|
||||
$_SESSION["erf_fachlv"] = $fachlv;
|
||||
$_SESSION["erf_anzgemlv"] = $anzgemlv;
|
||||
$_SESSION["erf_namegemlv"] = $namegemlv;
|
||||
$_SESSION["erf_basislvsgemlv"] = $basislvsgemlv;
|
||||
$_SESSION["erf_teamteaching"] = $teamteaching;
|
||||
$_SESSION["erf_tage_exkursion"] = $tage_exkursion;
|
||||
$_SESSION["erf_exk_datumvon"] = $_POST['exk_datumvon'];
|
||||
$_SESSION["erf_exk_datumbis"] = $_POST['exk_datumbis'];
|
||||
$_SESSION["erf_exk_beschreibung"] = $exk_beschreibung;
|
||||
$_SESSION["erf_exk_stdanreise"] = $exk_stdanreise;
|
||||
$_SESSION["erf_exk_stdabreise"] = $exk_stdabreise;
|
||||
$_SESSION["erf_std"] = $std;
|
||||
$_SESSION["erf_std_default"] = $std_default;
|
||||
$_SESSION["erf_hinweise"] = $hinweise;
|
||||
|
||||
|
||||
|
||||
|
||||
# Bei Art == 11 (Schwerpunktthema) darf $module nicht leer sein
|
||||
# Bei Art == 1 (Vorlesung) darf $schwerpunkt nicht leer sein
|
||||
# Bei allen anderen Darf Titel nicht leer sein
|
||||
|
||||
if ($art == 11 AND $schwerpunkt == '') {
|
||||
# echo "1";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
|
||||
} elseif ($art == 1 AND $module == '') {
|
||||
/*Bei Vorlesungen wird normalerweise das Modul eingeblendet, außer bei den Masterstudengaengen, da wird Titel eingeblendet
|
||||
Bei Master darf Titel nicht leer sein,
|
||||
Bei allen anderen das Modul nicht leer*/
|
||||
if($studiengang == "5" or $studiengang == "6"){
|
||||
if($titel == ''){
|
||||
# echo "2a";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}
|
||||
}else{
|
||||
if($module == ''){
|
||||
# echo "2b";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} elseif (($art != 11 AND $art != 1) AND $titel == '') {
|
||||
# echo "3";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
} elseif ($studiengang == '' or $art == '' or $gemlv == '' or $studiengang == '' AND ($titel or $module == '' or $schwerpunkt == '')) {
|
||||
# echo "4";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}elseif ($art != 5 AND $std == ''){
|
||||
# echo "4a";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
# Konstellationen prüfen:
|
||||
# Bei fachübergreifende LV müssen zumindest Anzahl und Name der Lehrenden ausgefüllt sein
|
||||
if ($gemlv == 'J' AND $fachlv == 'J' AND ($anzgemlv == '' or $namegemlv == '')) {
|
||||
#echo "5";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Bei NICHT fachübergreifende LV müssen zumindest Anzahl, Name, Basiswert und Teamteachingfaktor der Lehrenden ausgefüllt sein
|
||||
if ($gemlv == 'J' AND $fachlv == 'N' AND ($anzgemlv == '' or $namegemlv == '' or $namegemlv == '' or $basislvsgemlv == '' or $teamteaching == '')) {
|
||||
#echo "6";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Fehler bei Exkursion
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d'){
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if ($tage_exkursion == 1 AND $art == 5) {
|
||||
#Eintägig
|
||||
if(!validateDate($exk_datumvon)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($exk_datumvon == '' or $exk_datumvon == '0000-00-00' or $exk_beschreibung == '' or $exk_stdanreise == '') {
|
||||
# Fehler bei leeren Felder
|
||||
#echo "7";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
} else {
|
||||
# LVS berechnen
|
||||
$std = lvs_exk_eintaegig($exk_stdanreise);
|
||||
}
|
||||
}
|
||||
|
||||
if ($tage_exkursion == 2 AND $art == 5) {
|
||||
#Mehrtägig
|
||||
if(!validateDate($exk_datumvon)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($exk_datumbis)){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($exk_datumvon == '' or $exk_datumvon == '0000-00-00' or $exk_datumbis == '' or $exk_datumbis == '0000-00-00'or $exk_beschreibung == '' or $exk_stdanreise == '' or $exk_stdabreise == '') {
|
||||
# Fehler bei leeren Felder
|
||||
#echo "8";
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
} else {
|
||||
# LVS berechnen
|
||||
$std = lvs_exk_mehrtaegig($exk_stdanreise, $exk_stdabreise, $exk_datumvon, $exk_datumbis);
|
||||
}
|
||||
}
|
||||
|
||||
# Defaultwert (checked) beim Laden der Seite soll nicht übernommen werden, wenn es keine Exkursion ist
|
||||
if ($art != 5) {
|
||||
$tage_exkursion = 0;
|
||||
}
|
||||
|
||||
# Maximaler Anzahl der Extracurricularen Klausurenkurse prüfen. Derzeit 30 LVS -> Parameterwert 6
|
||||
if ($art == 6) {
|
||||
# Ausgabe Anzahl der max LVS für extracurriculare Klausurenkurs pro Jahr
|
||||
$query_extracur = $db->query("SELECT wert1
|
||||
FROM dep_parameter
|
||||
WHERE pid =6");
|
||||
$row_extracur = $query_extracur->fetch_array();
|
||||
$summe_extracur = number_format($row_extracur['wert1'], 1);
|
||||
|
||||
# Wie viele Stunden sind bereits im aktuellen Jahr gebucht
|
||||
$query_sumcurr = $db->query("SELECT sum(std) summe_jahr
|
||||
FROM dep_deputat
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND verid=6");
|
||||
$row_sumcurr = $query_sumcurr->fetch_array();
|
||||
|
||||
# vorhandene Summe + die aktuell eingegeben Stundenzahl darf Maximalwert nicht überschreiten
|
||||
$summecurr_neu = $row_sumcurr['summe_jahr'] + $std;
|
||||
if ($summecurr_neu > $summe_extracur) {
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2&summecurr=$row_sumcurr[summe_jahr]\">";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
## Im Fehlerfall muss ursprüngliche Bildschirm wieder angezeigt weden
|
||||
# Zu achten auf Studiengang / Vorlesung Kombination
|
||||
# Bei Art=Schwerpunktthema, müssen die richtigen schwerpunktthemen eingeblendet werden
|
||||
# Bei Exkursionen müssen die Felder für ein/mehrtägige Exkursionen eingeblendet werden
|
||||
#echo "alles richtig";
|
||||
#exit;
|
||||
|
||||
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["erf_status"] == 'neu') {
|
||||
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat ( imtuid
|
||||
, jahr
|
||||
, titel
|
||||
, module
|
||||
, schwerpunkt
|
||||
, dsgid
|
||||
, verid
|
||||
, anz_ag
|
||||
, krankheitsmerkmal
|
||||
, gemlv
|
||||
, fachlv
|
||||
, anzgemlv
|
||||
, namegemlv
|
||||
, basislvsgemlv
|
||||
, teamteaching
|
||||
, exk_tage
|
||||
, exk_datumvon
|
||||
, exk_datumbis
|
||||
, exk_beschreibung
|
||||
, exk_stdanreise
|
||||
, exk_stdabreise
|
||||
, std
|
||||
, std_default
|
||||
, hinweise
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, '$titel'
|
||||
, '$module'
|
||||
, '$schwerpunkt'
|
||||
, '$studiengang'
|
||||
, '$art'
|
||||
, '$anz_ag'
|
||||
, '$krankheit'
|
||||
, '$gemlv'
|
||||
, '$fachlv'
|
||||
, '$anzgemlv'
|
||||
, '$namegemlv'
|
||||
, '$basislvsgemlv'
|
||||
, '$teamteaching'
|
||||
, '$tage_exkursion'
|
||||
, '$exk_datumvon'
|
||||
, '$exk_datumbis'
|
||||
, '$exk_beschreibung'
|
||||
, '$exk_stdanreise'
|
||||
, '$exk_stdabreise'
|
||||
, '$std'
|
||||
, '$std_default'
|
||||
, '$hinweise'
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["erf_status"] == 'edit') {
|
||||
$did = $_SESSION["erf_did"];
|
||||
$result = $db->query("UPDATE dep_deputat
|
||||
SET titel = '$titel'
|
||||
, module = '$module'
|
||||
, schwerpunkt = '$schwerpunkt'
|
||||
, dsgid = '$studiengang'
|
||||
, verid = '$art'
|
||||
, anz_ag = '$anz_ag'
|
||||
, krankheitsmerkmal = '$krankheit'
|
||||
, gemlv = '$gemlv'
|
||||
, fachlv = '$fachlv'
|
||||
, anzgemlv = '$anzgemlv'
|
||||
, namegemlv = '$namegemlv'
|
||||
, basislvsgemlv = '$basislvsgemlv'
|
||||
, teamteaching = '$teamteaching'
|
||||
, exk_tage = '$tage_exkursion'
|
||||
, exk_datumvon = '$exk_datumvon'
|
||||
, exk_datumbis = '$exk_datumbis'
|
||||
, exk_beschreibung = '$exk_beschreibung'
|
||||
, exk_stdanreise = '$exk_stdanreise'
|
||||
, exk_stdabreise = '$exk_stdabreise'
|
||||
, std = '$std'
|
||||
, std_default = '$std_default'
|
||||
, hinweise = '$hinweise'
|
||||
, modify_date = '$datum'
|
||||
WHERE did = $did
|
||||
");
|
||||
|
||||
unset($_SESSION['erf_did']);
|
||||
}
|
||||
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende&new=1\">";
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'del') {
|
||||
$did = $_GET['did'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
|
||||
$del1 = $db->query("DELETE FROM dep_deputat WHERE did = $did AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
333
erfassen_sonstige.php
Executable file
333
erfassen_sonstige.php
Executable file
@ -0,0 +1,333 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
# Prüfen ob der Jahrgang schon abgeschlossen wurde, dann soll der Button "Abschließen und absenden" ausgeblendet werden
|
||||
$query_closed = $db->query("SELECT count(*) Anz
|
||||
FROM dep_doz_abschluss
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang");
|
||||
$row_closed = $query_closed->fetch_array();
|
||||
|
||||
if ($row_closed['Anz'] > 0) {
|
||||
$smarty->assign('erfs_abschluss', 1);
|
||||
$smarty->assign('erfs_error', 1);
|
||||
$smarty->assign('erfs_error_text', 'Der aktuelle Jahrgang ist bereits abgeschlossen!');
|
||||
} else {
|
||||
$smarty->assign('erfs_abschluss', 0);
|
||||
} // Jahrgang abgeschlossen
|
||||
|
||||
# Ausgabe Anzahl der max LVS für extracurriculare Klausurenkurs pro Jahr
|
||||
# $query_extracur = $db->query("SELECT wert1, wert2
|
||||
# FROM dep_parameter
|
||||
# WHERE pid =6");
|
||||
# $row_extracur = $query_extracur->fetch_array();
|
||||
# $summe_extracur = number_format($row_extracur['wert1'], 0);
|
||||
# $einheit_extracur = $row_extracur['wert2'];
|
||||
# $smarty->assign('abschluss_value_max_extracur', $summe_extracur);
|
||||
# $smarty->assign('abschluss_einheit_max_extracur', $einheit_extracur);
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('erfs_error', 1);
|
||||
|
||||
$smarty->assign('erfs_value_titel', $_SESSION["erfs_titel"]);
|
||||
$smarty->assign('erfs_value_art', $_SESSION["erfs_art"]);
|
||||
$smarty->assign('erfs_value_std', $_SESSION["erfs_std"]);
|
||||
$smarty->assign('erfs_value_hinweise', $_SESSION["erfs_hinweise"]);
|
||||
|
||||
if ($errorno == 1) {
|
||||
$smarty->assign('erfs_error_text', "Es müssen alle aktiven Felder (ausgenommen dem Hinweisfeld) ausgefüllt werden! ");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["erfs_status"] = 'edit';
|
||||
$dsid = $_GET['edit'];
|
||||
$_SESSION["erfs_dsid"] = $dsid;
|
||||
} else {
|
||||
$_SESSION["erfs_status"] = 'neu';
|
||||
}
|
||||
|
||||
# Defaultwert bei Krankheitsbedingten Merkmale:
|
||||
$smarty->assign('erfs_value_krankheit', "0");
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["erfs_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT dsid, titel, verid, lvs, hinweise
|
||||
FROM dep_deputat_sonstige
|
||||
WHERE dsid = $dsid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('erfs_value_titel', "$row_edit[titel]");
|
||||
$smarty->assign('erfs_value_art', "$row_edit[verid]");
|
||||
$smarty->assign('erfs_value_std', "$row_edit[lvs]");
|
||||
$smarty->assign('erfs_value_hinweise', "$row_edit[hinweise]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["erfs_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# Alle Veranstaltungsarten
|
||||
$query = "SELECT verid, bezeichnung
|
||||
FROM dep_kat_veranstaltungsart
|
||||
WHERE sonstige = 1";
|
||||
|
||||
$result = $db->query($query) or die("Cannot execute query1");
|
||||
|
||||
while ($row = $result->fetch_array()) {
|
||||
$table_data1[] = $row;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
# Alle Teamteachingfaktoren ausgeben
|
||||
$query3 = "SELECT tid, bezeichnung
|
||||
FROM dep_kat_teamteaching";
|
||||
|
||||
$result3 = $db->query($query3) or die("Cannot execute query3");
|
||||
|
||||
while ($row3 = $result3->fetch_array()) {
|
||||
$table_data3[] = $row3;
|
||||
}
|
||||
$smarty->assign('table_data3', $table_data3);
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT dsid, titel, verid, lvs, hinweise
|
||||
FROM dep_deputat_sonstige
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
ORDER BY verid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
|
||||
$query_verid = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_veranstaltungsart
|
||||
WHERE verid='$row2[verid]'");
|
||||
$row_verid = $query_verid->fetch_array();
|
||||
|
||||
# Wird aktuell nicht mehr im Frontend eingeblendet
|
||||
$query_tid = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_teamteaching
|
||||
WHERE tid='$row2[teamteaching]'");
|
||||
$row_tid = $query_tid->fetch_array();
|
||||
|
||||
if ($row2['gemlv'] == 'J') {
|
||||
$gemlv_form = 'Ja';
|
||||
}
|
||||
if ($row2['gemlv'] == 'N') {
|
||||
$gemlv_form = 'Nein';
|
||||
}
|
||||
# Krankheitsbedingte Merkmale
|
||||
# 0=Keine; 1=LV übernommen; 2=LV nachgeholt
|
||||
if ($row2['krankheitsmerkmal'] == 0) {
|
||||
$krankheitsmerkmal = "keine";
|
||||
}
|
||||
if ($row2['krankheitsmerkmal'] == 1) {
|
||||
$krankheitsmerkmal = "LV übernommen";
|
||||
}
|
||||
if ($row2['krankheitsmerkmal'] == 2) {
|
||||
$krankheitsmerkmal = "LV nachgeholt";
|
||||
}
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['gemlv_form'] = $gemlv_form;
|
||||
$row2['krankheitsmerkmal'] = $krankheitsmerkmal;
|
||||
$row2['veranstaltung'] = $row_verid['bezeichnung'];
|
||||
$row2['teamteaching_form'] = $row_tid['bezeichnung'];
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_sonstige
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('erfs_value_summe_jahr', $summe_jahr);
|
||||
|
||||
# Exkursionen
|
||||
$query_exkurs = $db->query("SELECT faktor, max_wert FROM `dep_kat_veranstaltungsart` WHERE verid=5");
|
||||
$row_exkurs = $query_exkurs->fetch_array();
|
||||
$faktor = number_format($row_exkurs['faktor'], 2, ',', '.');
|
||||
$max_wert = number_format($row_exkurs['max_wert'], 2, ',', '.');
|
||||
$smarty->assign('erfs_value_exk_faktor', $faktor);
|
||||
$smarty->assign('erfs_value_exk_max_wert', $max_wert);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if ($action == 'register') {
|
||||
|
||||
$titel = $_POST['titel'];
|
||||
$art = $_POST['art'];
|
||||
$std = str_replace(',','.',str_replace('.','', $_POST['std']));
|
||||
$hinweise = $_POST['hinweise'];
|
||||
|
||||
|
||||
$_SESSION["erfs_titel"] = $titel;
|
||||
$_SESSION["erfs_art"] = $art;
|
||||
$_SESSION["erfs_std"] = $std;
|
||||
$_SESSION["erfs_hinweise"] = $hinweise;
|
||||
|
||||
# if ($art != 5 AND ($titel == '' or $art == '' or $gemlv == '' or $std == '')) {
|
||||
if ($titel == '' or $art == '' or $std == '') {
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
/*
|
||||
if ($gemlv == 'J' AND ($anzgemlv == '' or $massgemlv == '' or $namegemlv == '' or $teamteaching == '')) {
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Fehler bei Exkursion
|
||||
if ($tage_exkursion == 1 AND $art == 5) {
|
||||
#Eintägig
|
||||
if ($exk_datumvon == '' or $exk_beschreibung == '' or $exk_stdanreise == '') {
|
||||
# Fehler bei leeren Felder
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
} else {
|
||||
# LVS berechnen
|
||||
$std = lvs_exk_eintaegig($exk_stdanreise);
|
||||
}
|
||||
}
|
||||
|
||||
if ($tage_exkursion == 2 AND $art == 5) {
|
||||
#Mehrtägig
|
||||
if ($exk_datumvon == '' or $exk_datumbis == '' or $exk_beschreibung == '' or $exk_stdanreise == '' or $exk_stdabreise == '') {
|
||||
# Fehler bei leeren Felder
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
exit;
|
||||
} else {
|
||||
# LVS berechnen
|
||||
$std = lvs_exk_mehrtaegig($exk_stdanreise, $exk_stdabreise, $exk_datumvon, $exk_datumbis);
|
||||
}
|
||||
}
|
||||
|
||||
# Defaultwert (checked) beim Laden der Seite soll nicht übernommen werden, wenn es keine Exkursion ist
|
||||
if ($art != 5) {
|
||||
$tage_exkursion = 0;
|
||||
}
|
||||
|
||||
# Maximaler Anzahl der Extracurricularen Klausurenkurse prüfen. Derzeit 30 LVS -> Parameterwert 6
|
||||
if ($art == 6) {
|
||||
# Ausgabe Anzahl der max LVS für extracurriculare Klausurenkurs pro Jahr
|
||||
$query_extracur = $db->query("SELECT wert1
|
||||
FROM dep_parameter
|
||||
WHERE pid =6");
|
||||
$row_extracur = $query_extracur->fetch_array();
|
||||
$summe_extracur = number_format($row_extracur['wert1'], 1);
|
||||
|
||||
# Wie viele Stunden sind bereits im aktuellen Jahr gebucht
|
||||
$query_sumcurr = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_sonstige
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND verid=6");
|
||||
$row_sumcurr = $query_sumcurr->fetch_array();
|
||||
|
||||
# vorhandene Summe + die aktuell eingegeben Stundenzahl darf Maximalwert nicht überschreiten
|
||||
$summecurr_neu = $row_sumcurr['summe_jahr'] + $std;
|
||||
if ($summecurr_neu > $summe_extracur) {
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2&summecurr=$row_sumcurr[summe_jahr]\">";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["erfs_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_sonstige ( imtuid
|
||||
, jahr
|
||||
, titel
|
||||
, verid
|
||||
, lvs
|
||||
, hinweise
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, '$titel'
|
||||
, '$art'
|
||||
, '$std'
|
||||
, '$hinweise'
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["erfs_status"] == 'edit') {
|
||||
$dsid = $_SESSION["erfs_dsid"];
|
||||
$result = $db->query("UPDATE dep_deputat_sonstige
|
||||
SET titel = '$titel'
|
||||
, verid = '$art'
|
||||
, lvs = '$std'
|
||||
, hinweise = '$hinweise'
|
||||
, modify_date = '$datum'
|
||||
WHERE dsid = $dsid
|
||||
");
|
||||
|
||||
unset($_SESSION['erfs_dsid']);
|
||||
}
|
||||
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'del') {
|
||||
$dsid = $_GET['dsid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_sonstige WHERE dsid = $dsid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
272
erm_abordnung.php
Executable file
272
erm_abordnung.php
Executable file
@ -0,0 +1,272 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Gespeicherte Funktionen
|
||||
$query1 = "SELECT dkeid, bezeichnung, grundlage
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE grundlage IN ('Forschungssemester/Praxissemester/Abordnungen')
|
||||
ORDER BY dkeid ASC";
|
||||
|
||||
$result1 = $db->query($query1) or die("Cannot execute query2");
|
||||
|
||||
while ($row1 = $result1->fetch_array()) {
|
||||
$table_data1[] = $row1;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["abord_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["abord_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["abord_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('abord_error', 1);
|
||||
|
||||
$smarty->assign('abord_value_funktion', $_SESSION["abord_value_funktion"]);
|
||||
$smarty->assign('abord_value_std', $_SESSION["abord_value_sws"]);
|
||||
$smarty->assign('abord_value_datumvon', $_SESSION["abord_value_beginn_funktion"]);
|
||||
$smarty->assign('abord_value_datumbis', $_SESSION["abord_value_ende_funktion"]);
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('abord_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('abord_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["abord_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('abord_status', $_SESSION["abord_status"]);
|
||||
$smarty->assign('abord_value_funktion', "$row_edit[funktion]");
|
||||
$smarty->assign('abord_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('abord_value_datumbis', "$row_edit[ende]");
|
||||
$smarty->assign('abord_value_std', "$row_edit[sws]");
|
||||
$smarty->assign('abord_value_hinweise', "$row_edit[lvs]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["abord_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art LIKE '%Forschungssemester/Praxissemester/Abordnungen%'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$query_funktion = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE dkeid = '$row2[funktion]'");
|
||||
$row_funktion = $query_funktion->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['funktion'] = $row_funktion['bezeichnung'];
|
||||
$sws = number_format($row2['sws'], 2, ',', '.');
|
||||
$row2['sws'] = $sws;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art LIKE '%Forschungssemester/Praxissemester/Abordnungen%'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('abord_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
#$funktion = $_POST['funktion'];
|
||||
#$sws = str_replace(',','.',str_replace('.','', $_POST['sws']));
|
||||
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_funktion']);
|
||||
if($beginn == ''){
|
||||
$beginn = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_funktion']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
|
||||
#$_SESSION["abord_value_funktion"] = $funktion;
|
||||
#$_SESSION["abord_value_sws"] = $sws;
|
||||
$_SESSION["abord_value_beginn_funktion"] = $_POST['beginn_funktion'];
|
||||
$_SESSION["abord_value_ende_funktion"] = $_POST['ende_funktion'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
if($_SESSION["abord_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[abord_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
if($_SESSION["abord_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[abord_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/* Ermäßigungen werden immer nur ganze Monate vergeben*/
|
||||
$year_start = substr($beginn,0,4);
|
||||
$mon_start = substr($beginn,5,2);
|
||||
$day_start = '01'; #substr($beginn,8,2);
|
||||
$save_beginn = "$year_start-$mon_start-$day_start";
|
||||
|
||||
|
||||
# Ende ist immer Monatsletzter des angegebenen Monats
|
||||
$year_ende = substr($ende,0,4);
|
||||
$mon_ende = substr($ende,5,2);
|
||||
$day_ende = '01'; #substr($ende,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus
|
||||
$save_ende = "$year_ende-$mon_ende-$day_ende";
|
||||
$L = new DateTime( $save_ende);
|
||||
$save_ende = $L->format( 'Y-m-t' );
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
if(strtotime($save_beginn) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_beginn) < strtotime("$jahrgang-09-01") OR
|
||||
strtotime($save_ende) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_ende) < strtotime("$jahrgang-09-01")
|
||||
){
|
||||
if($_SESSION["abord_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[abord_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$lvs = $_POST['lvs'];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["abord_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, funktion
|
||||
, beginn
|
||||
, ende
|
||||
, sws
|
||||
, lvs
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Deputatsermäßigung aufgrund Forschungssemester/Praxissemester/Abordnungen'
|
||||
, ''
|
||||
, '$save_beginn'
|
||||
, '$ende'
|
||||
, ''
|
||||
, ''
|
||||
, 2
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["abord_status"] == 'edit') {
|
||||
$deid = $_SESSION["abord_deid"];
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET beginn = '$save_beginn'
|
||||
, ende = '$ende'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['abord_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
230
erm_abw_lehrbedarf.php
Executable file
230
erm_abw_lehrbedarf.php
Executable file
@ -0,0 +1,230 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["abwlehrb_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["abwlehrb_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["abwlehrb_status"] = 'neu';
|
||||
}
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('abwlehrb_error', 1);
|
||||
|
||||
$smarty->assign('abwlehrb_value_std', $_SESSION["abwlehrb_value_lvs"]);
|
||||
$smarty->assign('abwlehrb_value_befristung_bis', $_SESSION["abwlehrb_value_befristung_bis"]);
|
||||
|
||||
if ($errorno == 2) {
|
||||
# mehrere Abweichende Lehrbedarfe
|
||||
$smarty->assign('abwlehrb_error_text', "Es kann nur eine Abweichung eingegeben werden!");
|
||||
}
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('abwlehrb_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('abwlehrb_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["abwlehrb_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, beantragung
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('abwlehrb_value_befristung_bis', "$row_edit[ende]");
|
||||
$smarty->assign('abwlehrb_value_std', "$row_edit[beantragung]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["abwlehrb_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, funktion, date_format(ende, '%d.%m.%Y') ende, beantragung
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art LIKE '%Abweichender Lehrbedarf%'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$lvs = number_format($row2['beantragung'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art LIKE '%Abweichender Lehrbedarf%'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('abwlehrb_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$lvs = str_replace(',','.',str_replace('.','', $_POST['lvs']));
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['befristung_bis']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
|
||||
$_SESSION["abwlehrb_value_befristung_bis"] = $_POST['befristung_bis'];
|
||||
$_SESSION["abwlehrb_value_lvs"] = $lvs;
|
||||
|
||||
$query_anz = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art LIKE '%Abweichender Lehrbedarf%'
|
||||
AND jahr=$jahrgang");
|
||||
$row_anz = $query_anz->fetch_array();
|
||||
if($row_anz['Anz' > 1] AND $_SESSION["abwlehrb_status"] == 'neu'){
|
||||
if($_SESSION["abwlehrb_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2&edit=$_SESSION[abwlehrb_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
if($_SESSION["abwlehrb_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[abwlehrb_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
# Ende ist immer Monatsletzter des angegebenen Monats
|
||||
#$year_ende = substr($ende,0,4);
|
||||
#$mon_ende = substr($ende,5,2);
|
||||
#$day_ende = '01'; #substr($ende,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus
|
||||
#$save_ende = "$year_ende-$mon_ende-$day_ende";
|
||||
#$L = new DateTime( $save_ende);
|
||||
#$save_ende = $L->format( 'Y-m-t' );
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
#echo strtotime($save_ende) ." > ". strtotime("$jahrgang2-08-31")."<br>";
|
||||
#echo strtotime($save_ende) ." < ". strtotime("$jahrgang-09-01")."<br>";
|
||||
#exit;
|
||||
if(strtotime($ende) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($ende) < strtotime("$jahrgang-09-01")
|
||||
){
|
||||
if($_SESSION["abwlehrb_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[abwlehrb_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["abwlehrb_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, ende
|
||||
, beantragung
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Abweichender Lehrbedarf'
|
||||
, '$ende'
|
||||
, '$lvs'
|
||||
, 9
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["abwlehrb_status"] == 'edit') {
|
||||
$deid = $_SESSION["abwlehrb_deid"];
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET ende = '$ende'
|
||||
, beantragung='$lvs'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['abwlehrb_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
285
erm_behinderung.php
Executable file
285
erm_behinderung.php
Executable file
@ -0,0 +1,285 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_teilzeit.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('beh_error', 1);
|
||||
|
||||
$smarty->assign('beh_value_behinderungsgrad', $_SESSION["beh_behinderungsgrad"]*100);
|
||||
|
||||
|
||||
if ($errorno == 1) {
|
||||
$smarty->assign('beh_error_text', "Es muß die prozentuale Ermäßigung angegeben werden! ");
|
||||
}
|
||||
if ($errorno == 2) {
|
||||
$smarty->assign('beh_error_text', "Der Behinderungsgrad muss zwischen 0 und 100% liegen! ");
|
||||
}
|
||||
if ($errorno == 3) {
|
||||
$smarty->assign('beh_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
if ($errorno == 4) {
|
||||
$smarty->assign('beh_error_text', "Das Datum ist bereits vorhanden!<br>Bearbeiten Sie ggf. das vorhandene Datum mit dem Bleistiftsymbol.");
|
||||
}
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('beh_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
if ($errorno == 6) {
|
||||
$smarty->assign('beh_error_text', "Wenn eine Teilzeit erfasst wurde, darf keine Schwerbehinderung erfasst werden.<br> Setzen Sie sich mit dem Administrator in Verbindung, <b>sobald Sie das aktuelle Jahr abgeschlossen haben.</b>");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["beh_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["beh_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["beh_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["beh_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, date_format(beginn, '%d.%m.%Y') beginn, prozent*100 behinderungsgrad
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('beh_value_behinderungsgrad', "$row_edit[behinderungsgrad]");
|
||||
$smarty->assign('beh_value_beginn', "$row_edit[beginn]");
|
||||
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["beh_status"] = 'neu';
|
||||
}
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, date_format(beginn, '%d.%m.%Y') beginn_form, prozent behinderungsgrad, beginn
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art = 'Schwerbehinderung'
|
||||
AND jahr=$jahrgang
|
||||
ORDER BY beginn ASC";
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2:<br>$query2<br>");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$behinderungsgrad = number_format($row2['behinderungsgrad']*100, 1, ',', '.');
|
||||
$row2['behinderungsgrad'] = $behinderungsgrad;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$behinderungsgrad = str_replace(',','.',str_replace('.','', $_POST['behinderung']))/100;
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_behinderung']);
|
||||
|
||||
$_SESSION["beh_behinderungsgrad"] = $behinderungsgrad;
|
||||
$_SESSION["beh_beginn"] = $_POST['beginn_behinderung'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if ($_POST['behinderung'] == "" ) {
|
||||
if($_SESSION["beh_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1&edit=$_SESSION[beh_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($behinderungsgrad < 0 or $behinderungsgrad > 1 ) {
|
||||
# Außerhalb den Werten
|
||||
if($_SESSION["beh_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2&edit=$_SESSION[beh_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
if($_SESSION["beh_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[beh_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
/* Schwerbehinderungen werden immer nur ganze Monate vergeben*/
|
||||
$year_start = substr($beginn,0,4);
|
||||
$mon_start = substr($beginn,5,2);
|
||||
$day_start = '01'; #substr($beginn,8,2);
|
||||
$save_beginn = "$year_start-$mon_start-$day_start";
|
||||
# Doppeltes Datum prüfen
|
||||
$query_beginndop = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE beginn = '$save_beginn'
|
||||
AND imtuid = $uid
|
||||
AND art = 'Schwerbehinderung'");
|
||||
$row_beginndop = $query_beginndop->fetch_array();
|
||||
if($row_beginndop['Anz'] > 0 AND $_SESSION["beh_status"] != 'edit'){
|
||||
if($_SESSION["beh_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=4\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=4&edit=$_SESSION[beh_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
if(strtotime($save_beginn) > strtotime("$jahrgang2-08-31") OR strtotime($save_beginn) < strtotime("$jahrgang-09-01")){
|
||||
if($_SESSION["beh_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[beh_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$result_beh = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahrgang'
|
||||
AND art = 'Teilzeit'
|
||||
AND imtuid=$uid
|
||||
AND prozent < 1");
|
||||
$row_beh = $result_beh->fetch_array();
|
||||
if($row_beh['Anz']>0){
|
||||
if($_SESSION["beh_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=6\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=6&edit=$_SESSION[beh_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
# Datum nach Schulnahrbeginn > 01.09, dann wird 100% zugrunde gelegt ab 01.09
|
||||
# Prüfen, ob ein Datum ab 01.09. vorliegt
|
||||
|
||||
#$beginn = $jahrgang."-09-01";
|
||||
#$query_beginn = $db->query("SELECT count(*) Anz
|
||||
# FROM dep_deputat_ermaessigung
|
||||
# WHERE beginn = '$beginn'
|
||||
# AND imtuid = $uid
|
||||
# AND art = 'Schwerbehinderung'");
|
||||
#$row_beginn = $query_beginn->fetch_array();
|
||||
|
||||
#if($row_beginn['Anz'] == 0 AND $beginn != $save_beginn){
|
||||
|
||||
## Wenn er zu kein beginn erfasst hat und dies auch aktuell nicht vor hat, dann Startwert auf 0 % setzen. Prof kann den Wert nachträglich bearbeiten
|
||||
# $sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( jahr
|
||||
# , beginn
|
||||
# , imtuid
|
||||
# , art
|
||||
# , prozent
|
||||
# , sort_order
|
||||
# , created
|
||||
# )
|
||||
# VALUES
|
||||
# ( '$jahrgang'
|
||||
# , '$beginn'
|
||||
# , '$uid'
|
||||
# , 'Schwerbehinderung'
|
||||
# , '0'
|
||||
# , 3
|
||||
# , '$datum'
|
||||
# )
|
||||
# ");
|
||||
#
|
||||
#}
|
||||
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["beh_status"] == 'neu') {
|
||||
|
||||
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( jahr
|
||||
, imtuid
|
||||
, art
|
||||
, beginn
|
||||
, prozent
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$jahrgang'
|
||||
, '$uid'
|
||||
, 'Schwerbehinderung'
|
||||
, '$save_beginn'
|
||||
, '$behinderungsgrad'
|
||||
, 3
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($_SESSION["beh_status"] == 'edit') {
|
||||
$deid = $_SESSION["beh_deid"];
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET beginn = '$save_beginn'
|
||||
, prozent = '$behinderungsgrad'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
}
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
276
erm_freist_forschung.php
Executable file
276
erm_freist_forschung.php
Executable file
@ -0,0 +1,276 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Gespeicherte Funktionen
|
||||
$query1 = "SELECT dkeid, bezeichnung, grundlage
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE grundlage IN ('§ 2 Abs. 8, 9 LVVO')
|
||||
ORDER BY dkeid ASC";
|
||||
|
||||
$result1 = $db->query($query1) or die("Cannot execute query2");
|
||||
|
||||
while ($row1 = $result1->fetch_array()) {
|
||||
$table_data1[] = $row1;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["freistrekto_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["freistrekto_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('freistrekto_error', 1);
|
||||
|
||||
$smarty->assign('freistrekto_value_funktion', $_SESSION["freistrekto_value_funktion"]);
|
||||
$smarty->assign('freistrekto_value_std', $_SESSION["freistrekto_value_sws"]);
|
||||
$smarty->assign('freistrekto_value_datumvon', $_SESSION["freistrekto_value_beginn_funktion"]);
|
||||
$smarty->assign('freistrekto_value_datumbis', $_SESSION["freistrekto_value_ende_funktion"]);
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('freistrekto_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('freistrekto_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('freistrekto_status', $_SESSION["freistrekto_status"]);
|
||||
$smarty->assign('freistrekto_value_funktion', "$row_edit[funktion]");
|
||||
$smarty->assign('freistrekto_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('freistrekto_value_datumbis', "$row_edit[ende]");
|
||||
$smarty->assign('freistrekto_value_std', "$row_edit[sws]");
|
||||
$smarty->assign('freistrekto_value_hinweise', "$row_edit[lvs]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art LIKE '%§ 2 Abs. 8, 9 LVVO%'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$query_funktion = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE dkeid = '$row2[funktion]'");
|
||||
$row_funktion = $query_funktion->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['funktion'] = $row_funktion['bezeichnung'];
|
||||
$sws = number_format($row2['sws'], 2, ',', '.');
|
||||
$row2['sws'] = $sws;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art LIKE '%§ 2 Abs. 8, 9 LVVO%'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('freistrekto_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$funktion = $_POST['funktion'];
|
||||
$sws = str_replace(',','.',str_replace('.','', $_POST['sws']));
|
||||
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_funktion']);
|
||||
if($beginn == ''){
|
||||
$beginn = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_funktion']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
|
||||
|
||||
$_SESSION["freistrekto_value_funktion"] = $funktion;
|
||||
$_SESSION["freistrekto_value_sws"] = $sws;
|
||||
$_SESSION["freistrekto_value_beginn_funktion"] = $_POST['beginn_funktion'];
|
||||
$_SESSION["freistrekto_value_ende_funktion"] = $_POST['ende_funktion'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/* Ermäßigungen werden immer nur ganze Monate vergeben*/
|
||||
$year_start = substr($beginn,0,4);
|
||||
$mon_start = substr($beginn,5,2);
|
||||
$day_start = '01'; #substr($beginn,8,2);
|
||||
$save_beginn = "$year_start-$mon_start-$day_start";
|
||||
|
||||
|
||||
# Ende ist immer Monatsletzter des angegebenen Monats
|
||||
$year_ende = substr($ende,0,4);
|
||||
$mon_ende = substr($ende,5,2);
|
||||
$day_ende = '01'; #substr($ende,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus
|
||||
$save_ende = "$year_ende-$mon_ende-$day_ende";
|
||||
$L = new DateTime( $save_ende);
|
||||
$save_ende = $L->format( 'Y-m-t' );
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
if(strtotime($save_beginn) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_beginn) < strtotime("$jahrgang-09-01") OR
|
||||
strtotime($save_ende) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_ende) < strtotime("$jahrgang-09-01")
|
||||
){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$lvs = $_POST['lvs'];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["freistrekto_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, funktion
|
||||
, beginn
|
||||
, ende
|
||||
, sws
|
||||
, lvs
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Deputatsermäßigung aufgrund von Forschungs- und Entwicklungsaufgaben (§ 2 Abs. 8, 9 LVVO)'
|
||||
, '$funktion'
|
||||
, '$save_beginn'
|
||||
, '$ende'
|
||||
, '$sws'
|
||||
, '$lvs'
|
||||
, 8
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$deid = $_SESSION["freistrekto_deid"];
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET funktion = '$funktion'
|
||||
, beginn = '$save_beginn'
|
||||
, ende = '$ende'
|
||||
, sws = '$sws'
|
||||
, lvs = '$lvs'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['freistrekto_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
276
erm_freist_funktion.php
Executable file
276
erm_freist_funktion.php
Executable file
@ -0,0 +1,276 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Gespeicherte Funktionen
|
||||
$query1 = "SELECT dkeid, bezeichnung, grundlage
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE grundlage IN ('§ 11 LVVO')
|
||||
ORDER BY dkeid ASC";
|
||||
|
||||
$result1 = $db->query($query1) or die("Cannot execute query2");
|
||||
|
||||
while ($row1 = $result1->fetch_array()) {
|
||||
$table_data1[] = $row1;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["freistrekto_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["freistrekto_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('freistrekto_error', 1);
|
||||
|
||||
$smarty->assign('freistrekto_value_funktion', $_SESSION["freistrekto_value_funktion"]);
|
||||
$smarty->assign('freistrekto_value_std', $_SESSION["freistrekto_value_sws"]);
|
||||
$smarty->assign('freistrekto_value_datumvon', $_SESSION["freistrekto_value_beginn_funktion"]);
|
||||
$smarty->assign('freistrekto_value_datumbis', $_SESSION["freistrekto_value_ende_funktion"]);
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('freistrekto_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('freistrekto_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('freistrekto_status', $_SESSION["freistrekto_status"]);
|
||||
$smarty->assign('freistrekto_value_funktion', "$row_edit[funktion]");
|
||||
$smarty->assign('freistrekto_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('freistrekto_value_datumbis', "$row_edit[ende]");
|
||||
$smarty->assign('freistrekto_value_std', "$row_edit[sws]");
|
||||
$smarty->assign('freistrekto_value_hinweise', "$row_edit[lvs]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art LIKE '%11 LVVO%'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$query_funktion = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE dkeid = '$row2[funktion]'");
|
||||
$row_funktion = $query_funktion->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['funktion'] = $row_funktion['bezeichnung'];
|
||||
$sws = number_format($row2['sws'], 2, ',', '.');
|
||||
$row2['sws'] = $sws;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art LIKE '%11 LVVO%'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('freistrekto_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$funktion = $_POST['funktion'];
|
||||
$sws = str_replace(',','.',str_replace('.','', $_POST['sws']));
|
||||
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_funktion']);
|
||||
if($beginn == ''){
|
||||
$beginn = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_funktion']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
|
||||
|
||||
$_SESSION["freistrekto_value_funktion"] = $funktion;
|
||||
$_SESSION["freistrekto_value_sws"] = $sws;
|
||||
$_SESSION["freistrekto_value_beginn_funktion"] = $_POST['beginn_funktion'];
|
||||
$_SESSION["freistrekto_value_ende_funktion"] = $_POST['ende_funktion'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/* Ermäßigungen werden immer nur ganze Monate vergeben*/
|
||||
$year_start = substr($beginn,0,4);
|
||||
$mon_start = substr($beginn,5,2);
|
||||
$day_start = '01'; #substr($beginn,8,2);
|
||||
$save_beginn = "$year_start-$mon_start-$day_start";
|
||||
|
||||
|
||||
# Ende ist immer Monatsletzter des angegebenen Monats
|
||||
$year_ende = substr($ende,0,4);
|
||||
$mon_ende = substr($ende,5,2);
|
||||
$day_ende = '01'; #substr($ende,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus
|
||||
$save_ende = "$year_ende-$mon_ende-$day_ende";
|
||||
$L = new DateTime( $save_ende);
|
||||
$save_ende = $L->format( 'Y-m-t' );
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
if(strtotime($save_beginn) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_beginn) < strtotime("$jahrgang-09-01") OR
|
||||
strtotime($save_ende) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_ende) < strtotime("$jahrgang-09-01")
|
||||
){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$lvs = $_POST['lvs'];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["freistrekto_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, funktion
|
||||
, beginn
|
||||
, ende
|
||||
, sws
|
||||
, lvs
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Deputatsermäßigung aufgrund einer Funktion/Beauftragung (§ 11 LVVO)'
|
||||
, '$funktion'
|
||||
, '$save_beginn'
|
||||
, '$ende'
|
||||
, '$sws'
|
||||
, '$lvs'
|
||||
, 7
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$deid = $_SESSION["freistrekto_deid"];
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET funktion = '$funktion'
|
||||
, beginn = '$save_beginn'
|
||||
, ende = '$ende'
|
||||
, sws = '$sws'
|
||||
, lvs = '$lvs'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['freistrekto_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
276
erm_freist_rektorat_dekanat.php
Executable file
276
erm_freist_rektorat_dekanat.php
Executable file
@ -0,0 +1,276 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Gespeicherte Funktionen
|
||||
$query1 = "SELECT dkeid, bezeichnung, grundlage
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE grundlage IN ('§ 7 LVVO', '§ 8 LVVO')
|
||||
ORDER BY dkeid ASC";
|
||||
|
||||
$result1 = $db->query($query1) or die("Cannot execute query2");
|
||||
|
||||
while ($row1 = $result1->fetch_array()) {
|
||||
$table_data1[] = $row1;
|
||||
}
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["freistrekto_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["freistrekto_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('freistrekto_error', 1);
|
||||
|
||||
$smarty->assign('freistrekto_value_funktion', $_SESSION["freistrekto_value_funktion"]);
|
||||
$smarty->assign('freistrekto_value_std', $_SESSION["freistrekto_value_sws"]);
|
||||
$smarty->assign('freistrekto_value_datumvon', $_SESSION["freistrekto_value_beginn_funktion"]);
|
||||
$smarty->assign('freistrekto_value_datumbis', $_SESSION["freistrekto_value_ende_funktion"]);
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('freistrekto_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('freistrekto_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('freistrekto_status', $_SESSION["freistrekto_status"]);
|
||||
$smarty->assign('freistrekto_value_funktion', "$row_edit[funktion]");
|
||||
$smarty->assign('freistrekto_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('freistrekto_value_datumbis', "$row_edit[ende]");
|
||||
$smarty->assign('freistrekto_value_std', "$row_edit[sws]");
|
||||
$smarty->assign('freistrekto_value_hinweise', "$row_edit[lvs]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["freistrekto_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art LIKE '%7, 8 LVVO%'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$query_funktion = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE dkeid = '$row2[funktion]'");
|
||||
$row_funktion = $query_funktion->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['funktion'] = $row_funktion['bezeichnung'];
|
||||
$sws = number_format($row2['sws'], 2, ',', '.');
|
||||
$row2['sws'] = $sws;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art LIKE '%7, 8 LVVO%'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('freistrekto_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$funktion = $_POST['funktion'];
|
||||
$sws = str_replace(',','.',str_replace('.','', $_POST['sws']));
|
||||
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_funktion']);
|
||||
if($beginn == ''){
|
||||
$beginn = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_funktion']);
|
||||
if($ende == ''){
|
||||
$ende = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
|
||||
|
||||
$_SESSION["freistrekto_value_funktion"] = $funktion;
|
||||
$_SESSION["freistrekto_value_sws"] = $sws;
|
||||
$_SESSION["freistrekto_value_beginn_funktion"] = $_POST['beginn_funktion'];
|
||||
$_SESSION["freistrekto_value_ende_funktion"] = $_POST['ende_funktion'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
if(!validateDate($ende)){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
/* Ermäßigungen werden immer nur ganze Monate vergeben*/
|
||||
$year_start = substr($beginn,0,4);
|
||||
$mon_start = substr($beginn,5,2);
|
||||
$day_start = '01'; #substr($beginn,8,2);
|
||||
$save_beginn = "$year_start-$mon_start-$day_start";
|
||||
|
||||
|
||||
# Ende ist immer Monatsletzter des angegebenen Monats
|
||||
$year_ende = substr($ende,0,4);
|
||||
$mon_ende = substr($ende,5,2);
|
||||
$day_ende = '01'; #substr($ende,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus
|
||||
$save_ende = "$year_ende-$mon_ende-$day_ende";
|
||||
$L = new DateTime( $save_ende);
|
||||
$save_ende = $L->format( 'Y-m-t' );
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
if(strtotime($save_beginn) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_beginn) < strtotime("$jahrgang-09-01") OR
|
||||
strtotime($save_ende) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_ende) < strtotime("$jahrgang-09-01")
|
||||
){
|
||||
if($_SESSION["freistrekto_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[freistrekto_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$lvs = $_POST['lvs'];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["freistrekto_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, funktion
|
||||
, beginn
|
||||
, ende
|
||||
, sws
|
||||
, lvs
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Ermäßigung/Freistellung Rektorat/Dekanat (§§ 7, 8 LVVO)'
|
||||
, '$funktion'
|
||||
, '$save_beginn'
|
||||
, '$ende'
|
||||
, '$sws'
|
||||
, '$lvs'
|
||||
, 6
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["freistrekto_status"] == 'edit') {
|
||||
$deid = $_SESSION["freistrekto_deid"];
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET funktion = '$funktion'
|
||||
, beginn = '$save_beginn'
|
||||
, ende = '$ende'
|
||||
, sws = '$sws'
|
||||
, lvs = '$lvs'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['freistrekto_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
117
erm_mutterschutz.php
Executable file
117
erm_mutterschutz.php
Executable file
@ -0,0 +1,117 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
$query_muschu = $db->query("SELECT count(*) Anz
|
||||
FROM `dep_deputat_ermaessigung`
|
||||
WHERE imtuid=$uid
|
||||
AND jahr='$jahrgang'
|
||||
AND art LIKE '%Mutterschutz%'
|
||||
");
|
||||
$row_muschu = $query_muschu->fetch_array();
|
||||
|
||||
if($row_muschu['Anz'] > 0){
|
||||
|
||||
$query_muschu1 = $db->query("SELECT date_format(created, '%d.%m.%Y') datum_form
|
||||
FROM `dep_deputat_ermaessigung`
|
||||
WHERE imtuid=$uid
|
||||
AND jahr='$jahrgang'
|
||||
AND art LIKE '%Mutterschutz%'
|
||||
");
|
||||
$row_muschu1 = $query_muschu1->fetch_array();
|
||||
# Button zum Löschen anzeigen
|
||||
$query_muschu2 = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid = '$uid'
|
||||
AND jahr = '$jahrgang'
|
||||
AND art like '%Mutterschutz%'
|
||||
AND lvs = 0
|
||||
");
|
||||
$row_muschu2 = $query_muschu2->fetch_array();
|
||||
if($row_muschu2['Anz'] == 0){
|
||||
$del = 2;
|
||||
}else{
|
||||
$del = 0;
|
||||
$smarty->assign('muschu_erf_dat', "$row_muschu1[datum_form]");
|
||||
}
|
||||
|
||||
}else{
|
||||
# Kein Löschbutton
|
||||
$del = 1;
|
||||
}
|
||||
$smarty->assign('muschu_erf', "$del");
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$query_muschu = $db->query("SELECT count(*) Anz
|
||||
FROM `dep_deputat_ermaessigung`
|
||||
WHERE imtuid=$uid
|
||||
AND jahr='$jahrgang'
|
||||
AND art LIKE '%Mutterschutz%'
|
||||
");
|
||||
$row_muschu = $query_muschu->fetch_array();
|
||||
|
||||
if($row_muschu['Anz'] == 0){
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, beginn
|
||||
, ende
|
||||
, sws
|
||||
, lvs
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Mutterschutz / Elternzeit'
|
||||
, '$beginn'
|
||||
, '$ende'
|
||||
, '$sws'
|
||||
, '$lvs'
|
||||
, 5
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}else{
|
||||
$sql1 = $db->query("DELETE FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid = '$uid'
|
||||
AND jahr='$jahrgang'
|
||||
AND art LIKE '%Mutterschutz%'
|
||||
");
|
||||
}
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
|
||||
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
239
erm_ruhestand.php
Executable file
239
erm_ruhestand.php
Executable file
@ -0,0 +1,239 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
#require_once "func_lvs_exk_mehrtaegig.php";
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["ruhestand_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["ruhestand_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["ruhestand_status"] = 'neu';
|
||||
}
|
||||
|
||||
# -- Fehlermeldungen -- #
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('ruhestand_error', 1);
|
||||
|
||||
$smarty->assign('ruhestand_value_funktion', $_SESSION["ruhestand_value_funktion"]);
|
||||
$smarty->assign('ruhestand_value_std', $_SESSION["ruhestand_value_sws"]);
|
||||
$smarty->assign('ruhestand_value_datumvon', $_SESSION["ruhestand_value_beginn_lastday"]);
|
||||
$smarty->assign('ruhestand_value_datumbis', $_SESSION["ruhestand_value_ende_funktion"]);
|
||||
|
||||
if ($errorno == 2) {
|
||||
# mehrere Ruhestandsdaten
|
||||
$smarty->assign('ruhestand_error_text', "Es kann nur ein Ruhestandsdatum eingegeben werden!");
|
||||
}
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('ruhestand_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('ruhestand_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["ruhestand_status"] == 'edit') {
|
||||
$result_edit = $db->query("SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('ruhestand_status', $_SESSION["ruhestand_status"]);
|
||||
$smarty->assign('ruhestand_value_funktion', "$row_edit[funktion]");
|
||||
$smarty->assign('ruhestand_value_datumvon', "$row_edit[beginn]");
|
||||
$smarty->assign('ruhestand_value_datumbis', "$row_edit[ende]");
|
||||
$smarty->assign('ruhestand_value_std', "$row_edit[sws]");
|
||||
$smarty->assign('ruhestand_value_hinweise', "$row_edit[lvs]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["ruhestand_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
$query2 = "SELECT deid, funktion, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende, sws, lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND art LIKE '%Ruhestand%'
|
||||
ORDER BY deid ASC";
|
||||
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$query_funktion = $db->query("SELECT bezeichnung
|
||||
FROM dep_kat_ermaessigung
|
||||
WHERE dkeid = '$row2[funktion]'");
|
||||
$row_funktion = $query_funktion->fetch_array();
|
||||
|
||||
$lvs = number_format($row2['lvs'], 2, ',', '.');
|
||||
$row2['lvs'] = $lvs;
|
||||
$row2['funktion'] = $row_funktion['bezeichnung'];
|
||||
$sws = number_format($row2['sws'], 2, ',', '.');
|
||||
$row2['sws'] = $sws;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
# Jahressumme
|
||||
$query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art LIKE '%Ruhestand%'
|
||||
AND jahr=$jahrgang");
|
||||
$row_jahrsum = $query_jahrsum->fetch_array();
|
||||
$summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.');
|
||||
$smarty->assign('ruhestand_value_summe_jahr', $summe_jahr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$lastday = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_lastday']);
|
||||
if($lastday == ''){
|
||||
$lastday = $jahrgang."-09-01";
|
||||
}
|
||||
|
||||
$_SESSION["ruhestand_value_beginn_lastday"] = $_POST['beginn_lastday'];
|
||||
|
||||
|
||||
$query_anz = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND art LIKE '%Ruhestand%'
|
||||
AND jahr=$jahrgang");
|
||||
$row_anz = $query_anz->fetch_array();
|
||||
if($row_anz['Anz' > 1] AND $_SESSION["ruhestand_status"] == 'neu'){
|
||||
if($_SESSION["ruhestand_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=2&edit=$_SESSION[ruhestand_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($lastday)){
|
||||
if($_SESSION["ruhestand_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[ruhestand_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
# Ende ist immer Monatsletzter des angegebenen Monats
|
||||
$year_ende = substr($lastday,0,4);
|
||||
$mon_ende = substr($lastday,5,2);
|
||||
$day_ende = '01'; #substr($lastday,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus
|
||||
$save_ende = "$year_ende-$mon_ende-$day_ende";
|
||||
$L = new DateTime( $save_ende);
|
||||
$save_ende = $L->format( 'Y-m-t' );
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
#echo strtotime($save_ende) ." > ". strtotime("$jahrgang2-08-31")."<br>";
|
||||
#echo strtotime($save_ende) ." < ". strtotime("$jahrgang-09-01")."<br>";
|
||||
#exit;
|
||||
if(strtotime($save_ende) > strtotime("$jahrgang2-08-31") OR
|
||||
strtotime($save_ende) < strtotime("$jahrgang-09-01")
|
||||
){
|
||||
if($_SESSION["ruhestand_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[ruhestand_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$lvs = $_POST['lvs'];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["ruhestand_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( imtuid
|
||||
, jahr
|
||||
, art
|
||||
, beginn
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, 'Ermäßigung: Ruhestand während des Studienjahrs'
|
||||
, '$save_ende'
|
||||
, 1
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
}
|
||||
|
||||
if ($_SESSION["ruhestand_status"] == 'edit') {
|
||||
$deid = $_SESSION["ruhestand_deid"];
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET beginn = '$save_ende'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
");
|
||||
|
||||
unset($_SESSION['ruhestand_deid']);
|
||||
}
|
||||
# Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
290
erm_teilzeit.php
Executable file
290
erm_teilzeit.php
Executable file
@ -0,0 +1,290 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']), 0, -3) . "html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
###require_once "func_lvs_teilzeit.php"; # Livedarstellung der Rest LVS wird es nicht geben. Es wird im Jahresabschluss angezeigt
|
||||
#require_once "func_lvs_exk_eintaegig.php";
|
||||
|
||||
if (isset($_GET['action'])) {
|
||||
$action = $_GET['action'];
|
||||
} else {
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if ($action == '') {
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
if (isset($_GET[error])) {
|
||||
|
||||
$errorno = $_GET[error];
|
||||
|
||||
$smarty->assign('tz_error', 1);
|
||||
|
||||
$smarty->assign('tz_value_umfang', $_SESSION["tz_umfang"]);
|
||||
$smarty->assign('tz_value_beginn', $_SESSION["tz_beginn"]);
|
||||
|
||||
if ($errorno == 1) {
|
||||
$smarty->assign('tz_error_text', "Es müssen Umfang und Beginndatum ausgewählt werden! ");
|
||||
}
|
||||
|
||||
if ($errorno == 3) {
|
||||
# ungültiges Datum
|
||||
$smarty->assign('tz_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!");
|
||||
}
|
||||
if ($errorno == 4) {
|
||||
$smarty->assign('tz_error_text', "Das Datum ist bereits vorhanden!<br>Bearbeiten Sie ggf. das vorhandene Datum mit dem Bleistiftsymbol.");
|
||||
}
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
if ($errorno == 5) {
|
||||
$smarty->assign('tz_error_text', "Das Datum ist außerhalb des Jahrgangs!<br>Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen.");
|
||||
}
|
||||
if ($errorno == 6) {
|
||||
$smarty->assign('tz_error_text', "Wenn eine Schwerbehinderung erfasst wurde, darf keine Teilzeit erfasst werden.<br> Setzen Sie sich mit dem Administrator in Verbindung, <b>sobald Sie das aktuelle Jahr abgeschlossen haben.</b>");
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET['edit'])) {
|
||||
$_SESSION["tz_status"] = 'edit';
|
||||
$deid = $_GET['edit'];
|
||||
$_SESSION["tz_deid"] = $deid;
|
||||
} else {
|
||||
$_SESSION["tz_status"] = 'neu';
|
||||
}
|
||||
|
||||
# --- Wenn Werte editiert werden ------------
|
||||
if ($_SESSION["tz_status"] == 'edit') {
|
||||
|
||||
$result_edit = $db->query("SELECT deid, date_format(beginn, '%d.%m.%Y') beginn, prozent
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE deid = $deid
|
||||
AND art = 'Teilzeit'");
|
||||
$row_edit = $result_edit->fetch_array();
|
||||
$smarty->assign('tz_value_umfang', "$row_edit[prozent]");
|
||||
$smarty->assign('tz_value_beginn', "$row_edit[beginn]");
|
||||
|
||||
}
|
||||
# --- Wenn Werte editiert werden Ende -------
|
||||
|
||||
if ($_GET['editende'] == 1) {
|
||||
# Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt
|
||||
$_SESSION["tz_status"] = 'neu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Gespeicherte Werte
|
||||
# Was ist die Standard LVS
|
||||
$query_baselvs = $db->query("SELECT lvs
|
||||
FROM dep_kat_lvs
|
||||
WHERE jahr <=$jahrgang
|
||||
ORDER BY jahr desc
|
||||
LIMIT 1");
|
||||
$row_baselvs = $query_baselvs->fetch_array();
|
||||
$baselvs = $row_baselvs['lvs'];
|
||||
$smarty->assign('tz_baselvs', $baselvs);
|
||||
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
$max_dat = $jahrgang2.'-09-01';
|
||||
$query2 = "SELECT deid, date_format(beginn, '%d.%m.%Y') beginn_form, prozent, beginn
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang
|
||||
AND beginn < '$max_dat'
|
||||
AND art = 'Teilzeit'
|
||||
ORDER BY beginn ASC";
|
||||
$result2 = $db->query($query2) or die("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()) {
|
||||
$prozent = $row2['prozent']*100;
|
||||
$row2['prozent'] = $prozent;
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
|
||||
}
|
||||
#$lvs= number_format(lvs_teilzeit($uid,$jahrgang), 2, ',', '.');
|
||||
#$smarty->assign('tz_value_lvs', $lvs);
|
||||
|
||||
|
||||
if ($action == 'save') {
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
$umfang = $_POST['umfang'];
|
||||
$beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_teilzeit']);
|
||||
|
||||
|
||||
$_SESSION["tz_umfang"] = $umfang;
|
||||
$_SESSION["tz_beginn"] = $_POST['beginn_teilzeit'];
|
||||
|
||||
function validateDate($date, $format = 'Y-m-d')
|
||||
{
|
||||
$d = DateTime::createFromFormat($format, $date);
|
||||
return $d && $d->format($format) == $date;
|
||||
}
|
||||
|
||||
if(!validateDate($beginn)){
|
||||
if($_SESSION["tz_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=3&edit=$_SESSION[tz_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if ($beginn == '' OR $umfang == '') {
|
||||
if($_SESSION["tz_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=1&edit=$_SESSION[tz_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
/* Teilzeiten werden immer nur ganze Monate vergeben*/
|
||||
$year_start = substr($beginn,0,4);
|
||||
$mon_start = substr($beginn,5,2);
|
||||
$day_start = '01'; #substr($beginn,8,2);
|
||||
$save_beginn = "$year_start-$mon_start-$day_start";
|
||||
|
||||
# Doppeltes Datum prüfen
|
||||
$query_beginndop = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE beginn = '$save_beginn'
|
||||
AND imtuid = $uid
|
||||
AND art = 'Teilzeit'");
|
||||
$row_beginndop = $query_beginndop->fetch_array();
|
||||
if($row_beginndop['Anz'] > 0 AND $_SESSION["tz_status"] != 'edit'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?
|
||||
4\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Datum außerhalb des Jahrgangs 01.09.-31.08
|
||||
if(strtotime($save_beginn) > strtotime("$jahrgang2-08-31") OR strtotime($save_beginn) < strtotime("$jahrgang-09-01")){
|
||||
if($_SESSION["tz_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=5&edit=$_SESSION[tz_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
$result_tz = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahrgang'
|
||||
AND art = 'Schwerbehinderung'
|
||||
AND imtuid=$uid
|
||||
AND prozent > 0");
|
||||
$row_tz = $result_tz->fetch_array();
|
||||
if($row_tz['Anz']>0){
|
||||
if($_SESSION["tz_status"] == 'neu'){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=6\">";
|
||||
}else{
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?error=6&edit=$_SESSION[tz_deid]\">";
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
# Datum vor Schuljahr, dann Schuljahrbeginn
|
||||
if($dat_ende >= $dat_max or $ende_funktion == ''){
|
||||
$ende_funktion = $jahrgang2."-08-31";
|
||||
}
|
||||
|
||||
# Datum nach Schulnahrbeginn > 01.09, dann wird 100% zugrunde gelegt ab 01.09
|
||||
# Prüfen, ob ein Datum ab 01.09. vorliegt
|
||||
|
||||
#$beginn = $jahrgang."-09-01";
|
||||
#$query_beginn = $db->query("SELECT count(*) Anz
|
||||
# FROM dep_deputat_ermaessigung
|
||||
# WHERE beginn = '$beginn'
|
||||
# AND imtuid = $uid
|
||||
# AND art = 'Teilzeit'");
|
||||
#$row_beginn = $query_beginn->fetch_array();
|
||||
#if($row_beginn['Anz'] == 0 AND $beginn != $save_beginn){
|
||||
#
|
||||
## Wenn er zu kein beginn erfasst hat und dies auch aktuell nicht vor hat, dann Startwert auf 100 % setzen. Prof kann den Wert nachträglich bearbeiten
|
||||
# $sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( jahr
|
||||
# , beginn
|
||||
# , imtuid
|
||||
# , art
|
||||
# , prozent
|
||||
# , sort_order
|
||||
# , created
|
||||
# )
|
||||
# VALUES
|
||||
# ( '$jahrgang'
|
||||
# , '$beginn'
|
||||
# , '$uid'
|
||||
# , 'Teilzeit'
|
||||
# , '1.00'
|
||||
# , 4
|
||||
# , '$datum'
|
||||
# )
|
||||
# ");
|
||||
#
|
||||
#}
|
||||
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
if ($_SESSION["tz_status"] == 'neu') {
|
||||
$sql1 = $db->query("INSERT INTO dep_deputat_ermaessigung ( jahr
|
||||
, beginn
|
||||
, imtuid
|
||||
, art
|
||||
, prozent
|
||||
, sort_order
|
||||
, created
|
||||
)
|
||||
VALUES
|
||||
( '$jahrgang'
|
||||
, '$save_beginn'
|
||||
, '$uid'
|
||||
, 'Teilzeit'
|
||||
, '$umfang'
|
||||
, 4
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
|
||||
|
||||
}
|
||||
|
||||
if ($_SESSION["tz_status"] == 'edit') {
|
||||
$deid = $_SESSION["tz_deid"];
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET beginn = '$save_beginn'
|
||||
, prozent = '$umfang'
|
||||
, modify_date = '$datum'
|
||||
WHERE deid = $deid
|
||||
AND art = 'Teilzeit'
|
||||
");
|
||||
}
|
||||
$editende = 1;
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "?editende=$editende\">";
|
||||
|
||||
|
||||
|
||||
}
|
||||
if ($action == 'del') {
|
||||
$deid = $_GET['deid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
$del1 = $db->query("DELETE FROM dep_deputat_ermaessigung WHERE deid = $deid AND imtuid=$uid AND art = 'Teilzeit'");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=" . $_SERVER['PHP_SELF'] . "\">";
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
36
ermaessigung.php
Executable file
36
ermaessigung.php
Executable file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang=$_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
|
||||
$smarty = new Smarty();
|
||||
require_once "language/german.inc.php";
|
||||
|
||||
|
||||
if ($jahrgang == "") {
|
||||
echo "Bitte zuerst <a href='jahrgang.php'>Jahrgang</a> wählen!";
|
||||
exit;
|
||||
}
|
||||
|
||||
# Prüfen ob der Jahrgang schon abgeschlossen wurde, dann soll der Button "Abschließen und absenden" ausgeblendet werden
|
||||
$query_closed = $db->query("SELECT count(*) Anz
|
||||
FROM dep_doz_abschluss
|
||||
WHERE imtuid=$uid
|
||||
AND jahr=$jahrgang");
|
||||
$row_closed = $query_closed->fetch_array();
|
||||
|
||||
if ($row_closed['Anz'] > 0) {
|
||||
$smarty->assign('erm_abschluss', 1);
|
||||
$smarty->assign('erm_error', 1);
|
||||
$smarty->assign('erm_error_text', 'Der aktuelle Jahrgang ist bereits abgeschlossen!');
|
||||
} else {
|
||||
$smarty->assign('erm_abschluss', 0);
|
||||
} // Jahrgang abgeschlossen
|
||||
|
||||
$jahrgang_next = $jahrgang + 1;
|
||||
$studjahr = "$jahrgang/$jahrgang_next";
|
||||
$smarty->assign('erm_jahrgang', $studjahr);
|
||||
|
||||
$smarty->display("$template/$templatename");
|
||||
?>
|
24
fetch_data.php
Executable file
24
fetch_data.php
Executable file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
session_start();
|
||||
if(isset($_POST['get_option']))
|
||||
{
|
||||
|
||||
require("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
|
||||
$studiengang = $_POST['get_option'];
|
||||
$module = $_SESSION["erf_module"];
|
||||
|
||||
$db = dbconnect();
|
||||
$query = "SELECT dsmid, dsgid, bezeichnung, lvs FROM dep_kat_studienmodul WHERE dsgid='$studiengang'";
|
||||
$result = $db->query( $query);
|
||||
|
||||
while ($row = $result->fetch_array()){
|
||||
# array aus <option> und lvs erzeugen. Java muss es dann auftrennen
|
||||
echo "<option value='$row[dsmid]'"; if($row['dsmid'] == $module){ echo " selected ";} echo">".$row['bezeichnung']."</option>";
|
||||
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
25
fetch_data2.php
Executable file
25
fetch_data2.php
Executable file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
session_start();
|
||||
if(isset($_POST['get_option']))
|
||||
{
|
||||
require("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
|
||||
$module = $_POST['get_option'];
|
||||
# $module = $_COOKIE["modulid"];
|
||||
|
||||
$db = dbconnect();
|
||||
$query_std = $db->query("SELECT lvs
|
||||
FROM dep_kat_studienmodul
|
||||
WHERE dsmid='$module'");
|
||||
$row_std = $query_std->fetch_array();
|
||||
if($_SESSION["erf_status"] == 'edit'){
|
||||
echo "0";
|
||||
}else{
|
||||
echo "$row_std[lvs]";
|
||||
}
|
||||
|
||||
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
132
fetch_lvs_erm_7-8.php
Executable file
132
fetch_lvs_erm_7-8.php
Executable file
@ -0,0 +1,132 @@
|
||||
<?php
|
||||
session_start();
|
||||
#if(isset($_POST['get_option'])){
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
require_once("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
require_once("func_timediff.php"); // Funktionen für die Berechnung der Differenz der Tage
|
||||
|
||||
|
||||
$std = str_replace(',','.',str_replace('.','', $_POST['get_option']));
|
||||
$beginn_funktion = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['get_beginn_funktion']);
|
||||
$ende_funktion = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['get_ende_funktion']);
|
||||
if($std == ''){
|
||||
$std = 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
$std = 2;
|
||||
$beginn_funktion = '2017-07-01';
|
||||
$ende_funktion = '2022-09-30';
|
||||
*/
|
||||
|
||||
$dat_min = strtotime($jahrgang."-09-01");
|
||||
$dat_max = strtotime($jahrgang2."-08-31");
|
||||
$dat_beginn = strtotime($beginn_funktion);
|
||||
$dat_ende = strtotime($ende_funktion);
|
||||
if($dat_beginn <= $dat_min or $beginn_funktion == ''){
|
||||
$beginn_funktion = $jahrgang."-09-01";
|
||||
}
|
||||
if($dat_ende >= $dat_max or $ende_funktion == ''){
|
||||
$ende_funktion = $jahrgang2."-08-31";
|
||||
}
|
||||
$year_start = substr($beginn_funktion,0,4);
|
||||
$mon_start = substr($beginn_funktion,5,2);
|
||||
$day_start = substr($beginn_funktion,8,2);
|
||||
|
||||
$year_ende = substr($ende_funktion,0,4);
|
||||
$mon_ende = substr($ende_funktion,5,2);
|
||||
$day_ende = substr($ende_funktion,8,2);
|
||||
|
||||
|
||||
/*Grundsätzlich beginnen die Beauftragungen / Funktionen an der Hochschule zum Monatsersten und enden am Monatsletzten.
|
||||
Aber: ich kann auch nicht mit 100%iger Sicherheit sagen, dass dies immer so ist. Daher sollten wir zur Sicherheit mit Tagen rechnen.
|
||||
Im Beispiel unten: Beauftragung vom 1.10.2019 – 30.09.2022. Für das Studienjahr 2019/20 bedeutet dies, dass er für 335 von 365 Tagen die Ermäßigung erhält.
|
||||
Das sind 60,57 LVS Ermäßigung. Hatten wir hier uns schon auf eine Rundung festgelegt? Falls nicht, würde ich auf 2 Stellen nach dem Komma runden, dann wäre die Ermäßigung (nach Rundung) 60,58 LVS.
|
||||
*/
|
||||
|
||||
# Wie viele Tage hat das Schuljahr 365 bzw 366 Tage
|
||||
$start = $jahrgang."-09-01";
|
||||
$ende = $jahrgang2."-08-31";
|
||||
$jahr_tage = tage($start, $ende);
|
||||
|
||||
# Wie viele Tage wurde die Funktion ausgeübt
|
||||
$funk_tage = tage($beginn_funktion, $ende_funktion);
|
||||
|
||||
|
||||
# func_timediff.php
|
||||
# Je nach vorgehensweise. Werden die Anzahl der Tage im Jahr zugrunde gerlegt (tage()) 300/365
|
||||
# oder die Anzahl der Monate (datediff_ymd()) 11/12
|
||||
|
||||
# $module = $_COOKIE["modulid"];
|
||||
|
||||
$db = dbconnect();
|
||||
$query_sw = $db->query("SELECT sw
|
||||
FROM dep_kat_lvs
|
||||
WHERE jahr <=$jahrgang
|
||||
ORDER BY jahr desc
|
||||
LIMIT 1");
|
||||
$row_sw = $query_sw->fetch_array();
|
||||
$sw = $row_sw['sw'];
|
||||
# Die 33 sind Semesterwochen aus dep_kat_lvs
|
||||
|
||||
|
||||
|
||||
# Bsp Beauftragung ging 11 Monate
|
||||
$ausgabe = round($std*$sw*$funk_tage/$jahr_tage,2);
|
||||
$start2 = mktime(0, 0, 0, $mon_start, $day_start, $year_start);
|
||||
$ende2 = mktime(0, 0, 0, $mon_ende, $day_ende, $year_ende);
|
||||
$ende2_form = mktime(0, 0, 0, $mon_ende, $day_ende, $year_ende);
|
||||
echo "<b>Berechnung:</b>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Funktionsbeginn:
|
||||
</td>
|
||||
<td>"
|
||||
.date("d.m.Y", $start2)."
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Funktionsende:
|
||||
</td>
|
||||
<td>"
|
||||
.date("d.m.Y",$ende2_form)."
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Funktionstage:
|
||||
</td>
|
||||
<td>"
|
||||
.$funk_tage."
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Rechenweg:
|
||||
</td>
|
||||
<td>"
|
||||
.number_format($std, 2, ',', '.')." x $sw x $funk_tage / $jahr_tage
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
LVS:
|
||||
</td>
|
||||
<td>"
|
||||
.number_format($ausgabe, 2, ',', '.')."
|
||||
</td>
|
||||
</tr>
|
||||
</table>"."||".$ausgabe;
|
||||
|
||||
#echo "Rechenweg: $std*$sw*$funk_tage/$jahr_tage<br>LVS: $ausgabe||$ausgabe";
|
||||
|
||||
exit;
|
||||
#}
|
||||
?>
|
||||
|
125
fetch_mutterschutz.php
Executable file
125
fetch_mutterschutz.php
Executable file
@ -0,0 +1,125 @@
|
||||
<?php
|
||||
session_start();
|
||||
#if(isset($_POST['get_option'])){
|
||||
$jahrgang = $_SESSION["jahrgang"];
|
||||
$jahrgang2 = $jahrgang+1;
|
||||
|
||||
require_once("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
require_once("func_timediff.php"); // Funktionen für die Berechnung der Differenz der Tage
|
||||
|
||||
$beginn_funktion = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['get_beginn_funktion']);
|
||||
$ende_funktion = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['get_ende_funktion']);
|
||||
|
||||
|
||||
|
||||
$dat_min = strtotime($jahrgang."-09-01");
|
||||
$dat_max = strtotime($jahrgang2."-08-31");
|
||||
$dat_beginn = strtotime($beginn_funktion);
|
||||
$dat_ende = strtotime($ende_funktion);
|
||||
if($dat_beginn <= $dat_min or $beginn_funktion == ''){
|
||||
$beginn_funktion = $jahrgang."-09-01";
|
||||
}
|
||||
if($dat_ende >= $dat_max or $ende_funktion == ''){
|
||||
$ende_funktion = $jahrgang2."-08-31";
|
||||
}
|
||||
$year_start = substr($beginn_funktion,0,4);
|
||||
$mon_start = substr($beginn_funktion,5,2);
|
||||
$day_start = substr($beginn_funktion,8,2);
|
||||
|
||||
$year_ende = substr($ende_funktion,0,4);
|
||||
$mon_ende = substr($ende_funktion,5,2);
|
||||
$day_ende = substr($ende_funktion,8,2);
|
||||
|
||||
|
||||
/*Grundsätzlich beginnen die Beauftragungen / Funktionen an der Hochschule zum Monatsersten und enden am Monatsletzten.
|
||||
Aber: ich kann auch nicht mit 100%iger Sicherheit sagen, dass dies immer so ist. Daher sollten wir zur Sicherheit mit Tagen rechnen.
|
||||
Im Beispiel unten: Beauftragung vom 1.10.2019 – 30.09.2022. Für das Studienjahr 2019/20 bedeutet dies, dass er für 335 von 365 Tagen die Ermäßigung erhält.
|
||||
Das sind 60,57 LVS Ermäßigung. Hatten wir hier uns schon auf eine Rundung festgelegt? Falls nicht, würde ich auf 2 Stellen nach dem Komma runden, dann wäre die Ermäßigung (nach Rundung) 60,58 LVS.
|
||||
*/
|
||||
|
||||
# Wie viele Tage hat das Schuljahr 365 bzw 366 Tage
|
||||
$start = mktime(0, 0, 0, 9, 1, $jahrgang);
|
||||
$ende = mktime(0, 0, 0, 8, 31+1, $jahrgang+1);
|
||||
$jahr_tage = tage($start, $ende);
|
||||
|
||||
# Wie viele Tage wurde die Funktion ausgeübt
|
||||
$start2 = mktime(0, 0, 0, $mon_start, $day_start, $year_start);
|
||||
$ende2 = mktime(0, 0, 0, $mon_ende, $day_ende+1, $year_ende);
|
||||
|
||||
$mutterschutztage = tage($start2, $ende2);
|
||||
|
||||
$ende2_form = mktime(0, 0, 0, $mon_ende, $day_ende, $year_ende);
|
||||
|
||||
# func_timediff.php
|
||||
# Je nach vorgehensweise. Werden die Anzahl der Tage im Jahr zugrunde gerlegt (tage()) 300/365
|
||||
# oder die Anzahl der Monate (datediff_ymd()) 11/12
|
||||
|
||||
# $module = $_COOKIE["modulid"];
|
||||
|
||||
$db = dbconnect();
|
||||
$query_lvs = $db->query("SELECT lvs
|
||||
FROM dep_kat_lvs
|
||||
WHERE jahr <=$jahrgang
|
||||
ORDER BY jahr desc
|
||||
LIMIT 1");
|
||||
$row_lvs = $query_lvs->fetch_array();
|
||||
$lvs = $row_lvs['lvs'];
|
||||
# Die 33 sind Semesterwochen aus dep_kat_lvs
|
||||
|
||||
|
||||
|
||||
|
||||
# Bsp Beauftragung ging 11 Monate
|
||||
$ausgabe = round($mutterschutztage/$jahr_tage*$lvs,2);
|
||||
|
||||
echo "<b>Berechnung:</b>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Funktionsbeginn:
|
||||
</td>
|
||||
<td>"
|
||||
.date("d.m.Y", $start2)."
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Funktionsende:
|
||||
</td>
|
||||
<td>"
|
||||
.date("d.m.Y",$ende2_form)."
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Mutterschutztage:
|
||||
</td>
|
||||
<td>"
|
||||
.$mutterschutztage."
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Rechenweg:
|
||||
</td>
|
||||
<td>
|
||||
$mutterschutztage / $jahr_tage x $lvs
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
Ermäßigung:
|
||||
</td>
|
||||
<td>"
|
||||
.number_format($ausgabe, 2, ',', '.')."
|
||||
</td>
|
||||
</tr>
|
||||
</table>||".$ausgabe;
|
||||
|
||||
#echo "Rechenweg: $std*$sw*$funk_tage/$jahr_tage<br>LVS: $ausgabe||$ausgabe";
|
||||
|
||||
exit;
|
||||
#}
|
||||
?>
|
||||
|
22
fetch_schwerpunkt.php
Executable file
22
fetch_schwerpunkt.php
Executable file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
session_start();
|
||||
if(isset($_POST['get_option']))
|
||||
{
|
||||
require("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
|
||||
$spt = $_POST['get_option'];
|
||||
$schwerpunkt = $_SESSION["erf_schwerpunkt"];
|
||||
|
||||
$db = dbconnect();
|
||||
$query = "SELECT dspid, bezeichnung, lvs FROM dep_kat_schwerpunkt ";
|
||||
$result = $db->query( $query);
|
||||
|
||||
while ($row = $result->fetch_array()){
|
||||
# array aus <option> und lvs erzeugen. Java muss es dann auftrennen
|
||||
echo "<option value='$row[dspid]'"; if($row['dspid'] == $schwerpunkt){ echo " selected ";} echo">".$row['bezeichnung']."</option>";
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
19
fetch_schwerpunkt2.php
Executable file
19
fetch_schwerpunkt2.php
Executable file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
if(isset($_POST['get_option']))
|
||||
{
|
||||
require("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
|
||||
$spt2 = $_POST['get_option'];
|
||||
# $module = $_COOKIE["modulid"];
|
||||
|
||||
$db = dbconnect();
|
||||
$query_std = $db->query("SELECT lvs
|
||||
FROM dep_kat_schwerpunkt
|
||||
WHERE dspid='$spt2'");
|
||||
$row_std = $query_std->fetch_array();
|
||||
echo "$row_std[lvs]";
|
||||
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
19
fetch_teachingfacktor.php
Executable file
19
fetch_teachingfacktor.php
Executable file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
if(isset($_POST['get_option']))
|
||||
{
|
||||
require("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
|
||||
$tid = $_POST['get_option'];
|
||||
# $module = $_COOKIE["modulid"];
|
||||
|
||||
$db = dbconnect();
|
||||
$query_fak = $db->query("SELECT Faktor
|
||||
FROM dep_kat_teamteaching
|
||||
WHERE tid='$tid'");
|
||||
$row_fak = $query_fak->fetch_array();
|
||||
echo "$row_fak[Faktor]";
|
||||
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
168
freischaltung.php
Executable file
168
freischaltung.php
Executable file
@ -0,0 +1,168 @@
|
||||
<?php
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
|
||||
$smarty = new Smarty();
|
||||
require_once "functions.php";
|
||||
require_once "language/german.inc.php";
|
||||
require_once("func_rollenrechte.php");
|
||||
|
||||
// Rechteüberprüfung
|
||||
if(!rore($uid,'2','RE')){echo "Keine Rechte";exit;}
|
||||
// Rechteüberprüfung ende
|
||||
|
||||
|
||||
if(isset($_GET['action'])){
|
||||
$action = $_GET['action'];
|
||||
}else{
|
||||
$action = '';
|
||||
}
|
||||
|
||||
|
||||
if($action == ''){
|
||||
|
||||
|
||||
|
||||
# Verfügbare Professoren
|
||||
|
||||
$ds = @ldap_connect($global_ldap_serverhsnet, $global_ldap_porthsnet);
|
||||
if ($ds) {
|
||||
$r = @ldap_bind($ds, $global_ldap_user, $global_ldap_pwd);
|
||||
$_ldap_dn = "ou=Benutzer,ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de";
|
||||
$filter = "(&(objectclass=person)(cn=*)(sAMAccountName=*))";
|
||||
$sr = @ldap_search($ds, $_ldap_dn, $filter);
|
||||
$result = ldap_get_entries($ds,$sr);
|
||||
$anzahl = ldap_count_entries($ds, $sr);
|
||||
|
||||
for($i=0;$i<$anzahl;$i++){
|
||||
# AcitveDirectory oder OPEN LDAP
|
||||
if($global_ldap_art == 1){
|
||||
if($result[$i]['givenname'][0] != '' AND $result[$i]['sn'][0] != ''){
|
||||
$row['vorname'] = utf8_encode($result[$i]['givenname'][0]);
|
||||
$row['nachname'] = utf8_encode($result[$i]['sn'][0]);
|
||||
}
|
||||
}
|
||||
if($global_ldap_art == 2){
|
||||
if($result[$i]['givenname'][0] != '' AND $result[$i]['sn'][0] != ''){
|
||||
$row['vorname'] = $result[$i]['givenname'][0];
|
||||
$row['nachname'] = $result[$i]['sn'][0];
|
||||
}
|
||||
}
|
||||
|
||||
$row['uid'] = $result[$i]['samaccountname'][0];
|
||||
#echo "$vorname $nachname -> $uid<br>";
|
||||
$table_data1[] = $row;
|
||||
}
|
||||
|
||||
$table_data1 = sortArrayByFields(
|
||||
$table_data1,
|
||||
array('nachname' => array(SORT_ASC, SORT_STRING))
|
||||
);
|
||||
|
||||
# Bereits vorhandene UIDs löschen
|
||||
$query1 = "SELECT imtuid, uid
|
||||
FROM dep_user
|
||||
ORDER BY nachname ASC";
|
||||
|
||||
$result1 = $db->query ($query1)
|
||||
or die ("Cannot execute query1");
|
||||
while ($row1 = $result1->fetch_array()){
|
||||
$table_data1 = removeElementWithValue($table_data1, "uid", $row1['uid']);
|
||||
}
|
||||
# Arrynummerierung wieder richtig machen nach Löschen von werte {[0],[3][4][7]} -> {[0],[1][2][3]}. Sonst spinnt loop in html
|
||||
$table_data1 = array_values($table_data1);
|
||||
|
||||
# Übergabe des arrays in html
|
||||
$smarty->assign('table_data1', $table_data1);
|
||||
|
||||
}else{
|
||||
echo "Keine Verbindung zu LDAP";
|
||||
}
|
||||
|
||||
|
||||
# Alle Administratoren
|
||||
$query2 = "SELECT imtuid, vorname, nachname, fakultaet, uid
|
||||
FROM dep_user
|
||||
ORDER BY nachname ASC";
|
||||
|
||||
$result2 = $db->query ($query2)
|
||||
or die ("Cannot execute query2");
|
||||
|
||||
while ($row2 = $result2->fetch_array()){
|
||||
$table_data2[] = $row2;
|
||||
}
|
||||
$smarty->assign('table_data2', $table_data2);
|
||||
}
|
||||
|
||||
if($action == 'register'){
|
||||
|
||||
$uid = $_POST['dozent'];
|
||||
if($uid == ''){
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."\">";
|
||||
exit;
|
||||
}
|
||||
|
||||
$ds = @ldap_connect($global_ldap_serverhsnet, $global_ldap_porthsnet);
|
||||
#ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
|
||||
if ($ds) {
|
||||
# bind wird benötigt, sonst werden die Umlaute bei Namen nicht richtig angezeigt ?!!?
|
||||
$r = @ldap_bind($ds, $global_ldap_user, $global_ldap_pwd);
|
||||
$_ldap_dn = "ou=Benutzer,ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de";
|
||||
$sr = ldap_search($ds, $_ldap_dn, "sAMAccountName=$uid");
|
||||
$info = ldap_get_entries($ds, $sr);
|
||||
$anzahl = ldap_count_entries($ds, $sr);
|
||||
|
||||
# AcitveDirectory oder OPEN LDAP
|
||||
if($global_ldap_art == 1){
|
||||
$vorname = $info[0]['givenname'][0];
|
||||
$nachname = $info[0]['sn'][0];
|
||||
}
|
||||
if($global_ldap_art == 2){
|
||||
$vorname = $info[0]['givenname'][0];
|
||||
$nachname = $info[0]['sn'][0];
|
||||
}
|
||||
|
||||
$mail = $info[0]['mail'][0];
|
||||
$datum = date("Y-m-d H:i:s");
|
||||
|
||||
$db = dbconnect();
|
||||
$sql1 = $db->query("INSERT INTO dep_user ( vorname
|
||||
, nachname
|
||||
, mail
|
||||
, uid
|
||||
, erstell_dat
|
||||
)
|
||||
VALUES
|
||||
( '$vorname'
|
||||
, '$nachname'
|
||||
, '$mail'
|
||||
, '$uid'
|
||||
, '$datum'
|
||||
)
|
||||
");
|
||||
|
||||
|
||||
}
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."\">";
|
||||
|
||||
}
|
||||
|
||||
|
||||
if($action == 'del'){
|
||||
$imtuid = $_GET['imtuid'];
|
||||
|
||||
## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat.
|
||||
|
||||
$db = dbconnect();
|
||||
$del1 = $db->query("DELETE FROM dep_rollen_user_zuord WHERE imtuid = $imtuid");
|
||||
$del1 = $db->query("DELETE FROM dep_userlog WHERE imtuid = $imtuid");
|
||||
$del1 = $db->query("DELETE FROM dep_user WHERE imtuid = $imtuid");
|
||||
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."\">";
|
||||
|
||||
}
|
||||
|
||||
$smarty->assign('action', "$action");
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
456
func_jahresabschluss_erm.php
Executable file
456
func_jahresabschluss_erm.php
Executable file
@ -0,0 +1,456 @@
|
||||
<?php
|
||||
## Funktion berechnet die Ermäßigungen eines Jahres
|
||||
|
||||
|
||||
## Funktion muss überarbeitet werden, da Ausgangspunkt nicht mehr 594 LVS pauschal sind, sondern erst in Rangfolge 2 (sort_order) kommt.
|
||||
function jahresabschluss_erm($imtuid, $jahr)
|
||||
{
|
||||
$jahr2 = $jahr + 1;
|
||||
require("config.inc.php");
|
||||
require("func_sperre_erm.php");
|
||||
$db = dbconnect();
|
||||
|
||||
# Startwert: 594
|
||||
$query_startlvs = $db->query("SELECT lvs, sw, sws
|
||||
FROM dep_kat_lvs
|
||||
WHERE jahr <= '$jahr'
|
||||
ORDER BY jahr DESC
|
||||
LIMIT 1
|
||||
");
|
||||
$row_startlvs = $query_startlvs->fetch_array();
|
||||
$start_lvs = $row_startlvs['lvs'];
|
||||
$start_sw = $row_startlvs['sw'];
|
||||
|
||||
# Ermäßigte LVS auf 0 setzen. Wird folgend neu berechnet in while Schleife
|
||||
# Wird auch neu berechnet, wenn sie davor nicht auf 0 gesetzt wurden
|
||||
# Mutterschutz wird z.B. nicht berechnet. Das trägt der Admin ein
|
||||
|
||||
#$result_init = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
# SET lvs = 0
|
||||
# WHERE imtuid = $imtuid
|
||||
# AND jahr=$jahr
|
||||
# ");
|
||||
|
||||
|
||||
|
||||
$query0 = "SELECT deid, art, funktion, beginn, ende, sws, lvs, prozent, sort_order
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE imtuid=$imtuid
|
||||
AND jahr=$jahr
|
||||
ORDER BY sort_order ASC, beginn ASC";
|
||||
|
||||
$result0 = $db->query($query0) or die("Cannot execute query 0");
|
||||
|
||||
while ($row0 = $result0->fetch_array()) {
|
||||
|
||||
# Summe der bisherigen Ermäßigungen herausfinden: < sort_order
|
||||
$query_starterm = $db->query("SELECT sum(lvs) erm_ges
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahr'
|
||||
AND imtuid = $imtuid
|
||||
AND sort_order < $row0[sort_order]
|
||||
");
|
||||
$row_starterm = $query_starterm->fetch_array();
|
||||
$sumerm = $row_starterm['erm_ges'];
|
||||
|
||||
########################################
|
||||
# Schwerbehinderung
|
||||
########################################
|
||||
if ($row0['prozent'] > 0 and $row0['art'] == 'Schwerbehinderung') {
|
||||
|
||||
$lvs = "";
|
||||
$start = new DateTime($row0['beginn']);
|
||||
|
||||
# Endtag definiert?
|
||||
# --> Beginn der nächsten Schwerbehinderungs wenn kleiner 31.8 im Jahr2 sonst 31.8 vom Jahr2. Wenn nichts definiert, dann 31.8 Jahr2
|
||||
$query_endnext = $db->query("SELECT date_sub(beginn, INTERVAL 1 DAY) ende
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahr'
|
||||
AND imtuid = $imtuid
|
||||
AND art = 'Schwerbehinderung'
|
||||
and beginn > '$row0[beginn]'
|
||||
ORDER BY beginn ASC
|
||||
LIMIT 1
|
||||
");
|
||||
$row_endnext = $query_endnext->fetch_array();
|
||||
if ($row_endnext['ende'] == '') {
|
||||
# keine weitere Schwerbehinderung im aktuellen Jahr, dann 31.8 Jahr2
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} elseif ($row_endnext['ende'] >= $jahr2 . '-08-31') {
|
||||
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 Jahr2 als Enddatum setzen
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} else {
|
||||
# Ende ist der Tag vor der nächsten beginnenden Schwerbehinderung
|
||||
$ende = $row_endnext['ende'];
|
||||
}
|
||||
#echo $ende."<br>";
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
$anz_mon = 0;
|
||||
$anz_mon2 = 0;
|
||||
foreach (new DatePeriod($start, new DateInterval('P1M'), $end) as $cur) {
|
||||
# Schleife läuft alle Monate des Studienjahrs durch und prüft monatliche Schwerbehinderung
|
||||
$akt_mon = $cur->format('Y-m');
|
||||
$sperre = erm_sperre($imtuid, $akt_mon);
|
||||
if (!$sperre) {
|
||||
$anz_mon++;
|
||||
|
||||
$bish_lvs = $db->query("SELECT sum(lvs) bish_lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahr'
|
||||
AND imtuid = $imtuid
|
||||
AND sort_order < $row0[sort_order]
|
||||
");
|
||||
$row_bish_lvs = $bish_lvs->fetch_array();
|
||||
$cur_lvs = $start_lvs - $row_bish_lvs['bish_lvs'];
|
||||
# Monatliche Ermäßigung
|
||||
} else {
|
||||
$anz_mon2++;
|
||||
} #Ende Sperrmonate
|
||||
}
|
||||
$result_umf = $db->query("SELECT prozent
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE date_format(beginn, '%Y-%m') <= '$akt_mon'
|
||||
AND imtuid = $imtuid
|
||||
AND art = 'Schwerbehinderung'
|
||||
AND jahr = '$jahr'
|
||||
ORDER BY beginn desc
|
||||
LIMIT 1
|
||||
");
|
||||
$row_umf = $result_umf->fetch_array();
|
||||
|
||||
$lvs_ber = $cur_lvs * $row_umf['prozent'] / (12 - $anz_mon2) * $anz_mon;
|
||||
#echo $akt_mon." - $row_umf[prozent] - $cur_lvs - $lvs_ber<br>";
|
||||
# Summe LVS - Während der Dauer der Schwerbehinderung
|
||||
$lvs = $lvs + $lvs_ber;
|
||||
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET lvs = '$lvs'
|
||||
,monate = $anz_mon
|
||||
WHERE imtuid = $imtuid
|
||||
AND art = 'Schwerbehinderung'
|
||||
AND jahr=$jahr
|
||||
AND deid = $row0[deid]
|
||||
");
|
||||
} # Ende Schwerbehinderung
|
||||
|
||||
|
||||
########################################
|
||||
# Teilzeit
|
||||
########################################
|
||||
if ($row0['prozent'] > 0 and $row0['art'] == 'Teilzeit') {
|
||||
$lvs = "";
|
||||
$start = new DateTime($row0['beginn']);
|
||||
|
||||
# Endtag definiert?
|
||||
# --> Beginn der nächsten Teilzeit wenn kleiner 31.8 im Jahr2 sonst 31.8 vom Jahr2. Wenn nichts definiert, dann 31.8 Jahr2
|
||||
$query_endnext = $db->query("SELECT date_sub(beginn, INTERVAL 1 DAY) ende
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahr'
|
||||
AND imtuid = $imtuid
|
||||
AND art = 'Teilzeit'
|
||||
and beginn > '$row0[beginn]'
|
||||
ORDER BY beginn ASC
|
||||
LIMIT 1
|
||||
");
|
||||
$row_endnext = $query_endnext->fetch_array();
|
||||
if ($row_endnext['ende'] == '') {
|
||||
# keine weitere Teilzeit im aktuellen Jahr, dann 31.8 Jahr2
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} elseif ($row_endnext['ende'] >= $jahr2 . '-08-31') {
|
||||
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 Jahr2 als Enddatum setzen
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} else {
|
||||
# Ende ist der Tag vor der nächsten beginnenden Teilzeit
|
||||
$ende = $row_endnext['ende'];
|
||||
}
|
||||
#echo $ende."<br>";
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
$anz_mon = 0;
|
||||
foreach (new DatePeriod($start, new DateInterval('P1M'), $end) as $cur) {
|
||||
# Schleife läuft alle Monate des Studienjahrs durch und prüft monatliche Teilzeit
|
||||
$akt_mon = $cur->format('Y-m');
|
||||
$sperre = erm_sperre($imtuid, $akt_mon);
|
||||
if (!$sperre) {
|
||||
$anz_mon++;
|
||||
}
|
||||
}
|
||||
|
||||
# Berechnung im Zeitraum
|
||||
$lvs = $start_lvs * (1 - $row0['prozent']) / 12 * $anz_mon;
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET lvs = '$lvs'
|
||||
,monate = $anz_mon
|
||||
WHERE imtuid = $imtuid
|
||||
AND art = 'Teilzeit'
|
||||
AND jahr=$jahr
|
||||
AND deid = $row0[deid]
|
||||
");
|
||||
} # Ende Teilzeit
|
||||
|
||||
########################################
|
||||
# Mutterschutz / Elternzeit
|
||||
########################################
|
||||
# Trägt Admin ein
|
||||
|
||||
|
||||
########################################
|
||||
# Ermäßigung/Freistellung Rektorat/Dekanat (§§ 7, 8 LVVO)
|
||||
########################################
|
||||
if ($row0['sws'] > 0 and strpos($row0['art'], "§§ 7, 8 LVVO") !== false) {
|
||||
|
||||
$lvs = "";
|
||||
$start = new DateTime($row0['beginn']);
|
||||
|
||||
# Endtag definiert?
|
||||
# Das meiste wird bei der Erfassung vom Prof. abgefangen. Es wird bis max 31.8 erfasst. Wenn leer, dann auch 31.8. Keine mehrjährigen Erfassungen möglich.
|
||||
# Somit ist eigentlich immer ein Ende definiert.
|
||||
# --> Beginn der nächsten Teilzeit wenn kleiner 31.8 im Jahr2 sonst 31.8 vom Jahr2. Wenn nichts definiert, dann 31.8 Jahr2
|
||||
|
||||
if ($row0['ende'] == '') {
|
||||
# keine weitere Ermäßigung/Freistellung Rektorat/Dekanat (§§ 7, 8 LVVO) im aktuellen Jahr, dann 31.8 Jahr2
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} elseif ($row0['ende'] >= $jahr2 . '-08-31') {
|
||||
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 Jahr2 als Enddatum setzen
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} else {
|
||||
# Ende ist der Tag vor der nächsten beginnenden Ermäßigung/Freistellung Rektorat/Dekanat (§§ 7, 8 LVVO)
|
||||
$ende = $row0['ende'];
|
||||
}
|
||||
#echo $ende."<br>";
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
$anz_mon = 0;
|
||||
|
||||
foreach (new DatePeriod($start, new DateInterval('P1M'), $end) as $cur) {
|
||||
$akt_mon = $cur->format('Y-m');
|
||||
$sperre = erm_sperre($imtuid, $akt_mon);
|
||||
if (!$sperre) {
|
||||
$anz_mon++;
|
||||
} #Ende Sperrmonate
|
||||
}
|
||||
|
||||
$lvs = $row0['sws'] * $start_sw / 12 * $anz_mon;
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET lvs = '$lvs'
|
||||
,monate = $anz_mon
|
||||
WHERE imtuid = $imtuid
|
||||
AND art like '%7, 8 LVVO%'
|
||||
AND jahr=$jahr
|
||||
AND deid = $row0[deid]
|
||||
");
|
||||
} # Ende Ermäßigung/Freistellung Rektorat/Dekanat (§§ 7, 8 LVVO)
|
||||
|
||||
########################################
|
||||
# Ermäßigung/Freistellung Funktion/Beauftragung (§ 11 LVVO)
|
||||
########################################
|
||||
if ($row0['sws'] > 0 and strpos($row0['art'], "§ 11 LVVO") !== false) {
|
||||
|
||||
$lvs = "";
|
||||
$start = new DateTime($row0['beginn']);
|
||||
|
||||
# Endtag definiert?
|
||||
# Das meiste wird bei der Erfassung vom Prof. abgefangen. Es wird bis max 31.8 erfasst. Wenn leer, dann auch 31.8. Keine mehrjährigen Erfassungen möglich.
|
||||
# Somit ist eigentlich immer ein Ende definiert.
|
||||
# --> Beginn der nächsten Teilzeit wenn kleiner 31.8 im Jahr2 sonst 31.8 vom Jahr2. Wenn nichts definiert, dann 31.8 Jahr2
|
||||
|
||||
if ($row0['ende'] == '') {
|
||||
# keine weitere Ermäßigung/Freistellung Rektorat/Dekanat (§ 11 LVVO) im aktuellen Jahr, dann 31.8 Jahr2
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} elseif ($row0['ende'] >= $jahr2 . '-08-31') {
|
||||
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 Jahr2 als Enddatum setzen
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} else {
|
||||
# Ende ist der Tag vor der nächsten beginnenden Ermäßigung/Freistellung Rektorat/Dekanat (§ 11 LVVO)
|
||||
$ende = $row0['ende'];
|
||||
}
|
||||
#echo $ende."<br>";
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
$anz_mon = 0;
|
||||
foreach (new DatePeriod($start, new DateInterval('P1M'), $end) as $cur) {
|
||||
$akt_mon = $cur->format('Y-m');
|
||||
$sperre = erm_sperre($imtuid, $akt_mon);
|
||||
if (!$sperre) {
|
||||
$anz_mon++;
|
||||
} #Ende Sperrmonate
|
||||
}
|
||||
|
||||
$lvs = $row0['sws'] * $start_sw / 12 * $anz_mon;
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET lvs = '$lvs'
|
||||
,monate = $anz_mon
|
||||
WHERE imtuid = $imtuid
|
||||
AND art like '%11 LVVO%'
|
||||
AND jahr=$jahr
|
||||
AND deid = $row0[deid]
|
||||
");
|
||||
} # Ende Ermäßigung/Freistellung Rektorat/Dekanat (§ 11 LVVO)
|
||||
|
||||
########################################
|
||||
# Ermäßigung/Freistellung Forschungs- und Entwicklungsaufgaben ($ 2 Abs. 8, 9 LVVO)
|
||||
########################################
|
||||
if ($row0['sws'] > 0 and strpos($row0['art'], "§ 2 Abs. 8, 9 LVVO") !== false) {
|
||||
$lvs = "";
|
||||
$start = new DateTime($row0['beginn']);
|
||||
|
||||
# Endtag definiert?
|
||||
# Das meiste wird bei der Erfassung vom Prof. abgefangen. Es wird bis max 31.8 erfasst. Wenn leer, dann auch 31.8. Keine mehrjährigen Erfassungen möglich.
|
||||
# Somit ist eigentlich immer ein Ende definiert.
|
||||
# --> Beginn der nächsten Teilzeit wenn kleiner 31.8 im Jahr2 sonst 31.8 vom Jahr2. Wenn nichts definiert, dann 31.8 Jahr2
|
||||
|
||||
if ($row0['ende'] == '') {
|
||||
# keine weitere Ermäßigung/Freistellung Forschung- und Enwicklungsaufgaben (§ 2 Abs. 8, 9 LVVO) im aktuellen Jahr, dann 31.8 Jahr2
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} elseif ($row0['ende'] >= $jahr2 . '-08-31') {
|
||||
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 Jahr2 als Enddatum setzen
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} else {
|
||||
# Ende ist der Tag vor der nächsten beginnenden Ermäßigung/Freistellung Forschung- und Enwicklungsaufgaben (§ 2 Abs. 8, 9 LVVO)
|
||||
$ende = $row0['ende'];
|
||||
}
|
||||
#echo $ende."<br>";
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
$anz_mon = 0;
|
||||
|
||||
foreach (new DatePeriod($start, new DateInterval('P1M'), $end) as $cur) {
|
||||
$akt_mon = $cur->format('Y-m');
|
||||
$sperre = erm_sperre($imtuid, $akt_mon);
|
||||
if (!$sperre) {
|
||||
$anz_mon++;
|
||||
}
|
||||
}
|
||||
|
||||
$lvs = $row0['sws'] * $start_sw / 12 * $anz_mon;
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET lvs = '$lvs'
|
||||
,monate = $anz_mon
|
||||
WHERE imtuid = $imtuid
|
||||
AND art like '%§ 2 Abs. 8, 9 LVVO%'
|
||||
AND jahr=$jahr
|
||||
AND deid = $row0[deid]
|
||||
");
|
||||
} # Ende Ermäßigung/Freistellung Forschungs- und Entwicklungsaufgaben (§ 2 Abs. 8, 9 LVVO)
|
||||
|
||||
|
||||
########################################
|
||||
# Ermäßigung Forschungssemester/Praxissemester/Abordnungen
|
||||
########################################
|
||||
if (($row0['beginn'] != '' OR $row0['beginn'] != '0000-00-00') and strpos($row0['art'], "Forschungssemester/Praxissemester/Abordnungen") !== false) {
|
||||
$lvs = "";
|
||||
$start = new DateTime($row0['beginn']);
|
||||
|
||||
# Endtag definiert?
|
||||
# Das meiste wird bei der Erfassung vom Prof. abgefangen. Es wird bis max 31.8 erfasst. Wenn leer, dann auch 31.8. Keine mehrjährigen Erfassungen möglich.
|
||||
# Somit ist eigentlich immer ein Ende definiert.
|
||||
# --> Beginn der nächsten Teilzeit wenn kleiner 31.8 im Jahr2 sonst 31.8 vom Jahr2. Wenn nichts definiert, dann 31.8 Jahr2
|
||||
|
||||
if ($row0['ende'] == '') {
|
||||
# keine weitere Ermäßigung Forschungssemester/Praxissemester/Abordnungen im aktuellen Jahr, dann 31.8 Jahr2
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} elseif ($row0['ende'] >= $jahr2 . '-08-31') {
|
||||
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 Jahr2 als Enddatum setzen
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} else {
|
||||
# Ende ist der Tag vor der nächsten beginnenden ErmäßigungForschungssemester/Praxissemester/Abordnungen
|
||||
$ende = $row0['ende'];
|
||||
}
|
||||
#echo $ende."<br>";
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
$anz_mon = 0;
|
||||
foreach (new DatePeriod($start, new DateInterval('P1M'), $end) as $cur) {
|
||||
$anz_mon++;
|
||||
}
|
||||
|
||||
$bish_lvs = $db->query("SELECT sum(lvs) bish_lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahr'
|
||||
AND imtuid = $imtuid
|
||||
AND sort_order < $row0[sort_order]
|
||||
");
|
||||
$row_bish_lvs = $bish_lvs->fetch_array();
|
||||
$cur_lvs = $start_lvs - $row_bish_lvs['bish_lvs'];
|
||||
|
||||
$lvs = $cur_lvs / 12 * $anz_mon;
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET lvs = '$lvs'
|
||||
,monate = $anz_mon
|
||||
WHERE imtuid = $imtuid
|
||||
AND art like '%Forschungssemester/Praxissemester/Abordnungen%'
|
||||
AND jahr=$jahr
|
||||
AND deid = $row0[deid]
|
||||
");
|
||||
} # Ende Ermäßigung Forschungssemester/Praxissemester/Abordnungen
|
||||
|
||||
########################################
|
||||
# Ermäßigung Ruhestand
|
||||
########################################
|
||||
if (($row0['beginn'] != '' OR $row0['beginn'] != '0000-00-00') and strpos($row0['art'], "Ruhestand") !== false) {
|
||||
|
||||
$lvs = "";
|
||||
|
||||
# Erfasst wird der letzte Arbeitstag. Programm setzt das immer auf den Monatsletzten. Daher muss für den Beginn 1 Tag addiert werden. Erfasst wurde 28.2 Beginn ist dann 01.03
|
||||
$newDate = new DateTime($row0['beginn']);
|
||||
$newDate->add(new DateInterval('P1D')); // P1D means a period of 1 day
|
||||
$newDateForm= $newDate->format('Y-m-d');
|
||||
$start = new DateTime($newDateForm);
|
||||
|
||||
# Endtag definiert?
|
||||
# Das meiste wird bei der Erfassung vom Prof. abgefangen. Es wird bis max 31.8 erfasst. Wenn leer, dann auch 31.8. Keine mehrjährigen Erfassungen möglich.
|
||||
# Somit ist eigentlich immer ein Ende definiert.
|
||||
# --> Beginn der nächsten Teilzeit wenn kleiner 31.8 im Jahr2 sonst 31.8 vom Jahr2. Wenn nichts definiert, dann 31.8 Jahr2
|
||||
|
||||
if ($row0['ende'] == '' or $row0['ende'] == '0000-00-00') {
|
||||
# keine weitere Ermäßigung Forschungssemester/Praxissemester/Abordnungen im aktuellen Jahr, dann 31.8 Jahr2
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} elseif ($row0['ende'] >= $jahr2 . '-08-31') {
|
||||
# Wenn das nächste Datum höher als der 31.8 im Folgejahr ist, dann 31.8 Jahr2 als Enddatum setzen
|
||||
$ende = $jahr2 . '-08-31';
|
||||
} else {
|
||||
# Ende ist der Tag vor der nächsten beginnenden ErmäßigungForschungssemester/Praxissemester/Abordnungen
|
||||
$ende = $row0['ende'];
|
||||
}
|
||||
|
||||
#echo $ende."<br>";
|
||||
$end = date_create($ende, new DateTimeZone('GMT'));
|
||||
$anz_mon = 0;
|
||||
foreach (new DatePeriod($start, new DateInterval('P1M'), $end) as $cur) {
|
||||
$anz_mon++;
|
||||
}
|
||||
|
||||
$bish_lvs = $db->query("SELECT sum(lvs) bish_lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahr'
|
||||
AND imtuid = $imtuid
|
||||
AND sort_order < $row0[sort_order]
|
||||
");
|
||||
$row_bish_lvs = $bish_lvs->fetch_array();
|
||||
$cur_lvs = $start_lvs - $row_bish_lvs['bish_lvs'];
|
||||
|
||||
$lvs = $cur_lvs / 12 * $anz_mon;
|
||||
|
||||
$result = $db->query("UPDATE dep_deputat_ermaessigung
|
||||
SET lvs = '$lvs'
|
||||
,monate = $anz_mon
|
||||
WHERE imtuid = $imtuid
|
||||
AND art like '%Ruhestand%'
|
||||
AND jahr=$jahr
|
||||
AND deid = $row0[deid]
|
||||
");
|
||||
} # Ende Ermäßigung Ruhestand
|
||||
|
||||
} # Ende äußere While Schleife
|
||||
|
||||
$bish_lvs = $db->query("SELECT sum(lvs) bish_lvs
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE jahr = '$jahr'
|
||||
AND imtuid = $imtuid
|
||||
");
|
||||
$row_bish_lvs = $bish_lvs->fetch_array();
|
||||
$cur_lvs = $start_lvs - $row_bish_lvs['bish_lvs'];
|
||||
|
||||
#echo $cur_lvs."<br>";
|
||||
}
|
||||
|
||||
#echo jahresabschluss_erm(1,2019);
|
||||
?>
|
496
func_jahresabschlussberechnung.php
Executable file
496
func_jahresabschlussberechnung.php
Executable file
@ -0,0 +1,496 @@
|
||||
<?php
|
||||
/*
|
||||
##################################################################################
|
||||
## Vorgehensweise basierend auf "190605 Muster Excel mit Formeln.xlsx":
|
||||
1) IST erfassen Zeile 7
|
||||
2) SOLL erfassen Zeile 8
|
||||
3) Über-Unterdeputat lfd Jahr berechnen Zeile 9: Zeile 7-8
|
||||
4) Ist Ergebnis aus 3 negativ
|
||||
JA: (Zeile 11-17) Schauen, ob in den letzten 5 Jahren ob ein Überdeputat vorhanden ist, welches verwendet werden kann. Es gilt: Das äteste ÜD muss zuerst verbraucht werden
|
||||
Ggf: Vorhandene Stunden bis zum SOLL aufrechnen
|
||||
(Nein: Ist Ergebnis 3 (Zeile 9) 0 oder Positiv muss nichts gemacht werden. Dieser Wert wird 1:1 in Zeile 18 übertragen Differenz)
|
||||
4a) Differenz bilden (Rechenerleichterung): Differenz ist bei JA: 3 + Summe aus 4ja; Nein: Ergebnis aus 3 (Zeile 9)
|
||||
|
||||
5) Über- bzw. Unterdeputat aus dem Vorjahr übernehmen? (Zeile 19)
|
||||
6) Summe 4a und 5 bilden (Zeile 20)
|
||||
7) Gibt es noch Std, die verfallen, also die, die 5 Jahre alt sind (Zeile 22)
|
||||
8) Jahresabschluss gesamtstand (Zeile 24): Übertrag ins nächste Jahr (Zeile 20-22)
|
||||
9) Berechnung des Überdeputatverbrauchs mit Restwerten der Vorjahre (Zeile 25-29)
|
||||
10) Übertrag des Rests des aktuellen Jahres
|
||||
Wenn: 5 (Zeile 19) kleiner 0, dann Wert aus 6 (Zeile 20) sonst Wert aus 18
|
||||
##################################################################################
|
||||
*/
|
||||
require_once("config.inc.php");
|
||||
require_once("functions.php");
|
||||
|
||||
|
||||
function jahresabschlussberechnung($uid, $jahrgang, $soll, $ist, $debug=0)
|
||||
{
|
||||
$vorjahr1 = $jahrgang - 1;
|
||||
|
||||
if ($debug == 1) {
|
||||
$jahrgang_next = $jahrgang+1;
|
||||
echo "<h1>$jahrgang/$jahrgang_next</h1>";
|
||||
}
|
||||
|
||||
# Funktion um das Array aufsteigend zu sortieren
|
||||
|
||||
/*
|
||||
# In functions.php
|
||||
function sortArrayByFields($arr, $fields)
|
||||
{
|
||||
$sortFields = array();
|
||||
$args = array();
|
||||
|
||||
foreach ($arr as $key => $row) {
|
||||
foreach ($fields as $field => $order) {
|
||||
$sortFields[$field][$key] = $row[$field];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($fields as $field => $order) {
|
||||
$args[] = $sortFields[$field];
|
||||
|
||||
if (is_array($order)) {
|
||||
foreach ($order as $pt) {
|
||||
$args[$pt];
|
||||
}
|
||||
} else {
|
||||
$args[] = $order;
|
||||
}
|
||||
}
|
||||
|
||||
$args[] =& $arr;
|
||||
|
||||
call_user_func_array('array_multisort', $args);
|
||||
|
||||
return $arr;
|
||||
}
|
||||
*/
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "<table border=1>
|
||||
<tr>
|
||||
<td>Bezeichnung</td>
|
||||
<td>Wert</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ist</td>
|
||||
<td>$ist</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Soll</td>
|
||||
<td>$soll</td>
|
||||
</tr>";
|
||||
}
|
||||
$db = dbconnect();
|
||||
# Jahrgang bereinigen
|
||||
$sql0 = $db->query("DELETE FROM dep_jahresabschluss WHERE imtuid =$uid AND jahr=$jahrgang");
|
||||
$sql0 = $db->query("DELETE FROM dep_jahresabschluss_restdeputate WHERE imtuid =$uid AND jahr=$jahrgang");
|
||||
|
||||
# Anzahl der zu berücksichtigenden Verfallsjahre
|
||||
$result_verfall = $db->query("SELECT abjahr, jahre FROM dep_kat_depverfall WHERE abjahr <= $jahrgang ORDER BY abjahr DESC limit 1");
|
||||
$row_verfall = $result_verfall->fetch_array();
|
||||
$anz_vj = $row_verfall['jahre'];
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Überdeputatsverfall nach Jahren</td>
|
||||
<td>$anz_vj</td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
# Punkt 3: Ergebnis laufendes Jahr
|
||||
$deperg_aktjahr = $ist - $soll;
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Über-Unterdeputat (Zeile 9)</td>
|
||||
<td>$deperg_aktjahr</td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
# Punkt 4: Bewertung des Ergebnisses
|
||||
if ($deperg_aktjahr < 0) {
|
||||
# 4JA: Ergebnis ist negativ
|
||||
# Die letzten 5 Jahre holen
|
||||
|
||||
$result_vj1 = $db->query("SELECT deperg_aktjahr FROM dep_jahresabschluss WHERE jahr = $vorjahr1 AND imtuid=$uid");
|
||||
$row_vj1 = $result_vj1->fetch_array();
|
||||
|
||||
$vorjahre[0]['vorjahr'] = $vorjahr1;
|
||||
$vorjahre[0]['startwert'] = 0;
|
||||
$vorjahre[0]['differenz'] = 0;
|
||||
$vorjahre[0]['differenzjahr'] = 0;
|
||||
$vorjahre[0]['endwert'] = $row_vj1[deperg_aktjahr];
|
||||
|
||||
for ($i = 0; $i < $anz_vj; $i++) {
|
||||
|
||||
if ($i >= 1) {
|
||||
|
||||
$vorjahr = $vorjahr1 - $i;
|
||||
$result_vj = $db->query("SELECT startwert, differenz, differenzjahr, endwert FROM dep_jahresabschluss_restdeputate WHERE jahr = $vorjahr1 AND imtuid=$uid AND vorjahr= $vorjahr");
|
||||
$row_vj = $result_vj->fetch_array();
|
||||
|
||||
$vorjahre[$i]['vorjahr'] = $vorjahr;
|
||||
$vorjahre[$i]['startwert'] = $row_vj[startwert];
|
||||
$vorjahre[$i]['differenz'] = $row_vj[differenz];
|
||||
$vorjahre[$i]['differenzjahr'] = $row_vj[differenzjahr];
|
||||
$vorjahre[$i]['endwert'] = $row_vj[endwert];
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($vorjahre)){
|
||||
$sorted_vj = sortArrayByFields($vorjahre, array(
|
||||
'vorjahr' => SORT_ASC
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
|
||||
#$vorjahre = ksort($vorjahre);
|
||||
#print_r($sorted_vj);
|
||||
|
||||
# Vorjahre durchlaufen, wo man das Unterdeputat ausgleichen kann
|
||||
$unterdeputat = $deperg_aktjahr * -1;
|
||||
|
||||
$genommene_stdges = 0;
|
||||
|
||||
for ($k = 0; $k < count($sorted_vj); $k++) {
|
||||
$akt_vorjahr = $sorted_vj[$k][vorjahr];
|
||||
$akt_endwert = $sorted_vj[$k][endwert];
|
||||
if ($sorted_vj[$k][endwert] > 0) {
|
||||
## Dann kann man ausgleichen, die Frage ist, ob es für das Unterdeputat ($deperg_aktjahr) ausreicht:
|
||||
|
||||
if ($akt_endwert >= $unterdeputat) {
|
||||
# Endwert passt voll
|
||||
$rest = $akt_endwert - $unterdeputat;
|
||||
$genommene_std = $unterdeputat;
|
||||
$genommene_stdges = $genommene_stdges + $genommene_std;
|
||||
$unterdeputat = 0;
|
||||
|
||||
$aktjahr[$k]['vorjahr'] = $akt_vorjahr;
|
||||
$aktjahr[$k]['startwert'] = $akt_endwert;
|
||||
$aktjahr[$k]['differenz'] = $genommene_std * -1;
|
||||
$aktjahr[$k]['differenzjahr'] = $jahrgang;
|
||||
$aktjahr[$k]['endwert'] = $rest;
|
||||
$test = 1;
|
||||
} else {
|
||||
# vorhandenes Überdeputat reicht nicht aus. Es bleibt ein Restunterdeputat
|
||||
$unterdeputat = $unterdeputat - $akt_endwert;
|
||||
$genommene_std = $akt_endwert;
|
||||
$genommene_stdges = $genommene_stdges + $genommene_std;
|
||||
$rest = 0;
|
||||
$test = 2;
|
||||
$aktjahr[$k]['vorjahr'] = $akt_vorjahr;
|
||||
$aktjahr[$k]['startwert'] = $akt_endwert;
|
||||
$aktjahr[$k]['differenz'] = $genommene_std * -1;
|
||||
$aktjahr[$k]['differenzjahr'] = $jahrgang;
|
||||
$aktjahr[$k]['endwert'] = $rest;
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
# Nichts zu holen in diesem Jahr
|
||||
$aktjahr[$k]['vorjahr'] = $akt_vorjahr;
|
||||
$aktjahr[$k]['startwert'] = 0;
|
||||
$aktjahr[$k]['differenz'] = 0;
|
||||
$aktjahr[$k]['differenzjahr'] = 0;
|
||||
$aktjahr[$k]['endwert'] = 0;
|
||||
$genommene_std = 0;
|
||||
$genommene_stdges = $genommene_stdges + $genommene_std;
|
||||
}
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Überdeputat abbauen $akt_vorjahr</td>
|
||||
<td>$genommene_std</td>
|
||||
</tr>";
|
||||
}
|
||||
}
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Genommene Gesamtstd (Zeile 11)</td>
|
||||
<td>$genommene_stdges</td>
|
||||
</tr>";
|
||||
}
|
||||
# Zeile 18: Differenz
|
||||
if ($deperg_aktjahr > 0) {
|
||||
$differenz = 0 + $deperg_aktjahr;
|
||||
} else {
|
||||
$differenz = $genommene_stdges + $deperg_aktjahr;
|
||||
}
|
||||
if(isset($aktjahr)){
|
||||
$sorted_aj = sortArrayByFields($aktjahr, array(
|
||||
'vorjahr' => SORT_ASC
|
||||
));
|
||||
}
|
||||
} else {
|
||||
# 4Nein: Ergebnis ist positiv, dann ist es der gleiche Wert wie Zeile 9
|
||||
$differenz = $deperg_aktjahr;
|
||||
}
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Differenz (Zeile 18)</td>
|
||||
<td>$differenz</td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
#5) Über- Unterdeputat aus Vorjahr übernehmen
|
||||
|
||||
$result_vj_ende = $db->query("SELECT dep_gesamt_nach_verfall FROM dep_jahresabschluss WHERE jahr = $vorjahr1 AND imtuid=$uid");
|
||||
$row_vj_ende = $result_vj_ende->fetch_array();
|
||||
$vorjahresendwert = $row_vj_ende[dep_gesamt_nach_verfall] - $genommene_stdges;
|
||||
|
||||
|
||||
if ($vorjahresendwert == '') {
|
||||
$vorjahresendwert = 0;
|
||||
}
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Vorjahreswert (Zeile 19)</td>
|
||||
<td>$vorjahresendwert</td>
|
||||
</tr>";
|
||||
}
|
||||
#6) Über- Unterdeputat gesamt (Zeile 20)
|
||||
$deputat_gesamt = $differenz + $vorjahresendwert;
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Deputat gesamt (Zeile 20)</td>
|
||||
<td>$deputat_gesamt</td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
# 7) verfallene Stunden prüfen
|
||||
# Es verfallen Stunden, die Älter als 5 Jahre sind. Entweder sind diese im aktuellen Jahr genommen worden
|
||||
|
||||
# Welches Jahr ist das betroffene Jahr
|
||||
$verfall_jahr = $jahrgang - $anz_vj;
|
||||
|
||||
$key = strval(@array_search($verfall_jahr, array_column($sorted_aj, 'vorjahr')));
|
||||
# Wenn eine arraykey gefunden wird, dann den endwert, sonst den Wert aus DB, da dieser Verfallswert dann im aktuellen Jahr nicht angefasst wurde
|
||||
|
||||
if ($key != '') {
|
||||
# im aktuellen Jahr wurde etwas verwendet um ein Unterdeputat auszugleichen. Dann verfällt nur der Restwert
|
||||
$verfall = $sorted_aj[$key]['endwert'];
|
||||
} else {
|
||||
# Wert wurde nicht angefasst, dann ist der letzte Wert in der Datenbank maßgebend für den Verfall
|
||||
$result_verfall = $db->query("SELECT endwert FROM dep_jahresabschluss_restdeputate WHERE jahr = $vorjahr1 AND imtuid=$uid AND vorjahr= $verfall_jahr");
|
||||
$row_verfall = $result_verfall->fetch_array();
|
||||
$verfall = $row_verfall['endwert'];
|
||||
}
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Verfall (Zeile 22)</td>
|
||||
<td>$verfall</td>
|
||||
</tr>";
|
||||
}
|
||||
# 8) Jahresabschluss gesamtstand: Zeile 20-22
|
||||
$jahresabschluss_gesamt = $deputat_gesamt - $verfall;
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Rest nach Verfall (Zeile 24)</td>
|
||||
<td>$jahresabschluss_gesamt</td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
# 9) Restdeputate übernehmen: Zeile 25-29; Tabelle "dep_jahresabschluss_restdeputate"
|
||||
# Sind Überdeputate verbraucht worden, dann sind sie in array $sorted_aj, sonst verganene Werte nehmen
|
||||
|
||||
# Vorjahre durchlaufen
|
||||
|
||||
# 02.06.2022: -1 gelöscht. Ansicht ist sonst nicht 5 Jahre im Jahresabschluss
|
||||
# for ($i = 0; $i < $anz_vj - 1; $i++) {
|
||||
for ($i = 0; $i < $anz_vj; $i++) {
|
||||
$vorjahr_rest = $vorjahr1 - $i;
|
||||
$rest_nach_jahren[$i][jahr] = $vorjahr_rest;
|
||||
|
||||
$key_rest = strval(@array_search($vorjahr_rest, array_column($sorted_aj, 'vorjahr')));
|
||||
|
||||
# Wenn eine arraykey gefunden wird, dann den endwert, sonst den Wert aus DB, da dieser Verfallswert dann im aktuellen Jahr nicht angefasst wurde
|
||||
if ($key_rest != '') {
|
||||
# Endwert aus array holen
|
||||
$startwert = $sorted_aj[$key_rest]['startwert'];
|
||||
$differenz1 = $sorted_aj[$key_rest]['differenz'];
|
||||
$differenzjahr1 = $sorted_aj[$key_rest]['differenzjahr'];
|
||||
$endwert = $sorted_aj[$key_rest]['endwert'];
|
||||
$rest_nach_jahren[$i][startwert] = $startwert;
|
||||
$rest_nach_jahren[$i][differenz] = $differenz1;
|
||||
$rest_nach_jahren[$i][differenzjahr] = $differenzjahr1;
|
||||
$rest_nach_jahren[$i][endwert] = $endwert;
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Endwert1 $vorjahr_rest (Zeile 25-28)</td>
|
||||
<td>$endwert</td>
|
||||
</tr>";
|
||||
}
|
||||
} else {
|
||||
# letzte Endwert auslesen
|
||||
|
||||
if ($vorjahr1 == $vorjahr_rest) {
|
||||
$result_endwert = $db->query("SELECT deperg_aktjahr FROM dep_jahresabschluss WHERE jahr = $vorjahr1");
|
||||
$row_endwert = $result_endwert->fetch_array();
|
||||
$rest_nach_jahren[$i][startwert] = 0;
|
||||
$rest_nach_jahren[$i][differenz] = 0;
|
||||
$rest_nach_jahren[$i][differenzjahr] = 0;
|
||||
$endwert = $row_endwert['deperg_aktjahr'];
|
||||
if ($endwert <= 0) {
|
||||
$endwert = 0;
|
||||
$rest_nach_jahren[$i][endwert] = 0;
|
||||
} else {
|
||||
$rest_nach_jahren[$i][endwert] = $endwert;
|
||||
}
|
||||
} else {
|
||||
$result_endwert = $db->query("SELECT endwert FROM dep_jahresabschluss_restdeputate WHERE jahr = $vorjahr1 AND imtuid=$uid AND vorjahr= $vorjahr_rest");
|
||||
$row_endwert = $result_endwert->fetch_array();
|
||||
$rest_nach_jahren[$i][startwert] = 0;
|
||||
$rest_nach_jahren[$i][differenz] = 0;
|
||||
$rest_nach_jahren[$i][differenzjahr] = 0;
|
||||
$endwert = $row_endwert['endwert'];
|
||||
if ($endwert <= 0) {
|
||||
$endwert = 0;
|
||||
$rest_nach_jahren[$i][endwert] = 0;
|
||||
} else {
|
||||
$rest_nach_jahren[$i][endwert] = $endwert;
|
||||
}
|
||||
}
|
||||
if ($debug == 1) {
|
||||
echo "<tr>
|
||||
<td>Endwert2 $vorjahr_rest (Zeile 25-28)</td>
|
||||
<td>$endwert</td>
|
||||
</tr>";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if(isset($rest_nach_jahren)){
|
||||
$sorted_rest_nach_jahren = sortArrayByFields($rest_nach_jahren, array(
|
||||
'jahr' => SORT_ASC
|
||||
));
|
||||
}
|
||||
for ($k = 0; $k < count($sorted_rest_nach_jahren); $k++) {
|
||||
$vorjahr = $sorted_rest_nach_jahren[$k][jahr];
|
||||
$startwert = $sorted_rest_nach_jahren[$k][startwert];
|
||||
$differenz2 = $sorted_rest_nach_jahren[$k][differenz];
|
||||
$differenzjahr2 = $sorted_rest_nach_jahren[$k][differenzjahr];
|
||||
$endwert = $sorted_rest_nach_jahren[$k][endwert];
|
||||
|
||||
|
||||
$sql1 = $db->query("INSERT INTO dep_jahresabschluss_restdeputate ( imtuid
|
||||
, jahr
|
||||
, vorjahr
|
||||
, startwert
|
||||
, differenz
|
||||
, differenzjahr
|
||||
, endwert
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, '$vorjahr'
|
||||
, '$startwert'
|
||||
, '$differenz2'
|
||||
, '$differenzjahr2'
|
||||
, '$endwert'
|
||||
)
|
||||
");
|
||||
|
||||
}
|
||||
|
||||
# 10) Vorjaresendwert
|
||||
if ($vorjahresendwert < 0) {
|
||||
# Zeile 20
|
||||
$jahresendwert_uebertrag = $deputat_gesamt;
|
||||
} else {
|
||||
# Zeile 18
|
||||
$jahresendwert_uebertrag = $differenz;
|
||||
}
|
||||
|
||||
if ($debug == 1) {
|
||||
echo "
|
||||
<tr>
|
||||
<td>Übertrag $jahrgang (Zeile 29)</td>
|
||||
<td>$jahresendwert_uebertrag</td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
|
||||
$sql1 = $db->query("INSERT INTO dep_jahresabschluss ( imtuid
|
||||
, jahr
|
||||
, soll
|
||||
, ist
|
||||
, dep_gesamt
|
||||
, dep_verfall_jahr
|
||||
, dep_verfall
|
||||
, dep_gesamt_nach_verfall
|
||||
, deperg_aktjahr
|
||||
)
|
||||
VALUES
|
||||
( '$uid'
|
||||
, '$jahrgang'
|
||||
, '$soll'
|
||||
, '$ist'
|
||||
, '$deputat_gesamt'
|
||||
, '$verfall_jahr'
|
||||
, '$verfall'
|
||||
, '$jahresabschluss_gesamt'
|
||||
, '$jahresendwert_uebertrag'
|
||||
)
|
||||
");
|
||||
|
||||
|
||||
}
|
||||
|
||||
#echo jahresabschlussberechnung(1, 2024, 594, 500, 1);
|
||||
#echo jahresabschlussberechnung(1, 2023, 594, 450, 1);
|
||||
#echo jahresabschlussberechnung(1, 2022, 594, 500, 1);
|
||||
#echo jahresabschlussberechnung(1, 2021, 594, 800, 1);
|
||||
#echo jahresabschlussberechnung(1, 2020, 594, 600, 1);
|
||||
#echo jahresabschlussberechnung(1, 2019, 594, 694, 1);
|
||||
#echo jahresabschlussberechnung(1, 2018, 594, 129.15, 1);
|
||||
#echo jahresabschlussberechnung(1, 2017, 594, 694, 1);
|
||||
#echo jahresabschlussberechnung(1, 2016, 594, 694, 1);
|
||||
#echo jahresabschlussberechnung(1, 2015, 594, 750, 1);
|
||||
#echo jahresabschlussberechnung(1, 2014, 594, 603.6, 1);
|
||||
#echo jahresabschlussberechnung(1, 2013, 594, 500, 1);
|
||||
#echo jahresabschlussberechnung(1, 2012, 594, 500, 1);
|
||||
|
||||
/*
|
||||
|
||||
TRUNCATE TABLE `dep_jahresabschluss`;
|
||||
TRUNCATE TABLE `dep_jahresabschluss_restdeputate`;
|
||||
|
||||
DELETE FROM `dep_jahresabschluss` where jahr > 2011;
|
||||
DELETE FROM `dep_jahresabschluss_restdeputate` where jahr > 2011;
|
||||
|
||||
# Dummy 2011
|
||||
INSERT INTO `dep_jahresabschluss_restdeputate` (`drdid`, `jahr`, `imtuid`, `vorjahr`, `startwert`, `differenz`, `differenzjahr`, `endwert`) VALUES
|
||||
(2, 2011, 1, 2010, '0.00', '0.00', 0, '0.00');
|
||||
|
||||
INSERT INTO `dep_jahresabschluss` (`djaid`, `imtuid`, `jahr`, `soll`, `ist`, `dep_gesamt`, `dep_verfall`, `dep_gesamt_nach_verfall`, `deperg_aktjahr`) VALUES
|
||||
(1, 1, 2011, '0.00', '0.00', '0.00', '0.00', '0.00', '0.00');
|
||||
|
||||
|
||||
INSERT INTO `dep_jahresabschluss` (`djaid`, `imtuid`, `jahr`, `soll`, `ist`, `dep_gesamt`, `dep_verfall`, `dep_gesamt_nach_verfall`, `deperg_aktjahr`) VALUES
|
||||
(1, 1, 2015, '0.00', '0.00', '72.80', '0.00', '72.80', '72.80');
|
||||
|
||||
INSERT INTO `dep_jahresabschluss_restdeputate` (`drdid`, `jahr`, `imtuid`, `vorjahr`, `startwert`, `differenz`, `differenzjahr`, `endwert`) VALUES
|
||||
(1, 2015, 1, 2011, '0.00', '0.00', 0, '0.00'),
|
||||
(2, 2015, 1, 201, '0.00', '0.00', 0, '0.00');
|
||||
|
||||
*/
|
||||
?>
|
37
func_lvs_exk_eintaegig.php
Executable file
37
func_lvs_exk_eintaegig.php
Executable file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/*
|
||||
##################################################################################
|
||||
## Verwendet in erfassen_eingabe.php
|
||||
##################################################################################
|
||||
*/
|
||||
#require_once("config.inc.php");
|
||||
|
||||
|
||||
function lvs_exk_eintaegig($exk_stdanreise){
|
||||
|
||||
|
||||
$db = dbconnect();
|
||||
|
||||
$result_fakt = $db->query("SELECT faktor, max_wert
|
||||
FROM dep_kat_veranstaltungsart
|
||||
WHERE verid = 5;
|
||||
");
|
||||
$row_fakt = $result_fakt->fetch_array();
|
||||
|
||||
$max_wert = $row_fakt['max_wert'];
|
||||
$faktor = $row_fakt['faktor'];
|
||||
|
||||
#
|
||||
|
||||
$LVS_stdanreise = $exk_stdanreise*$faktor;
|
||||
|
||||
if($LVS_stdanreise >=$max_wert){
|
||||
$LVS_stdanreise = $max_wert;
|
||||
}
|
||||
|
||||
return $LVS_stdanreise;
|
||||
}
|
||||
|
||||
#$exk_stdanreise = 5.5;
|
||||
#echo lvs_exk_eintaegig($exk_stdanreise);
|
||||
?>
|
56
func_lvs_exk_mehrtaegig.php
Executable file
56
func_lvs_exk_mehrtaegig.php
Executable file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/*
|
||||
##################################################################################
|
||||
## Verwendet in erfassen_eingabe.php
|
||||
##################################################################################
|
||||
*/
|
||||
require_once("config.inc.php");
|
||||
|
||||
|
||||
function lvs_exk_mehrtaegig($exk_stdanreise, $exk_stdabreise, $datum_anreise, $datum_abreise){
|
||||
|
||||
$datetime1 = date_create($datum_anreise);
|
||||
$datetime2 = date_create($datum_abreise);
|
||||
|
||||
$interval = date_diff($datetime1, $datetime2);
|
||||
$gesamtanzahl = $interval->format('%a')+1;
|
||||
|
||||
# An- un Abreisetag abziehen
|
||||
$volletage=$gesamtanzahl-2;
|
||||
##echo $volletage;
|
||||
|
||||
$db = dbconnect();
|
||||
|
||||
$result_fakt = $db->query("SELECT faktor, max_wert
|
||||
FROM dep_kat_veranstaltungsart
|
||||
WHERE verid = 5;
|
||||
");
|
||||
$row_fakt = $result_fakt->fetch_array();
|
||||
|
||||
$max_wert = $row_fakt['max_wert'];
|
||||
$faktor = $row_fakt['faktor'];
|
||||
|
||||
# Umrechnung in LVS: Faktor für Exkursion: 0,3; Max 3 LVS pro Tag
|
||||
$volletageLVS = $volletage*$max_wert;
|
||||
|
||||
$LVS_stdanreise = $exk_stdanreise*$faktor;
|
||||
|
||||
if($LVS_stdanreise >=$max_wert){
|
||||
$LVS_stdanreise = $max_wert;
|
||||
}
|
||||
$LVS_stdabreise = $exk_stdabreise*$faktor;
|
||||
|
||||
if($LVS_stdabreise >=$max_wert){
|
||||
$LVS_stdabreise = $max_wert;
|
||||
}
|
||||
|
||||
$gesamtlvs = $volletageLVS+$LVS_stdanreise+$LVS_stdabreise;
|
||||
return $gesamtlvs;
|
||||
}
|
||||
#$exk_stdanreise = 6;
|
||||
#$exk_stdabreise = 5;
|
||||
#$datum_anreise = '2019-06-05';
|
||||
#$datum_abreise = '2019-06-12';
|
||||
#echo lvs_exk_mehrtaegig($exk_stdanreise, $exk_stdabreise, $datum_anreise, $datum_abreise);
|
||||
|
||||
?>
|
51
func_rollenrechte.php
Executable file
51
func_rollenrechte.php
Executable file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
function rore($user_admin_rore, $rore, $art_rore)
|
||||
{
|
||||
|
||||
$rore = strtoupper($rore);
|
||||
# Funktion zum überprüfen von Rollen / Rechten
|
||||
# Hat ein Benutzer die angegebene Rolle / das Recht wird true zurückgegeben
|
||||
|
||||
$db = dbconnect();
|
||||
if ($art_rore == 'RE') {
|
||||
|
||||
$result2_rore = $db->query("SELECT distinct 1
|
||||
FROM dep_rollen_user_zuord a, dep_rolle b, dep_rollen_rechte_zuord c
|
||||
WHERE a.roid=b.roid
|
||||
AND b.roid = c.roid
|
||||
AND a.imtuid = '$user_admin_rore'
|
||||
AND c.reid = '$rore'");
|
||||
$row2_rore = $result2_rore->fetch_array();
|
||||
if ($row2_rore[0] == 1) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($art_rore == 'RO') {
|
||||
|
||||
#$result2_rore = $db->query( "SELECT 1
|
||||
# FROM prog_admin, dep_rollen_user_zuord, dep_rolle
|
||||
# WHERE admin.vaid = admin_rollen_user_zuord.vaid
|
||||
# AND admin_rolle.rid = admin_rollen_user_zuord.rid
|
||||
# AND upper(admin_rolle.bezeichnung) LIKE '$rore'
|
||||
# AND admin.user = '$user_admin_rore'" );
|
||||
#$row2_rore = $result2_rore->fetch_array();
|
||||
|
||||
|
||||
if ($row2_rore[0] == 1) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if(rore('schwaral','Administrator','RO')){
|
||||
# echo "berechtigt";
|
||||
#}else{
|
||||
# echo "nicht berechtigt";
|
||||
#}
|
||||
?>
|
45
func_sperre_erm.php
Executable file
45
func_sperre_erm.php
Executable file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
## Funktion, die prüft, ob an einem Datum eine Sperre vorliegt
|
||||
## Sperren sind derzeit der Ruhestand eines Dozierenden sowie Praxissemester. In diesem Zeitraum gibt es bereits die maximale Ermäßigung. Doppelte Erm. gibt es nicht
|
||||
|
||||
function erm_sperre($imtuid, $datum){
|
||||
require("config.inc.php");
|
||||
$db = dbconnect();
|
||||
|
||||
# Fall 1: Ruhestand des Dozierenden
|
||||
$query_ruhestand = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE art like '%Ruhestand%'
|
||||
AND imtuid=$imtuid
|
||||
AND date_format(beginn, '%Y-%m') < '$datum'
|
||||
");
|
||||
$row_ruhestand = $query_ruhestand->fetch_array();
|
||||
|
||||
|
||||
if($row_ruhestand['Anz'] > 0){
|
||||
# Monat ist durch Ruhestand gesperrt
|
||||
return true;
|
||||
}else{
|
||||
# Fall 2: Praxissemester
|
||||
$query_praxis = $db->query("SELECT count(*) Anz
|
||||
FROM dep_deputat_ermaessigung
|
||||
WHERE art like '%Forschungssemester/Praxissemester/Abordnungen%'
|
||||
AND imtuid=$imtuid
|
||||
AND date_format(beginn, '%Y-%m') <= '$datum'
|
||||
AND date_format(ende, '%Y-%m') >= '$datum'
|
||||
");
|
||||
$row_praxis = $query_praxis->fetch_array();
|
||||
if($row_praxis['Anz'] > 0){
|
||||
# Monat gesperrt
|
||||
return true;
|
||||
}else{
|
||||
# Monat nicht gesperrt
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
#echo erm_sperre(1,'2020-04');
|
||||
?>
|
116
func_timediff.php
Executable file
116
func_timediff.php
Executable file
@ -0,0 +1,116 @@
|
||||
<?php
|
||||
# datediff_ymd() = Differenz nach Jahre, Monat und Tage
|
||||
# tage() = Differenz nach absoluten Tagen
|
||||
|
||||
/*
|
||||
https://rotering-net.de/tut/php/datumsdifferenz-in-jahren-monaten-und-tagen.html
|
||||
|
||||
* @author Thorsten Rotering <support@rotering-net.de>
|
||||
* @version 1.1 (2016-05-06)
|
||||
*
|
||||
* Hiermit wird unentgeltlich, jeder Person, die eine Kopie dieses Skripts erhält, die Erlaubnis erteilt,
|
||||
* diese uneingeschränkt zu benutzen, inklusive und ohne Ausnahme, dem Recht, sie zu verwenden, zu kopieren,
|
||||
* zu ändern, zu fusionieren, zu verlegen, zu verbreiten, zu unterlizenzieren und/oder zu verkaufen, und
|
||||
* Personen, die dieses Skript erhalten, diese Rechte zu geben, unter den folgenden Bedingungen:
|
||||
*
|
||||
* Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien des
|
||||
* Skripts beizulegen.
|
||||
*
|
||||
* DAS SKRIPT WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER
|
||||
* GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG,
|
||||
* JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN
|
||||
* ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER
|
||||
* ANDERS IM ZUSAMMENHANG MIT DEM SKRIPT ODER SONSTIGER VERWENDUNG DES SKRIPTS ENTSTANDEN.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Liefert die Differenz zweier Datumsangaben in Jahren, Monaten und Tagen zurück.
|
||||
* @param int $pDate1 Erste Datumsangabe als UNIX-Zeitstempel.
|
||||
* @param int $pDate2 (optinal) Zweite Datumsangabe als UNIX-Zeitstempel. Wenn nichts oder 0 angegeben wird, wird
|
||||
* das aktuelle Datum verwendet.
|
||||
* @param string $pTemplate (optinal) Ein Template-String für die Ausgabe. Dabei wird %d mit der Anzahl der Tage,
|
||||
* %m mit der Anzahl der Monate und %y mit der Anzahl der Jahre ersetzt. Wird nichts angegeben, so wird die Vorlage
|
||||
* "%y Jahre, %m Monate und %d Tage" verwendet.
|
||||
* @return string Die Differenz der Datumsangaben gemäß der Formatierung des Template-Strings.
|
||||
*/
|
||||
function datediff_ymd($pDate1, $pDate2 = 0, $pTemplate = '%y Jahre, %m Monate und %d Tage')
|
||||
{
|
||||
/* Wenn $pDate2 nicht gesetzt wurde, auf aktuelles Datum setzen */
|
||||
if ($pDate2 == 0) {
|
||||
$pDate2 = time();
|
||||
}
|
||||
|
||||
/* $pDate1 und $pDate2 vertauschen, wenn $pDate1 größer als $pDate2 ist */
|
||||
if ($pDate1 > $pDate2) {
|
||||
$pDate1 ^= $pDate2 ^= $pDate1 ^= $pDate2;
|
||||
}
|
||||
|
||||
/* Datumsbestandteile bestimmen */
|
||||
$lDay1 = date('d', $pDate1);
|
||||
$lMonth1 = date('m', $pDate1);
|
||||
$lYear1 = date('Y', $pDate1);
|
||||
|
||||
$lDay2 = date('d', $pDate2);
|
||||
$lMonth2 = date('m', $pDate2);
|
||||
$lYear2 = date('Y', $pDate2);
|
||||
|
||||
/* Berechne Differenz der Tage */
|
||||
$lDays = $lDay2 - $lDay1;
|
||||
|
||||
if ($lDays < 0) {
|
||||
$lDays += date('t', $pDate1);
|
||||
$lCarry = 1;
|
||||
} else {
|
||||
$lCarry = 0;
|
||||
}
|
||||
|
||||
/* Berechne Differenz der Monate */
|
||||
$lMonths = $lMonth2 - $lMonth1 - $lCarry;
|
||||
|
||||
if ($lMonths < 0) {
|
||||
$lMonths += 12;
|
||||
$lCarry = 1;
|
||||
} else {
|
||||
$lCarry = 0;
|
||||
}
|
||||
|
||||
/* Berechne Differenz der Jahre */
|
||||
$lYears = $lYear2 - $lYear1 - $lCarry;
|
||||
|
||||
/* Ausgabestring anhand des Template-Strings erzeugen und zurückgeben */
|
||||
return str_replace(array('%y', '%m', '%d'), array($lYears, $lMonths, $lDays), $pTemplate);
|
||||
}
|
||||
|
||||
function tage($start, $ende) {
|
||||
$startDate = new DateTime($start);
|
||||
$endDate = new DateTime($ende);
|
||||
$diff = $startDate->diff($endDate);
|
||||
|
||||
$tage = $diff->days;
|
||||
|
||||
return $tage+1;
|
||||
}
|
||||
|
||||
/*
|
||||
$datum1 = '2019-01-01';
|
||||
$datum2 = '2019-06-30';
|
||||
|
||||
$year_start = substr($datum1,0,4);
|
||||
$mon_start = substr($datum1,5,2);
|
||||
$day_start = substr($datum1,8,2);
|
||||
|
||||
$year_ende = substr($datum2,0,4);
|
||||
$mon_ende = substr($datum2,5,2);
|
||||
$day_ende = substr($datum2,8,2);
|
||||
|
||||
$start = mktime(0, 0, 0, $mon_start, $day_start, $year_start);
|
||||
$ende = mktime(0, 0, 0, $mon_ende, $day_ende+1, $year_ende);
|
||||
|
||||
echo datediff_ymd($start, $ende);
|
||||
|
||||
echo "<hr>";
|
||||
|
||||
|
||||
echo tage($datum1, $datum2);
|
||||
*/
|
||||
?>
|
46
functions.php
Executable file
46
functions.php
Executable file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
# Sortieren von multidimensionalen Arrays
|
||||
function sortArrayByFields($arr, $fields)
|
||||
{
|
||||
$sortFields = array();
|
||||
$args = array();
|
||||
|
||||
foreach ($arr as $key => $row) {
|
||||
foreach ($fields as $field => $order) {
|
||||
$sortFields[$field][$key] = $row[$field];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($fields as $field => $order) {
|
||||
$args[] = $sortFields[$field];
|
||||
|
||||
if (is_array($order)) {
|
||||
foreach ($order as $pt) {
|
||||
$args[$pt];
|
||||
}
|
||||
} else {
|
||||
$args[] = $order;
|
||||
}
|
||||
}
|
||||
|
||||
$args[] = &$arr;
|
||||
|
||||
call_user_func_array('array_multisort', $args);
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
# Aus mehrdimensionalem Array löschen
|
||||
function removeElementWithValue($array, $key, $value){
|
||||
foreach($array as $subKey => $subArray){
|
||||
if($subArray[$key] == $value){
|
||||
unset($array[$subKey]);
|
||||
}
|
||||
}
|
||||
return $array;
|
||||
}
|
||||
|
||||
//Then you would call it like this:
|
||||
//$array = removeElementWithValue($array, "year", 2011);
|
||||
|
||||
?>
|
14
hauptframe.php
Executable file
14
hauptframe.php
Executable file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang=$_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
|
||||
$smarty = new Smarty();
|
||||
require_once "language/german.inc.php";
|
||||
|
||||
$smarty->assign('hauptframe_cur_jahrgang', $jahrgang);
|
||||
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
11
hauptframe_admin.php
Executable file
11
hauptframe_admin.php
Executable file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
session_start();
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
|
||||
$smarty = new Smarty();
|
||||
require_once "language/german.inc.php";
|
||||
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
12
hauptframe_eingabe.php
Executable file
12
hauptframe_eingabe.php
Executable file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
session_start();
|
||||
$jahrgang=$_SESSION["jahrgang"];
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
require_once("config.inc.php");
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
|
||||
$smarty = new Smarty();
|
||||
require_once "language/german.inc.php";
|
||||
$smarty->assign('hauptframe_eingabe_cur_jahrgang', $jahrgang);
|
||||
$smarty->display("$template/$templatename");
|
||||
|
||||
?>
|
BIN
iframe-resizer-master.zip
Executable file
BIN
iframe-resizer-master.zip
Executable file
Binary file not shown.
51
iframe-resizer-master/.eslintrc
Executable file
51
iframe-resizer-master/.eslintrc
Executable file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"extends": ["auto"],
|
||||
"plugins": ["ie11"],
|
||||
"env": {
|
||||
"amd": true,
|
||||
"browser": true,
|
||||
"jasmine": true
|
||||
},
|
||||
"globals": {
|
||||
"location": true
|
||||
},
|
||||
"parserOptions": { "ecmaVersion": 2015 },
|
||||
"rules": {
|
||||
"func-names": 0,
|
||||
"global-require": 0,
|
||||
"no-param-reassign": 0,
|
||||
"no-plusplus": 0,
|
||||
"no-use-before-define": 0,
|
||||
"no-shadow": 0,
|
||||
"no-var": 0,
|
||||
"object-shorthand": 0,
|
||||
"one-var": 0,
|
||||
"prefer-arrow-callback": 0,
|
||||
"prefer-destructuring": 0,
|
||||
"prefer-rest-params": 0,
|
||||
"prefer-template": 0,
|
||||
"vars-on-top": 0,
|
||||
"yoda": 0,
|
||||
"ie11/no-collection-args": ["error"],
|
||||
"ie11/no-for-in-const": ["error"],
|
||||
"ie11/no-loop-func": ["warn"],
|
||||
"ie11/no-weak-collections": ["error"],
|
||||
"import/no-amd": 0,
|
||||
"lodash/prefer-noop": 0,
|
||||
"lodash-fp/prefer-constant": 0,
|
||||
"unicorn/consistent-function-scoping": 0,
|
||||
"unicorn/filename-case": 0,
|
||||
"unicorn/no-array-callback-reference": 0,
|
||||
"unicorn/no-this-assignment": 0,
|
||||
"unicorn/prefer-date-now": 0,
|
||||
"unicorn/prefer-dom-node-append": 0,
|
||||
"unicorn/prefer-dom-node-remove": 0,
|
||||
"unicorn/prefer-module": 0,
|
||||
"unicorn/prefer-node-append": 0,
|
||||
"unicorn/prefer-node-remove": 0,
|
||||
"unicorn/prefer-query-selector": 0,
|
||||
"unicorn/prefer-string-slice": 0,
|
||||
"unicorn/prefer-number-properties": 0,
|
||||
"unicorn/prevent-abbreviations": 0
|
||||
}
|
||||
}
|
20
iframe-resizer-master/.github/FUNDING.yml
vendored
Executable file
20
iframe-resizer-master/.github/FUNDING.yml
vendored
Executable file
@ -0,0 +1,20 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
# github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
# patreon: # Replace with a single Patreon username
|
||||
# open_collective: # Replace with a single Open Collective username
|
||||
# ko_fi: # Replace with a single Ko-fi username
|
||||
# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
# liberapay: # Replace with a single Liberapay username
|
||||
# issuehunt: # Replace with a single IssueHunt username
|
||||
# otechie: # Replace with a single Otechie username
|
||||
# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
|
||||
# github: davidjbradshaw
|
||||
custom: https://www.buymeacoffee.com/davidjbradshaw
|
||||
custom: https://www.paypal.me/davidjbradshaw
|
||||
# issuehunt: davidjbradshaw
|
||||
# liberapay: davidjbradshaw
|
||||
# ko_fi: davidjbradshaw
|
||||
# tidelift: npm/iframe-resizer
|
38
iframe-resizer-master/.github/ISSUE_TEMPLATE/bug_report.md
vendored
Executable file
38
iframe-resizer-master/.github/ISSUE_TEMPLATE/bug_report.md
vendored
Executable file
@ -0,0 +1,38 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
11
iframe-resizer-master/.github/dependabot.yml
vendored
Executable file
11
iframe-resizer-master/.github/dependabot.yml
vendored
Executable file
@ -0,0 +1,11 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "npm" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "daily"
|
10
iframe-resizer-master/.gitignore
vendored
Executable file
10
iframe-resizer-master/.gitignore
vendored
Executable file
@ -0,0 +1,10 @@
|
||||
.DS_Store
|
||||
.coveralls.yml
|
||||
node_modules
|
||||
bin
|
||||
example/test.html
|
||||
test/*.off
|
||||
npm-debug.log
|
||||
bower_components
|
||||
coverage*
|
||||
.idea
|
3
iframe-resizer-master/.ncurc.json
Executable file
3
iframe-resizer-master/.ncurc.json
Executable file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"reject": ["grunt-contrib-qunit"]
|
||||
}
|
21
iframe-resizer-master/.npmignore
Executable file
21
iframe-resizer-master/.npmignore
Executable file
@ -0,0 +1,21 @@
|
||||
.DS_Store
|
||||
.coveralls.yml
|
||||
.idea
|
||||
.prettierrc
|
||||
.travis.yml
|
||||
.github
|
||||
node_modules
|
||||
bin
|
||||
docs
|
||||
example
|
||||
test
|
||||
spec
|
||||
src
|
||||
npm-debug.log
|
||||
bower_components
|
||||
bower.json
|
||||
gruntfile.js
|
||||
karma.conf.js
|
||||
test-main.js
|
||||
package-lock.json
|
||||
coverage*
|
10
iframe-resizer-master/.prettierrc
Executable file
10
iframe-resizer-master/.prettierrc
Executable file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"printWidth": 80,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": true,
|
||||
"jsxBracketSameLine": false
|
||||
}
|
6
iframe-resizer-master/.travis.yml
Executable file
6
iframe-resizer-master/.travis.yml
Executable file
@ -0,0 +1,6 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "11.0"
|
||||
before_script:
|
||||
- npm install -g grunt-cli
|
||||
sudo: false
|
218
iframe-resizer-master/CHANGELOG.md
Executable file
218
iframe-resizer-master/CHANGELOG.md
Executable file
@ -0,0 +1,218 @@
|
||||
# Version History
|
||||
|
||||
- v4.3.2 [#936](https://github.com/davidjbradshaw/iframe-resizer/issues/936) Allow max/min values for iFrame size to be set using units other than `px` [[Luke Murray](https://github.com/lukesmurray)]
|
||||
|
||||
- v4.3.1 [#901](https://github.com/davidjbradshaw/iframe-resizer/issues/901) Fix backwards compatability issue with mouse events
|
||||
|
||||
- v4.3.0 Add `onMouseEnter` and `onMouseLeave` event callbacks [DEPRECATED]
|
||||
|
||||
- v4.2.11 Remove `unicorn/prefer-number-properties` from eslint rules and revert `Number.parseInt` to `parseInt`
|
||||
|
||||
- v4.2.10 [#787](https://github.com/davidjbradshaw/iframe-resizer/issues/787) Replace `const` with `var` in index.js for IE10 [[Thomas Jaggi](https://github.com/backflip)]
|
||||
|
||||
- v4.2.9 [#783](https://github.com/davidjbradshaw/iframe-resizer/issues/783) Bind `requestAnimationFrame` to `window` to fix issue with FireFox Content-Scripts [[Greg Soltis](https://github.com/gsoltis)]
|
||||
|
||||
- v4.2.8 [#779](https://github.com/davidjbradshaw/iframe-resizer/issues/779) Fix issue with `javascript:void(0)` and `about:blank` URLs [[ceckoslab](https://github.com/ceckoslab)]
|
||||
|
||||
- v4.2.7 Add support for NPM funding
|
||||
|
||||
- v4.2.4 [#772](https://github.com/davidjbradshaw/iframe-resizer/issues/772) Fix issue with iframes inside ShaddowDOM elements [[Martin Belanger](https://github.com/martinbelanger)]
|
||||
|
||||
- v4.2.3 [#683](https://github.com/davidjbradshaw/iframe-resizer/issues/683) Include border top/bottom, plus padding top/bottom, when calculating heights on iframe with `box-sizing: border-box;` [[Jim Doyle](https://github.com//superelement)]. [#768](https://github.com/davidjbradshaw/iframe-resizer/issues/768) Fix issue with hidden iframes [[Tony Living]](https://github.com//tonyliving)
|
||||
|
||||
- v4.2.2 [#761](https://github.com/davidjbradshaw/iframe-resizer/pull/761) Check for iframe.src when parsing it for remoteHost [[Filip Stollar](https://github.com//SuNaden)]
|
||||
|
||||
- v4.2.1 [#723](https://github.com/davidjbradshaw/iframe-resizer/pull/723) Fix option to turn off `autoResize` from iframe, when `resizeFrom` is set to `parent` [[Dennis Kronbügel]](https://github.com//deBFM)
|
||||
|
||||
- v4.2.0 Add `onClose()` event to parent
|
||||
|
||||
- v4.1.1 [#686](https://github.com/davidjbradshaw/iframe-resizer/pull/694) Fix IE11 regression with Object.values [[Jonathan Lehman](https://github.com//jdlehman)]
|
||||
|
||||
- v4.1.0 [#686](https://github.com/davidjbradshaw/iframe-resizer/pull/686) Split client(Height/Width) into document and window values [[Bernhard Mäder](https://github.com//nuschk)]
|
||||
|
||||
- v4.0.4 [#674](https://github.com/davidjbradshaw/iframe-resizer/pull/674) Fix default export
|
||||
|
||||
- v4.0.3 [#606](https://github.com/davidjbradshaw/iframe-resizer/pull/606) Force height of clearFix div in iframe to 0
|
||||
|
||||
- v4.0.2 [#671](https://github.com/davidjbradshaw/iframe-resizer/pull/671) Fix issue with window resize
|
||||
|
||||
- v4.0.1 Fix documentation links in `README.md`
|
||||
|
||||
- v4.0.0 Drop support for IE8-10 and Andriod 4, renamed event handlers from `fooCallback` to `onFoo` and restructure documentation. Reformat code with Prettier and add eslint to build
|
||||
|
||||
- v3.6.5 [#658](https://github.com/davidjbradshaw/iframe-resizer/pull/658) Add `.npmignore` to project [[Sebastian Lamelas](https://github.com/smulesoft)]
|
||||
|
||||
- v3.6.4 [#651](https://github.com/davidjbradshaw/iframe-resizer/pull/651) Fix issue resource leak when iframe removed from the page [[Steffen Eckardt](https://github.com/seckardt)]. [#651](https://github.com/davidjbradshaw/iframe-resizer/pull/651) Make Require.js optional when it is included on the page before iframe-resizer [[Dahmian Owen](https://github.com/dahmian)]
|
||||
|
||||
- v3.6.3 [#635](https://github.com/davidjbradshaw/iframe-resizer/pull/635) Fix issue with undefined ID [[Henry Schein](https://github.com/ddxdental)]. [#582](https://github.com/davidjbradshaw/iframe-resizer/pull/582) Add `omit` option to `scrolling` config [[Matt Ryan](https://github.com/mryand)]
|
||||
|
||||
- v3.6.2 [#596](https://github.com/davidjbradshaw/iframe-resizer/pull/596) Add Passive Event Listener for Performance [[Henrik Vendelbo](https://github.com/thepian)]. [#613](https://github.com/davidjbradshaw/iframe-resizer/pull/613) Check if the iFrameResize function is attached to the prototype of jQuery [[Paul Antal](https://github.com/paul-antal)]. [#620](https://github.com/davidjbradshaw/iframe-resizer/pull/620) Fixed an issue where host page fires init before iframe receiver setup [[Mark Zhou](https://github.com/mrmarktyy)]. [#620](https://github.com/davidjbradshaw/iframe-resizer/pull/620) Add `removeListeners` method to better support React [[Khang Nguyen](https://github.com/khangiskhan)]
|
||||
|
||||
- v3.6.1 [#576](https://github.com/davidjbradshaw/iframe-resizer/pull/576) Fix race condition caused by react-iframe-resizer removing the domNode and calling `close()`
|
||||
|
||||
- v3.6.0 [#562](https://github.com/davidjbradshaw/iframe-resizer/pull/562) Fix issue with debounce getPageInfo when their is more than one iFrame on the page [[Thomas Pringle](https://github.com/thomaspringle)]. [#568](https://github.com/davidjbradshaw/iframe-resizer/pull/568) Fix bug in Chrome 65 when iframe parent element has `display:none` set [[Steve Hong](https://github.com/aniude)]
|
||||
|
||||
- v3.5.16 [#554](https://github.com/davidjbradshaw/iframe-resizer/issues/554) Fix throttling of init event [[SHOTA](https://github.com/senta)]. [#553](https://github.com/davidjbradshaw/iframe-resizer/issues/553) Prevents unhandled exception in IE11 [[vitoss](https://github.com/vitoss)]. [#555](https://github.com/davidjbradshaw/iframe-resizer/issues/555) Fix IE PolyFil and make grunt-cli local [[Jan Schmidle](https://github.com/bitcloud)]
|
||||
|
||||
- v3.5.15 [#498](https://github.com/davidjbradshaw/iframe-resizer/issues/498) Fix bug "Cannot read property 'firstRun' of undefined" [[Shaun Johansen](https://github.com/shaunjohansen)]. [#517] Fix readyState issue in iFrame [[lostincomputer](https://github.com/lostincomputer)]
|
||||
|
||||
- v3.5.14 [#477](https://github.com/davidjbradshaw/iframe-resizer/issues/477) Fix bug when iFrame closed before first resize
|
||||
|
||||
- v3.5.13 [#473](https://github.com/davidjbradshaw/iframe-resizer/issues/473) Improve no response from iFrame warning message
|
||||
|
||||
- v3.5.12 [#475](https://github.com/davidjbradshaw/iframe-resizer/issues/475) Delay onResize until after the iFrame has resized [[Codener](https://github.com/codener)]
|
||||
|
||||
- v3.5.11 [#470](https://github.com/davidjbradshaw/iframe-resizer/issues/470) Fix jQuery reference error [[Russell Schick](https://github.com/rschick)]
|
||||
|
||||
- v3.5.10 [#461](https://github.com/davidjbradshaw/iframe-resizer/issues/461) Don't run for server-side render
|
||||
|
||||
- v3.5.9 Show warning message if no response from iFrame. [#463](https://github.com/davidjbradshaw/iframe-resizer/issues/463) Suppress warning message when code loaded via module [[Sergey Pereskokov](https://github.com/SerjoPepper)]
|
||||
|
||||
- v3.5.8 [#315](https://github.com/davidjbradshaw/iframe-resizer/issues/315) Allow Scrolling to be set to 'auto'
|
||||
|
||||
- v3.5.7 [#438](https://github.com/davidjbradshaw/iframe-resizer/issues/438) Check jQuery pluging wrapper not already loaded. [#423](https://github.com/davidjbradshaw/iframe-resizer/issues/423) Properly remove event listeners [[Aaron Hardy](https://github.com/Aaronius)]. [#401](https://github.com/davidjbradshaw/iframe-resizer/issues/401) Make tagged element fall back to all elements if tag not found. [#381](https://github.com/davidjbradshaw/iframe-resizer/issues/381) Fixing disconnect when iframe is missing temporarly [[Jeff Hicken](https://github.com/jhicken)]. Added warnings for missing iFrame and deprecated options
|
||||
|
||||
- v3.5.5 [#373](https://github.com/davidjbradshaw/iframe-resizer/issues/373) Add option for custom size calculation methods in iFrame. [#374](https://github.com/davidjbradshaw/iframe-resizer/issues/374) Fix bug with in page links called from parent page
|
||||
|
||||
- v3.5.4 [#362](https://github.com/davidjbradshaw/iframe-resizer/issues/362) Handle jQuery being loaded in odd ways. [#297](https://github.com/davidjbradshaw/iframe-resizer/issues/297) Ensure document ready before resizing
|
||||
|
||||
- v3.5.3 [#283](https://github.com/davidjbradshaw/iframe-resizer/issues/283) Added _readystatechange_ event listener
|
||||
|
||||
- v3.5.2 [#314](https://github.com/davidjbradshaw/iframe-resizer/pull/314) Add iframeHeight and iframeWidth properties to pageInfo [[Pierre Olivier](https://github.com/pomartel)]. [#303](https://github.com/davidjbradshaw/iframe-resizer/issues/303) Fix issue with IE8 polyFils
|
||||
|
||||
- v3.5.1 [#286](https://github.com/davidjbradshaw/iframe-resizer/issues/286) Fixed _taggedElement / lowestElement / rightMostElement_ to calculate correct margin [[Dan Ballance](https://github.com/danballance)]
|
||||
|
||||
- v3.5.0 Recall getPageInfo callback when parent page position changes. Added _Array.prototype.forEach_ to IE8 polyfils
|
||||
|
||||
- v3.4.2 Only teardown events on close if currently enabled
|
||||
|
||||
- v3.4.1 [#271](https://github.com/davidjbradshaw/iframe-resizer/issues/271) Fix bower.json to point to _js_ folder, rather then _src_ [[Yachi](https://github.com/yachi)]
|
||||
|
||||
- v3.4.0 [#262](https://github.com/davidjbradshaw/iframe-resizer/issues/262) Add _getPageInfo_ method to _parentIFrame_ [[Pierre Olivier](https://github.com/pomartel)]. [#263](https://github.com/davidjbradshaw/iframe-resizer/issues/263) Change _leftMostElement_ to rightMostElement [[Luiz Panariello](https://github.com/LuizPanariello)]. [#265](https://github.com/davidjbradshaw/iframe-resizer/issues/265) Fix issue when no options being passed and added test for this
|
||||
|
||||
- v3.3.1 Point index.js to the JS folder, instead of the src folder. Added touch event listeners. _AutoResize_ method now returns current state
|
||||
|
||||
- v3.3.0 [#97](https://github.com/davidjbradshaw/iframe-resizer/issues/97) Add _autoResize_ method to _parentIFrame_. Fix bug when _setHeightCalculationMethod_ is called with invalid value. Add interval timer to event teardown. Log targetOrigin\*. [#253](https://github.com/davidjbradshaw/iframe-resizer/issues/253) Work around bug with MooTools interfering with system objects
|
||||
|
||||
- v3.2.0 Added calculation of margin to _LowestElement_, _LeftMostElement_ and _taggedElement_ calculation modes. Check callback function is a function before calling it. [#246](https://github.com/davidjbradshaw/iframe-resizer/issues/246) Fixed issue when _onScroll_ changes the page position. [#247](https://github.com/davidjbradshaw/iframe-resizer/issues/247) Fix rounding issue when page is zoomed in Chrome [[thenewguy](https://github.com/thenewguy)]
|
||||
|
||||
- v3.1.1 Added _onReady_ to iFrame. Create _iFrameResizer_ object on iFrame during setup, rather than waiting for init message to be returned from iFrame. Add ref to iFrame in host page log messages. [#245](https://github.com/davidjbradshaw/iframe-resizer/issues/245) Fix issue with iFrame not correctly resizing when multiple images are injected into the page [[mdgbayly](https://github.com/mdgbayly)]. [#246](https://github.com/davidjbradshaw/iframe-resizer/issues/246) Fix issue with including ':' in messages passed to iFrames
|
||||
|
||||
- v3.1.0 [#101](https://github.com/davidjbradshaw/iframe-resizer/issues/101) Support async loading of iFrame script. [#239](https://github.com/davidjbradshaw/iframe-resizer/issues/239) Throttle size checking to once per screen refresh (16ms). Fixed issue with hidden iFrames in FireFox. Improved handling of parent page events. [#236](https://github.com/davidjbradshaw/iframe-resizer/issues/236) Cope with iFrames that don't have a _src_ value. [#242](https://github.com/davidjbradshaw/iframe-resizer/issues/242) Fix issue where iFrame is removed and then put back with same ID [[Alban Mouton](https://github.com/albanm)]
|
||||
|
||||
- v3.0.0 Added _taggedElement_ size calculation method. [#199](https://github.com/davidjbradshaw/iframe-resizer/issues/199) Added in page options to iFrame. [#70](https://github.com/davidjbradshaw/iframe-resizer/issues/70) Added width calculation method options. Added methods to bound iFrames to comunicate from parent to iFrame. Ignore calls to setup an already bound iFrame. Improved event handling. Refactored MutationObserver functions. Moved IE8 polyfil from docs to own JS file and added _Funtion.prototype.bind()_. Added detection for tab focus. Fixed bug with nested inPageLinks. Public methods in iFrame now always enabled and option removed. Renamed enableInPageLinks to inPageLinks. Added double iFrame example
|
||||
|
||||
- v2.8.10 Fixed bug with resizeFrom option not having default value in iFrame, if called from old version in parent page
|
||||
|
||||
- v2.8.9 [#220](https://github.com/davidjbradshaw/iframe-resizer/issues/220) Switched from using _deviceorientation_ to _orientationchange_ event listner [[Brandon Kobel]/https://github.com/kobelb)]
|
||||
|
||||
- v2.8.8 [#213](https://github.com/davidjbradshaw/iframe-resizer/issues/213) Ensure onInit fires when iFrame not sized during initialisation. Check autoResize option before resizing from parent. Lower message about resize before initialisation from 'warn' to 'log'. Updated hover example
|
||||
|
||||
- v2.8.7 [#205](https://github.com/davidjbradshaw/iframe-resizer/issues/205) Fix race condition when page resized during page init [[Ian Caunce](https://github.com/IanCaunce)]. [#203](https://github.com/davidjbradshaw/iframe-resizer/issues/203) Added option for _checkOrigin_ to have list of allowed domains for the iFrame [[Andrej Golcov](https://github.com/andrej2k)]. [#202](https://github.com/davidjbradshaw/iframe-resizer/issues/202) Handle script being loaded more than once [[Nickolay Ribal](https://github.com/elektronik2k5)].
|
||||
[#167](https://github.com/davidjbradshaw/iframe-resizer/issues/167) Added WebPack support [[Stephan Salat](https://github.com/ssalat)]
|
||||
|
||||
- v2.8.6 [#163](https://github.com/davidjbradshaw/iframe-resizer/issues/163) Moved window resize event detection from iFrame to parent page. [#160](https://github.com/davidjbradshaw/iframe-resizer/issues/160) Warn, rather than error, if iFrame has been unexpectantly removed from page. The _parentIFrame.close()_ method nolonger calls _onResized()_
|
||||
|
||||
- v2.8.5 [#173](https://github.com/davidjbradshaw/iframe-resizer/issues/173) Scope settings to iFrame. [#171](https://github.com/davidjbradshaw/iframe-resizer/issues/171) Fixed _parentIFrame.close()_ to work with 0 height iframes [Both [Reed Dadoune](https://github.com/ReedD)]
|
||||
|
||||
- v2.8.4 Added switch for inPageLinking support
|
||||
|
||||
- v2.8.3 Throw error if passed a non-DOM object
|
||||
|
||||
- v2.8.2 [#145](https://github.com/davidjbradshaw/iframe-resizer/issues/145) Fixed in page links, to work with HTML IDs that are not valid CSS IDs [[Erin Millard](https://github.com/ezzatron)]. Moved map files from src to js folder. Added to NPM
|
||||
|
||||
- v2.8.1 [#138](https://github.com/davidjbradshaw/iframe-resizer/issues/138) Added option to pass in iFrame object, instead of selector
|
||||
|
||||
- v2.8.0 [#68](https://github.com/davidjbradshaw/iframe-resizer/issues/68) Added support for in page links and _onScroll()_ function. [#140](https://github.com/davidjbradshaw/iframe-resizer/issues/140) Added listener for _transitionend_ event [[Mat Brown](https://github.com/outoftime)]. Added listeners for animation events. Added listener for _deviceorientation_ event. Improved logging for nested iFrames
|
||||
|
||||
- v2.7.1 [#131](https://github.com/davidjbradshaw/iframe-resizer/issues/131) Fix code that works out position of iFrame on host page
|
||||
|
||||
- v2.7.0 [#129](https://github.com/davidjbradshaw/iframe-resizer/issues/129) Parse data passed to _parentIFrame.sendMessage()_ into JSON to allow complex data types to be sent to _onMessage()_
|
||||
|
||||
- v2.6.5 [#107](https://github.com/davidjbradshaw/iframe-resizer/issues/107) Added Node support for use with Browserify
|
||||
|
||||
- v2.6.4 [#115](https://github.com/davidjbradshaw/iframe-resizer/issues/115) Added _parentIFrame.scrollToOffset()_ method
|
||||
|
||||
- v2.6.3 [#115](https://github.com/davidjbradshaw/iframe-resizer/issues/115) Fixed issue with the range check sometimes causing non-resizing messages to be rejected
|
||||
|
||||
- v2.6.2 [#104](https://github.com/davidjbradshaw/iframe-resizer/issues/104) Fixed issue with jQuery.noConflict [[Dmitry Mukhutdinov](https://github.com/flyingleafe)]
|
||||
|
||||
- v2.6.1 [#91](https://github.com/davidjbradshaw/iframe-resizer/issues/91) Fixed issue with jQuery version requiring empty object if no options are being set
|
||||
|
||||
- v2.6.0 Added _parentIFrame.scrollTo()_ method. Added _Tolerance_ option. [#85](https://github.com/davidjbradshaw/iframe-resizer/issues/85) Update troubleshooting guide [[Kevin Sproles](https://github.com/kevinsproles)]
|
||||
|
||||
- v2.5.2 [#67](https://github.com/davidjbradshaw/iframe-resizer/issues/67) Allow lowercase `<iframe>` tags for XHTML complience [[SlimerDude](https://github.com/SlimerDude)]. [#69](https://github.com/davidjbradshaw/iframe-resizer/issues/69) Fix watch task typo in gruntfile.js [[Matthew Hupman](https://github.com/mhupman)]. Remove trailing comma in heightCalcMethods array [#76](https://github.com/davidjbradshaw/iframe-resizer/issues/76) [[Fabio Scala](https://github.com/fabioscala)]
|
||||
|
||||
- v2.5.1 [#58](https://github.com/davidjbradshaw/iframe-resizer/issues/58) Fixed endless loop and margin issues with an unnested mid-tier iframe. [#59](https://github.com/davidjbradshaw/iframe-resizer/issues/59) Fixed main property of [Bower](https://github.com/https://bower.io/) config file
|
||||
|
||||
- v2.5.0 Added _minHeight_, _maxHeight_, _minWidth_ and _maxWidth_ options. Added _onInit_ and _onClosed_ functions (Close event calling _onResized_ is deprecated). Added **grow** and **lowestElement** _heightCalculationMethods_. Added AMD support. [#52](https://github.com/davidjbradshaw/iframe-resizer/issues/52) Added _sendMessage_ example. [#54](https://github.com/davidjbradshaw/iframe-resizer/issues/54) Work around IE8's borked JS execution stack. [#55](https://github.com/davidjbradshaw/iframe-resizer/issues/55) Check datatype of passed in options
|
||||
|
||||
- v2.4.8 Fix issue when message passed to onMessage contains a colon
|
||||
|
||||
- v2.4.7 [#49](https://github.com/davidjbradshaw/iframe-resizer/issues/49) Deconflict requestAnimationFrame
|
||||
|
||||
- v2.4.6 [#46](https://github.com/davidjbradshaw/iframe-resizer/issues/46) Fix iFrame event listener in IE8
|
||||
|
||||
- v2.4.5 [#41](https://github.com/davidjbradshaw/iframe-resizer/issues/41) Prevent error in FireFox when body is hidden by CSS [[Scott Otis](https://github.com//Scotis)]
|
||||
|
||||
- v2.4.4 Enable nested iFrames ([#31](https://github.com/davidjbradshaw/iframe-resizer/issues/31) Filter incoming iFrame message in host-page script. [#33](https://github.com/davidjbradshaw/iframe-resizer/issues/33) Squash unexpected message warning when using nested iFrames. Improved logging for nested iFrames). [#38](https://github.com/davidjbradshaw/iframe-resizer/issues/38) Detect late image loads that cause a resize due to async image loading in WebKit [[Yassin](https://github.com//ynh)]. Fixed :Hover example in FireFox. Increased trigger timeout lock to 64ms
|
||||
|
||||
- v2.4.3 Simplified handling of double fired events. Fixed test coverage
|
||||
|
||||
- v2.4.2 Fix missing 'px' unit when resetting height
|
||||
|
||||
- v2.4.1 Fix screen flicker issue with scroll height calculation methods in v2.4.0
|
||||
|
||||
- v2.4.0 Improved handling of alternate sizing methods, so that they will now shrink on all trigger events, except _Interval_. Prevent error when incoming message to iFrame is an object
|
||||
|
||||
- v2.3.2 Fix backwards compatibility issue between V2 iFrame and V1 host-page scripts
|
||||
|
||||
- v2.3.1 Added setHeightCalculationMethod() method in iFrame. Added _min_ option to the height calculation methods. Invalid value for _heightCalculationMethod_ is now a warning rather than an error and now falls back to the default value
|
||||
|
||||
- v2.3.0 Added extra _heightCalculationMethod_ options. Inject clearFix into 'body' to work around CSS floats preventing the height being correctly calculated. Added meaningful error message for non-valid values in _heightCalculationMethod_. Stop **click** events firing for 50ms after **size** events. Fixed hover example in old IE
|
||||
|
||||
- v2.2.3 [#26](https://github.com/davidjbradshaw/iframe-resizer/issues/26) Locally scope jQuery to \$, so there is no dependancy on it being defined globally
|
||||
|
||||
- v2.2.2 [#25](https://github.com/davidjbradshaw/iframe-resizer/issues/25) Added click listener to Window, to detect CSS checkbox resize events
|
||||
|
||||
- v2.2.1 [#24](https://github.com/davidjbradshaw/iframe-resizer/issues/24) Prevent error when incoming message to host page is an object [[Torjus Eidet](https://github.com/torjue)]
|
||||
|
||||
- v2.2.0 Added targetOrigin option to sendMessage function. Added bodyBackground option. Expanded troubleshooting section
|
||||
|
||||
- v2.1.1 [#16](https://github.com/davidjbradshaw/iframe-resizer/issues/16) Option to change the height calculation method in the iFrame from offsetHeight to scrollHeight. Troubleshooting section added to docs
|
||||
|
||||
- v2.1.0 Added sendMessage() and getId() to window.parentIFrame. Changed width calculation to use scrollWidth. Removed deprecated object name in iFrame
|
||||
|
||||
- v2.0.0 Added native JS public function, renamed script filename to reflect that jQuery is now optional. Renamed _do(Heigh/Width)_ to _size(Height/Width)_, renamed _contentWindowBodyMargin_ to _bodyMargin_ and renamed _callback_ _onResized_. Improved logging messages. Stop _resize_ event firing for 50ms after _interval_ event. Added multiple page example. Workout unsized margins inside the iFrame. The _bodyMargin_ property now accepts any valid value for a CSS margin. Check message origin is iFrame. Removed deprecated methods
|
||||
|
||||
- v1.4.4 Fixed _bodyMargin_ bug
|
||||
|
||||
- v1.4.3 CodeCoverage fixes. Documentation improvements
|
||||
|
||||
- v1.4.2 Fixed size(250) example in IE8
|
||||
|
||||
- v1.4.1 Setting `interval` to a negative number now forces the interval test to run instead of [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver)
|
||||
|
||||
- v1.4.0 [#12](https://github.com/davidjbradshaw/iframe-resizer/issues/12) Option to enable scrolling in iFrame, off by default. [#13](https://github.com/davidjbradshaw/iframe-resizer/issues/13) Bower dependancies updated
|
||||
|
||||
- v1.3.7 Stop _resize_ event firing for 50ms after _size_ event. Added size(250) to example
|
||||
|
||||
- v1.3.6 [#11](https://github.com/davidjbradshaw/iframe-resizer/issues/11) Updated jQuery to v1.11.0 in example due to IE11 having issues with jQuery v1.10.1
|
||||
|
||||
- v1.3.5 Documentation improvements. Added Grunt-Bump to build script
|
||||
|
||||
- v1.3.0 IFrame code now uses default values if called with an old version of the host page script. Improved function naming. Old names have been deprecated and removed from docs
|
||||
|
||||
- v1.2.5 Fix publish to [plugins.jquery.com](https://plugins.jquery.com)
|
||||
|
||||
- v1.2.0 Added autoResize option, added height/width values to iFrame public size function, set HTML tag height to auto, improved documentation [All [Jure Mav](https://github.com/jmav)]. Plus setInterval now only runs in browsers that don't support [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver) and is on by default, sourceMaps added and close() method introduced to parentIFrame object in iFrame
|
||||
|
||||
- v1.1.1 Added event type to messageData object
|
||||
|
||||
- v1.1.0 Added DOM [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver) trigger to better detect content changes in iFrame, [#7](https://github.com/davidjbradshaw/iframe-resizer/issues/7) Set height of iFrame body element to auto to prevent resizing loop, if it's set to a percentage
|
||||
|
||||
- v1.0.3 [#6](https://github.com/davidjbradshaw/iframe-resizer/issues/6) Force incoming messages to string. Migrated to Grunt 4.x. Published to Bower
|
||||
|
||||
- v1.0.2 [#2](https://github.com/davidjbradshaw/iframe-resizer/issues/2) mime-type changed for IE8-10
|
||||
|
||||
- v1.0.0 Initial pubic release.
|
83
iframe-resizer-master/CONTRIBUTING.md
Executable file
83
iframe-resizer-master/CONTRIBUTING.md
Executable file
@ -0,0 +1,83 @@
|
||||
# Contributing to iframe-resizer
|
||||
|
||||
Looking to contribute something? **Here's how you can help.**
|
||||
|
||||
Please take a moment to review this document in order to make the contribution
|
||||
process easy and effective for everyone involved.
|
||||
|
||||
## Using the issue tracker
|
||||
|
||||
The [issue tracker](https://github.com/davidjbradshaw/iframe-resizer/issues) is
|
||||
the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests)
|
||||
and [submitting pull requests](#pull-requests).
|
||||
|
||||
**Please do not use the issue tracker for personal support requests. These should be raised on
|
||||
Stack Overflow ([`iframe-resizer`](https://stackoverflow.com/questions/tagged/iframe-resizer) tag).**
|
||||
|
||||
## Bug reports
|
||||
|
||||
A bug is a _demonstrable problem_ that is caused by the code in the repository.
|
||||
Good bug reports are extremely helpful, so thanks!
|
||||
|
||||
Guidelines for bug reports:
|
||||
|
||||
0. **Lint your code** — Use [jshint](https://jshint.com/)
|
||||
to ensure your problem isn't caused by a simple error in your own code.
|
||||
|
||||
1. **Use the GitHub issue search** — check if the issue has already been
|
||||
reported.
|
||||
|
||||
1. **Check if the issue has been fixed** — try to reproduce it using the
|
||||
latest `master` or development branch in the repository.
|
||||
|
||||
1. **Isolate the problem** — ideally create a [reduced test
|
||||
case](https://css-tricks.com/reduced-test-cases/) and a live example.
|
||||
|
||||
A good bug report shouldn't leave others needing to chase you up for more
|
||||
information. Please try to be as detailed as possible in your report. What is
|
||||
your environment? What steps will reproduce the issue? What browser(s) and OS
|
||||
experience the problem? Do other browsers show the bug differently? What
|
||||
would you expect to be the outcome? All these details will help people to fix
|
||||
any potential bugs.
|
||||
|
||||
Example:
|
||||
|
||||
> Short and descriptive example bug report title
|
||||
>
|
||||
> A summary of the issue and the browser/OS environment in which it occurs. If
|
||||
> suitable, include the steps required to reproduce the bug.
|
||||
>
|
||||
> 1. This is the first step
|
||||
> 2. This is the second step
|
||||
> 3. Further steps, etc.
|
||||
>
|
||||
> `<url>` - a link to the reduced test case
|
||||
>
|
||||
> Any other information you want to share that is relevant to the issue being
|
||||
> reported. This might include the lines of code that you have identified as
|
||||
> causing the bug, and potential solutions (and your opinions on their
|
||||
> merits).
|
||||
|
||||
## Feature requests
|
||||
|
||||
Feature requests are welcome. But take a moment to find out whether your idea
|
||||
fits with the scope and aims of the project.
|
||||
|
||||
## Pull requests
|
||||
|
||||
Good pull requests—patches, improvements, new features—are a fantastic
|
||||
help. They should remain focused in scope and avoid containing unrelated
|
||||
commits.
|
||||
|
||||
**Please ask first** before embarking on any significant pull request (e.g.
|
||||
implementing features or refactoring code),
|
||||
otherwise you risk spending a lot of time working on something that the
|
||||
project's developers might not want to merge into the project.
|
||||
|
||||
In lieu of a formal style-guide, take care to maintain the existing coding
|
||||
style. Add unit tests for any new or changed functionality. Lint and test
|
||||
your code using [Grunt](https://gruntjs.com/).
|
||||
|
||||
## License
|
||||
|
||||
By contributing your code, you agree to license your contribution under the [MIT License](LICENSE).
|
5
iframe-resizer-master/FUNDING.md
Executable file
5
iframe-resizer-master/FUNDING.md
Executable file
@ -0,0 +1,5 @@
|
||||
# Donate to Iframe-Resizer
|
||||
|
||||
Iframe-resizer is the result of many 100s of hours of work, if you would like to join others in showing support for the development of this project, then please feel free to buy me a coffee.
|
||||
|
||||
<a href="https://www.buymeacoffee.com/davidjbradshaw " target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>
|
21
iframe-resizer-master/LICENSE
Executable file
21
iframe-resizer-master/LICENSE
Executable file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013-2021 David J. Bradshaw
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
106
iframe-resizer-master/README.md
Executable file
106
iframe-resizer-master/README.md
Executable file
@ -0,0 +1,106 @@
|
||||
# iFrame Resizer V4
|
||||
|
||||
[](https://badge.fury.io/js/iframe-resizer)
|
||||
[](https://npm-stat.com/charts.html?package=iframe-resizer&from=2014-12-31)
|
||||
[](https://www.jsdelivr.com/package/npm/iframe-resizer)
|
||||
[](https://coveralls.io/github/davidjbradshaw/iframe-resizer)
|
||||
[](https://www.paypal.me/davidjbradshaw)
|
||||
|
||||
This library enables the automatic resizing of the height and width of both same and cross domain iFrames to fit their contained content. It provides a range of features to address the most common issues with using iFrames, these include:
|
||||
|
||||
- Height and width resizing of the iFrame to content size.
|
||||
- Works with multiple and nested iFrames.
|
||||
- Domain authentication for cross domain iFrames.
|
||||
- Provides a range of page size calculation methods to support complex CSS layouts.
|
||||
- Detects changes to the DOM that can cause the page to resize using [MutationObserver](https://developer.mozilla.org/en/docs/Web/API/MutationObserver).
|
||||
- Detects events that can cause the page to resize (Window Resize, CSS Animation and Transition, Orientation Change and Mouse events).
|
||||
- Simplified messaging between iFrame and host page via [postMessage](https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage).
|
||||
- Fixes in page links in iFrame and supports links between the iFrame and parent page.
|
||||
- Provides custom sizing and scrolling methods.
|
||||
- Exposes parent position and viewport size to the iFrame.
|
||||
- Provides `onMouseEnter` and `onMouseLeave` events for the iFrame.
|
||||
- Works with [ViewerJS](https://viewerjs.org/) to support PDF and ODF documents.
|
||||
- Supports IE 11 ([V3 supports back to IE8](https://github.com/davidjbradshaw/iframe-resizer/tree/V3))
|
||||
|
||||
## Donate
|
||||
|
||||
Iframe-resizer is the result of many 100s of hours of work, if you would like to join others in showing support for the continued development of this project, then please feel free to buy me a coffee.
|
||||
|
||||
<a href="https://www.buymeacoffee.com/davidjbradshaw " target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/yellow_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Install
|
||||
|
||||
This package can be installed via NPM (`npm install iframe-resizer --save`).
|
||||
|
||||
### Usage
|
||||
|
||||
The package contains two minified JavaScript files in the [js](https://github.com/davidjbradshaw/iframe-resizer/tree/master/js) folder. The first ([iframeResizer.min.js](https://raw.githubusercontent.com/davidjbradshaw/iframe-resizer/master/js/iframeResizer.min.js)) is for the page hosting the iFrames. It can be called with via JavaScript:
|
||||
|
||||
```js
|
||||
const iframes = iFrameResize( [{options}], [css selector] || [iframe] );
|
||||
```
|
||||
|
||||
The second file ([iframeResizer.contentWindow.min.js](https://raw.github.com/davidjbradshaw/iframe-resizer/master/js/iframeResizer.contentWindow.min.js)) needs placing in the page(s) contained within your iFrame. <i>This file is designed to be a guest on someone else's system, so has no dependencies and won't do anything until it's activated by a message from the containing page</i>.
|
||||
|
||||
### Typical setup
|
||||
|
||||
The normal configuration is to have the iFrame resize when the browser window changes size or the content of the iFrame changes. To set this up you need to configure one of the dimensions of the iFrame to a percentage and tell the library to only update the other dimension. Normally you would set the width to 100% and have the height scale to fit the content.
|
||||
|
||||
```html
|
||||
<style>
|
||||
iframe {
|
||||
width: 1px;
|
||||
min-width: 100%;
|
||||
}
|
||||
</style>
|
||||
<script src="/js/iframeResizer.min.js"></script>
|
||||
<iframe id="myIframe" src="https://anotherdomain.com/iframe.html"></iframe>
|
||||
<script>
|
||||
iFrameResize({ log: true }, '#myIframe')
|
||||
</script>
|
||||
```
|
||||
|
||||
**Note:** Using _min-width_ to set the width of the iFrame, works around an issue in iOS that can prevent the iFrame from sizing correctly.
|
||||
|
||||
If you have problems, check the [troubleshooting](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/troubleshooting.md) section.
|
||||
|
||||
### Example
|
||||
|
||||
To see this working take a look at this [example](https://davidjbradshaw.com/iframe-resizer/example/) and watch the [console](https://developer.mozilla.org/en-US/docs/Tools/Web_Console).
|
||||
|
||||
## API Documentation
|
||||
|
||||
IFrame-Resizer provides an extensive range of options and APIs for both the parent page and the iframed page.
|
||||
|
||||
- **Parent Page API**
|
||||
- [Options](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/parent_page/options.md)
|
||||
- [Events](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/parent_page/events.md)
|
||||
- [Methods](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/parent_page/methods.md)
|
||||
- **IFramed Page API**
|
||||
- [Options](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/iframed_page/options.md)
|
||||
- [Events](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/iframed_page/events.md)
|
||||
- [Methods](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/iframed_page/methods.md)
|
||||
- **Use with Libraries and Frameworks**
|
||||
- [React](https://github.com/davidjbradshaw/iframe-resizer-react)
|
||||
- [Vue](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/use_with/vue.md)
|
||||
- [Angular](https://github.com/davidjbradshaw/iframe-resizer/issues/478#issuecomment-347958630)
|
||||
- [Ember](https://github.com/alexlafroscia/ember-iframe-resizer-modifier)
|
||||
- [jQuery](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/use_with/jquery.md)
|
||||
- [Google Apps Script](https://stackoverflow.com/a/65724113/2087070)
|
||||
- [Troubleshooting](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/troubleshooting.md)
|
||||
- [Upgrade from version 3](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/upgrade.md)
|
||||
- [Version history](https://github.com/davidjbradshaw/iframe-resizer/blob/master/CHANGELOG.md)
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2013-21 [David J. Bradshaw](https://github.com/davidjbradshaw) -
|
||||
Licensed under the [MIT License](LICENSE)
|
||||
|
||||
<!--
|
||||
[](https://nodei.co/npm/iframe-resizer/)
|
||||
|
||||
[](https://travis-ci.org/davidjbradshaw/iframe-resizer)
|
||||
[](https://snyk.io/test/github/davidjbradshaw/iframe-resizer)
|
||||
-->
|
34
iframe-resizer-master/bower.json
Executable file
34
iframe-resizer-master/bower.json
Executable file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "iframe-resizer",
|
||||
"version": "4.3.2",
|
||||
"homepage": "https://github.com/davidjbradshaw/iframe-resizer",
|
||||
"authors": ["David J. Bradshaw <dave@bradshaw.net>"],
|
||||
"description": "Responsively keep same and cross domain iFrames sized to their content with support for window/content resizing, multiple and nested iFrames. (Dependacy free and works with IE8+)",
|
||||
"main": ["js/iframeResizer.js", "js/iframeResizer.contentWindow.js"],
|
||||
"keywords": [
|
||||
"CrossDomain",
|
||||
"Cross-Domain",
|
||||
"iFrame",
|
||||
"Resizing",
|
||||
"Resizer",
|
||||
"postMessage",
|
||||
"content",
|
||||
"resize",
|
||||
"height",
|
||||
"autoheight",
|
||||
"auto-height",
|
||||
"iframe-auto-height",
|
||||
"height-iframe",
|
||||
"heightiframe",
|
||||
"width",
|
||||
"mutationObserver",
|
||||
"RWD",
|
||||
"responsive",
|
||||
"responsiveiframes",
|
||||
"responsive-iframes"
|
||||
],
|
||||
"license": "MIT",
|
||||
"ignore": ["example", "test", "gruntfile.js", "*.md", "*.json"],
|
||||
"dependencies": {},
|
||||
"devDependencies": {}
|
||||
}
|
40
iframe-resizer-master/docs/getting_started.md
Executable file
40
iframe-resizer-master/docs/getting_started.md
Executable file
@ -0,0 +1,40 @@
|
||||
## Getting Started
|
||||
|
||||
### Install
|
||||
|
||||
This package can be installed via NPM (`npm install iframe-resizer --save`).
|
||||
|
||||
### Usage
|
||||
|
||||
The package contains two minified JavaScript files in the [js](../js) folder. The first ([iframeResizer.min.js](https://raw.githubusercontent.com/davidjbradshaw/iframe-resizer/master/js/iframeResizer.min.js)) is for the page hosting the iFrames. It can be called with **native** JavaScript;
|
||||
|
||||
```js
|
||||
const iframes = iFrameResize( [{options}], [css selector] || [iframe] );
|
||||
```
|
||||
|
||||
The second file ([iframeResizer.contentWindow.min.js](https://raw.github.com/davidjbradshaw/iframe-resizer/master/js/iframeResizer.contentWindow.min.js)) needs placing in the page(s) contained within your iFrame. <i>This file is designed to be a guest on someone else's system, so has no dependencies and won't do anything until it's activated by a message from the containing page</i>.
|
||||
|
||||
### Typical setup
|
||||
|
||||
The normal configuration is to have the iFrame resize when the browser window changes size or the content of the iFrame changes. To set this up you need to configure one of the dimensions of the iFrame to a percentage and tell the library to only update the other dimension. Normally you would set the width to 100% and have the height scale to fit the content.
|
||||
|
||||
```html
|
||||
<style>
|
||||
iframe {
|
||||
width: 1px;
|
||||
min-width: 100%;
|
||||
}
|
||||
</style>
|
||||
<iframe id="myIframe" src="https://anotherdomain.com/iframe.html"></iframe>
|
||||
<script>
|
||||
iFrameResize({ log: true }, '#myIframe')
|
||||
</script>
|
||||
```
|
||||
|
||||
**Note:** Using _min-width_ to set the width of the iFrame, works around an issue in iOS that can prevent the iFrame from sizing correctly.
|
||||
|
||||
If you have problems, check the [troubleshooting](troubleshooting.md) section.
|
||||
|
||||
### Example
|
||||
|
||||
To see this working take a look at this [example](https://davidjbradshaw.com/iframe-resizer/example/) and watch the [console](https://developer.mozilla.org/en-US/docs/Tools/Web_Console).
|
15
iframe-resizer-master/docs/iframed_page/events.md
Executable file
15
iframe-resizer-master/docs/iframed_page/events.md
Executable file
@ -0,0 +1,15 @@
|
||||
## IFrame Page Events
|
||||
|
||||
The following events can be included in the [options](options.md) object attached to the iframed page.
|
||||
|
||||
### onMessage
|
||||
|
||||
type: function (message)
|
||||
|
||||
Receive message posted from the parent page with the `iframe.iFrameResizer.sendMessage()` method.
|
||||
|
||||
### onReady
|
||||
|
||||
type: function()
|
||||
|
||||
This function is called once iFrame-Resizer has been initialized after receiving a call from the parent page. If you need to call any of the [parentIFrame methods](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/iframed_page/methods.md) during page load, then they should be called from this event handler.
|
78
iframe-resizer-master/docs/iframed_page/methods.md
Executable file
78
iframe-resizer-master/docs/iframed_page/methods.md
Executable file
@ -0,0 +1,78 @@
|
||||
## IFrame Page Methods
|
||||
|
||||
These methods are available in the iFrame via the `window.parentIFrame` object. These method should be contained by a test for the `window.parentIFrame` object, in case the page is not loaded inside an iFrame. For example:
|
||||
|
||||
```js
|
||||
if ('parentIFrame' in window) {
|
||||
parentIFrame.close()
|
||||
}
|
||||
```
|
||||
|
||||
### autoResize([bool])
|
||||
|
||||
Turn autoResizing of the iFrame on and off. Returns bool of current state.
|
||||
|
||||
### close()
|
||||
|
||||
Remove the iFrame from the parent page.
|
||||
|
||||
### getId()
|
||||
|
||||
Returns the ID of the iFrame that the page is contained in.
|
||||
|
||||
### getPageInfo(callback || false)
|
||||
|
||||
Ask the containing page for its positioning coordinates. You need to provide a callback which receives an object with the following properties:
|
||||
|
||||
* **iframeHeight** The height of the iframe in pixels
|
||||
* **iframeWidth** The width of the iframe in pixels
|
||||
* **offsetLeft** The number of pixels between the left edge of the containing page and the left edge of the iframe
|
||||
* **offsetTop** The number of pixels between the top edge of the containing page and the top edge of the iframe
|
||||
* **scrollLeft** The number of pixels between the left edge of the iframe and the left edge of the iframe viewport
|
||||
* **scrollTop** The number of pixels between the top edge of the iframe and the top edge of the iframe viewport
|
||||
* **documentHeight** The containing document's height in pixels (the equivalent of `document.documentElement.clientHeight` in the container)
|
||||
* **documentWidth** The containing document's width in pixels (the equivalent of `document.documentElement.clientWidth` in the container)
|
||||
* **windowHeight** The containing window's height in pixels (the equivalent of `window.innerHeight` in the container)
|
||||
* **windowWidth** The containing window's width in pixels (the equivalent of `window.innerWidth` in the container)
|
||||
* **clientHeight** (deprecated) The height of the containing document, considering the viewport, in pixels (`max(documentHeight, windowHeight)`).
|
||||
* **clientWidth** (deprecated) The width of the containing document, considering the viewport, in pixels (`max(documentWidth, windowWidth)`).
|
||||
|
||||
|
||||
Your callback function will be recalled when the parent page is scrolled or resized.
|
||||
|
||||
Pass `false` to disable the callback.
|
||||
|
||||
### scrollTo(x,y)
|
||||
|
||||
Scroll the parent page to the coordinates x and y.
|
||||
|
||||
### scrollToOffset(x,y)
|
||||
|
||||
Scroll the parent page to the coordinates x and y relative to the position of the iFrame.
|
||||
|
||||
### sendMessage(message,[targetOrigin])
|
||||
|
||||
Send data to the containing page, `message` can be any data type that can be serialized into JSON. The `targetOrigin` option is used to restrict where the message is sent to; to stop an attacker mimicking your parent page. See the MDN documentation on [postMessage](https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage) for more details.
|
||||
|
||||
### setHeightCalculationMethod(heightCalculationMethod)
|
||||
|
||||
Change the method use to workout the height of the iFrame.
|
||||
|
||||
### size ([customHeight],[ customWidth])
|
||||
|
||||
Manually force iFrame to resize. This method optionally accepts two arguments: **customHeight** & **customWidth**. To use them you need first to disable the `autoResize` option to prevent auto resizing and enable the `sizeWidth` option if you wish to set the width.
|
||||
|
||||
```js
|
||||
iFrameResize({
|
||||
autoResize: false,
|
||||
sizeWidth: true
|
||||
})
|
||||
```
|
||||
|
||||
Then you can call the `size` method with dimensions:
|
||||
|
||||
```js
|
||||
if ('parentIFrame' in window) {
|
||||
parentIFrame.size(100); // Set height to 100px
|
||||
}
|
||||
```
|
28
iframe-resizer-master/docs/iframed_page/options.md
Executable file
28
iframe-resizer-master/docs/iframed_page/options.md
Executable file
@ -0,0 +1,28 @@
|
||||
## IFrame Page Options
|
||||
|
||||
The following options can be set from within the iFrame page by creating a `window.iFrameResizer` object before the JavaScript file is loaded into the page.
|
||||
|
||||
```html
|
||||
<script>
|
||||
window.iFrameResizer = {
|
||||
targetOrigin: 'https://mydomain.com'
|
||||
}
|
||||
</script>
|
||||
<script src="js/iframeresizer.contentwindow.js"></script>
|
||||
```
|
||||
|
||||
### targetOrigin
|
||||
|
||||
default: '*'
|
||||
type: string
|
||||
|
||||
This option allows you to restrict the domain of the parent page, to prevent other sites mimicking your parent page.
|
||||
|
||||
### heightCalculationMethod / widthCalculationMethod
|
||||
|
||||
default: null
|
||||
type: string | function() { return integer }
|
||||
|
||||
These options can be used to override the option set in the parent page (See above for details on available values). This can be useful when moving between pages in the iFrame that require different values for these options.
|
||||
|
||||
Altenatively you can pass a custom function that returns the size as an integer. This can be useful when none of the standard ways of working out the size are suitable. However, normally problems with sizing are due to CSS issues and this should be looked at first.
|
67
iframe-resizer-master/docs/parent_page/events.md
Executable file
67
iframe-resizer-master/docs/parent_page/events.md
Executable file
@ -0,0 +1,67 @@
|
||||
## Events
|
||||
|
||||
The following callback events can be passed to iframe-resizer on the parent page, as part of the [options](options.md) object.
|
||||
|
||||
### onClose
|
||||
|
||||
```js
|
||||
onClose: (iframeID) => boolean
|
||||
```
|
||||
|
||||
Called before iFrame is closed via `parentIFrame.close()` or `iframe.iFrameResizer.close()` methods. Returning `false` will prevent the iFrame from closing.
|
||||
|
||||
### onClosed
|
||||
|
||||
```js
|
||||
onClosed: (iframeID) => undefined
|
||||
```
|
||||
|
||||
Called after iFrame is closed via `parentIFrame.close()` or `iframe.iFrameResizer.close()` methods.
|
||||
|
||||
### onInit
|
||||
|
||||
```js
|
||||
onInit: (iframe) => undefined
|
||||
```
|
||||
|
||||
Called after initial setup.
|
||||
|
||||
### onMessage
|
||||
|
||||
```js
|
||||
onMessage: ({iframe,message}) => undefined
|
||||
```
|
||||
|
||||
Receive message posted from iFrame with the `parentIFrame.sendMessage()` method.
|
||||
|
||||
### onMouseEnter
|
||||
|
||||
```js
|
||||
onMouseEnter: ({iframe,height,width,type}) => undefined
|
||||
```
|
||||
|
||||
Function called after the mouse enters the iframe. Passes `messageData` object containing the **iFrame**, **screenX**, **screenY** and the **type** of event that triggered the callback.
|
||||
|
||||
### onMouseLeave
|
||||
|
||||
```js
|
||||
onMouseLeave: ({iframe,height,width,type}) => undefined
|
||||
```
|
||||
|
||||
Function called after the mouse leaves the iframe. Passes `messageData` object containing the **iFrame**, **screenX**, **screenY** and the **type** of event that triggered the callback.
|
||||
|
||||
### onResized
|
||||
|
||||
```js
|
||||
onResized: ({iframe,height,width,type}) => undefined
|
||||
```
|
||||
|
||||
Function called after iFrame resized. Passes `messageData` object containing the **iFrame**, **height**, **width** and the **type** of event that triggered the iFrame to resize.
|
||||
|
||||
### onScroll
|
||||
|
||||
```js
|
||||
onScroll: ({x,y}) => [true|false]
|
||||
```
|
||||
|
||||
Called before the page is repositioned after a request from the iFrame, due to either an in page link, or a direct request from either [parentIFrame.scrollTo()](../iframed_page/methods.md#scrolltoxy) or [parentIFrame.scrollToOffset()](../iframed_page/methods.md#scrolltooffsetxy). If this function returns **false**, it will stop the library from repositioning the page, so that you can implement your own animated page scrolling instead.
|
23
iframe-resizer-master/docs/parent_page/methods.md
Executable file
23
iframe-resizer-master/docs/parent_page/methods.md
Executable file
@ -0,0 +1,23 @@
|
||||
## IFrame Object Methods
|
||||
|
||||
Once the iFrame has been initialized, an `iFrameResizer` object is bound to it. This has the following methods available.
|
||||
|
||||
### close()
|
||||
|
||||
Remove the iFrame from the page.
|
||||
|
||||
### moveToAnchor(anchor)
|
||||
|
||||
Move to anchor in iFrame.
|
||||
|
||||
### removeListeners()
|
||||
|
||||
Detach event listeners from iFrame. This is option allows Virtual DOMs to remove an iFrame tag. It should not normally be required.
|
||||
|
||||
### resize()
|
||||
|
||||
Tell the iFrame to resize itself.
|
||||
|
||||
### sendMessage(message, [targetOrigin])
|
||||
|
||||
Send data to the containing page, `message` can be any data type that can be serialized into JSON. The `targetOrigin` option is used to restrict where the message is sent to, in case your iFrame navigates away to another domain.
|
162
iframe-resizer-master/docs/parent_page/options.md
Executable file
162
iframe-resizer-master/docs/parent_page/options.md
Executable file
@ -0,0 +1,162 @@
|
||||
|
||||
## Options
|
||||
|
||||
The following options can be passed to iframe-resizer on the parent page.
|
||||
|
||||
### log
|
||||
|
||||
default: false
|
||||
type: boolean
|
||||
|
||||
Setting the `log` option to true will make the scripts in both the host page and the iFrame output everything they do to the JavaScript console so you can see the communication between the two scripts.
|
||||
|
||||
### autoResize
|
||||
|
||||
default: true
|
||||
type: boolean
|
||||
|
||||
When enabled changes to the Window size or the DOM will cause the iFrame to resize to the new content size. Disable if using size method with custom dimensions.
|
||||
|
||||
<i>Note: When set to false the iFrame will still inititally size to the contained content, only additional resizing events are disabled.</i>
|
||||
|
||||
### bodyBackground
|
||||
|
||||
default: null
|
||||
type: string
|
||||
|
||||
Override the body background style in the iFrame.
|
||||
|
||||
### bodyMargin
|
||||
|
||||
default: null
|
||||
type: string || number
|
||||
|
||||
Override the default body margin style in the iFrame. A string can be any valid value for the CSS margin attribute, for example '8px 3em'. A number value is converted into px.
|
||||
|
||||
### bodyPadding
|
||||
|
||||
default: null
|
||||
type: string || number
|
||||
|
||||
Override the default body padding style in the iFrame. A string can be any valid value for the CSS margin attribute, for example '8px 3em'. A number value is converted into px.
|
||||
|
||||
### checkOrigin
|
||||
|
||||
default: true
|
||||
type: boolean || array
|
||||
|
||||
When set to true, only allow incoming messages from the domain listed in the `src` property of the iFrame tag. If your iFrame navigates between different domains, ports or protocols; then you will need to provide an array of URLs or disable this option.
|
||||
|
||||
### inPageLinks
|
||||
|
||||
default: false
|
||||
type: boolean
|
||||
|
||||
When enabled in page linking inside the iFrame and from the iFrame to the parent page will be enabled.
|
||||
|
||||
### heightCalculationMethod
|
||||
|
||||
default: 'bodyOffset'
|
||||
values: 'bodyOffset' | 'bodyScroll' | 'documentElementOffset' | 'documentElementScroll' |
|
||||
'max' | 'min' | 'grow' | 'lowestElement' | 'taggedElement'
|
||||
|
||||
By default the height of the iFrame is calculated by converting the margin of the `body` to <i>px</i> and then adding the top and bottom figures to the offsetHeight of the `body` tag.
|
||||
|
||||
In cases where CSS styles causes the content to flow outside the `body` you may need to change this setting to one of the following options. Each can give different values depending on how CSS is used in the page and each has varying side-effects. You will need to experiment to see which is best for any particular circumstance.
|
||||
|
||||
* **bodyOffset** uses `document.body.offsetHeight`
|
||||
* **bodyScroll** uses `document.body.scrollHeight` <sup>*</sup>
|
||||
* **documentElementOffset** uses `document.documentElement.offsetHeight`
|
||||
* **documentElementScroll** uses `document.documentElement.scrollHeight` <sup>*</sup>
|
||||
* **max** takes the largest value of the main four options <sup>*</sup>
|
||||
* **min** takes the smallest value of the main four options <sup>*</sup>
|
||||
* **lowestElement** Loops though every element in the DOM and finds the lowest bottom point <sup>†</sup>
|
||||
* **taggedElement** Finds the bottom of the lowest element with a `data-iframe-height` attribute
|
||||
|
||||
<i>Notes:</i>
|
||||
|
||||
<i>**If the default option doesn't work then the best solutions is to use either** taggedElement, **or** lowestElement</i>**.** Alternatively it is possible to add your own custom sizing method directly inside the iFrame, see the [iFrame Page Options](../iframed_page/options.md) section for more details.
|
||||
|
||||
<sup> † </sup> <i>The **lowestElement** option is the most reliable way of determining the page height. However, it does have a performance impact, as it requires checking the position of every element on the page. The **taggedElement** option provides much greater performance by limiting the number of elements that need their position checked</i>.
|
||||
|
||||
<sup>*</sup> These methods can cause screen flicker in some browsers.
|
||||
|
||||
### maxHeight / maxWidth
|
||||
|
||||
default: infinity
|
||||
type: integer
|
||||
|
||||
Set maximum height/width of iFrame.
|
||||
|
||||
### minHeight / minWidth
|
||||
|
||||
default: 0
|
||||
type: integer
|
||||
|
||||
Set minimum height/width of iFrame.
|
||||
|
||||
### resizeFrom
|
||||
|
||||
default: 'parent'
|
||||
values: 'parent', 'child'
|
||||
|
||||
Listen for resize events from the parent page, or the iFrame. Select the 'child' value if the iFrame can be resized independently of the browser window. <i>Selecting this value can cause issues with some height calculation methods on mobile devices</i>.
|
||||
|
||||
### scrolling
|
||||
|
||||
default: false
|
||||
type: boolean | 'omit'
|
||||
|
||||
Enable scroll bars in iFrame.
|
||||
|
||||
* **true** applies `scrolling="yes"`
|
||||
* **false** applies `scrolling="no"`
|
||||
* **'omit'** applies no `scrolling` attribute to the iFrame
|
||||
|
||||
### sizeHeight
|
||||
|
||||
default: true
|
||||
type: boolean
|
||||
|
||||
Resize iFrame to content height.
|
||||
|
||||
### sizeWidth
|
||||
|
||||
default: false
|
||||
type: boolean
|
||||
|
||||
Resize iFrame to content width.
|
||||
|
||||
|
||||
### tolerance
|
||||
|
||||
default: 0
|
||||
type: integer
|
||||
|
||||
Set the number of pixels the iFrame content size has to change by, before triggering a resize of the iFrame.
|
||||
|
||||
### widthCalculationMethod
|
||||
|
||||
default: 'scroll'
|
||||
values: 'bodyOffset' | 'bodyScroll' | 'documentElementOffset' | 'documentElementScroll' |
|
||||
'max' | 'min' | 'scroll' | 'rightMostElement' | 'taggedElement'
|
||||
|
||||
By default the width of the page is worked out by taking the greater of the **documentElement** and **body** scrollWidth values.
|
||||
|
||||
Some CSS techniques may require you to change this setting to one of the following options. Each can give different values depending on how CSS is used in the page and each has varying side-effects. You will need to experiment to see which is best for any particular circumstance.
|
||||
|
||||
* **bodyOffset** uses `document.body.offsetWidth`
|
||||
* **bodyScroll** uses `document.body.scrollWidth` <sup>*</sup>
|
||||
* **documentElementOffset** uses `document.documentElement.offsetWidth`
|
||||
* **documentElementScroll** uses `document.documentElement.scrollWidth` <sup>*</sup>
|
||||
* **scroll** takes the largest value of the two scroll options <sup>*</sup>
|
||||
* **max** takes the largest value of the main four options <sup>*</sup>
|
||||
* **min** takes the smallest value of the main four options <sup>*</sup>
|
||||
* **rightMostElement** Loops though every element in the DOM and finds the right most point <sup>†</sup>
|
||||
* **taggedElement** Finds the left most element with a `data-iframe-width` attribute
|
||||
|
||||
Alternatively it is possible to add your own custom sizing method directly inside the iFrame, see the [iFrame Page Options](../iframed_page/options.md) section for more details
|
||||
|
||||
<sup> † </sup> <i>The **rightMostElement** option is the most reliable way of determining the page width. However, it does have a performance impact as it requires calculating the position of every element on the page. The **taggedElement** option provides much greater performance by limiting the number of elements that need their position checked.</i>
|
||||
|
||||
<sup>*</sup> These methods can cause screen flicker in some browsers.
|
19
iframe-resizer-master/docs/readme.md
Executable file
19
iframe-resizer-master/docs/readme.md
Executable file
@ -0,0 +1,19 @@
|
||||
# iFrame-Resizer Documentation
|
||||
|
||||
- [Getting Started](getting_started.md)
|
||||
- **Parent Page API**
|
||||
- [Options](parent_page/options.md)
|
||||
- [Events](parent_page/events.md)
|
||||
- [Methods](parent_page/methods.md)
|
||||
- **IFramed Page API**
|
||||
- [Options](iframed_page/options.md)
|
||||
- [Events](iframed_page/events.md)
|
||||
- [Methods](iframed_page/methods.md)
|
||||
- **Use with Libraries and Frameworks**
|
||||
- [React](https://github.com/davidjbradshaw/iframe-resizer-react)
|
||||
- [Vue](https://github.com/davidjbradshaw/iframe-resizer/blob/master/docs/use_with/vue.md)
|
||||
- [Angular](https://github.com/davidjbradshaw/iframe-resizer/issues/478#issuecomment-347958630)
|
||||
- [jQuery](use_with/jquery.md)
|
||||
- [Troubleshooting](troubleshooting.md)
|
||||
- [Upgrade from version 3](upgrade.md)
|
||||
- [Version history](../CHANGELOG.md)
|
119
iframe-resizer-master/docs/troubleshooting.md
Executable file
119
iframe-resizer-master/docs/troubleshooting.md
Executable file
@ -0,0 +1,119 @@
|
||||
## Troubleshooting
|
||||
|
||||
The first steps to investigate a problem is to make sure you are using the latest version and then enable the [log](#log) option, which outputs everything that happens to the [JavaScript Console](https://developers.google.com/chrome-developer-tools/docs/console#opening_the_console). This will enable you to see what both the iFrame and host page are up to and also see any JavaScript error messages.
|
||||
|
||||
Solutions for the most common problems are outlined in this section. If you need further help, then please ask questions on [StackOverflow](https://stackoverflow.com/questions/tagged/iframe-resizer) with the `iframe-resizer` tag.
|
||||
|
||||
Bug reports and pull requests are welcome on the [issue tracker](https://github.com/davidjbradshaw/iframe-resizer/issues). Please read the [contributing guidelines](https://github.com/davidjbradshaw/iframe-resizer/blob/master/CONTRIBUTING.md) before opening a ticket, as this will ensure a faster resolution.
|
||||
|
||||
### Multiple IFrames on one page
|
||||
|
||||
When the resizer does not work using multiple IFrames on one page, make sure that each frame has an unique id or no ids at all.
|
||||
|
||||
### IFrame not sizing correctly
|
||||
|
||||
If a larger element of content is removed from the normal document flow, through the use of absolute positioning, it can prevent the browser working out the correct size of the page. In such cases you can change the [heightCalculationMethod](./parent_page/options.md#heightcalculationmethod) to uses one of the other sizing methods.
|
||||
|
||||
### IFrame not downsizing
|
||||
|
||||
The most likely cause of this problem is having set the height of an element to be 100% of the page somewhere in your CSS. This is normally on the `html` or `body` elements, but it could be on any element in the page. This can sometimes be got around by using the `taggedElement` height calculation method and added a `data-iframe-height` attribute to the element that you want to define the bottom position of the page. You may find it useful to use `position: relative` on this element to define a bottom margin or allow space for a floating footer.
|
||||
|
||||
Not having a valid [HTML document type](https://en.wikipedia.org/wiki/Document_type_declaration) in the iFrame can also sometimes prevent downsizing. At it's most simplest this can be the following.
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
```
|
||||
|
||||
### IFrame not resizing
|
||||
|
||||
The most common cause of this is not placing the [iframeResizer.contentWindow.min.js](https://raw.github.com/davidjbradshaw/iframe-resizer/master/js/iframeResizer.contentWindow.min.js) script inside the iFramed page. If the other page is on a domain outside your control and you can not add JavaScript to that page, then now is the time to give up all hope of ever getting the iFrame to size to the content. As it is impossible to work out the size of the contained page, without using JavaScript on both the parent and child pages.
|
||||
|
||||
### IFrame not detecting CSS :hover events
|
||||
|
||||
If your page resizes via CSS `:hover` events, these won't be detected by default. It is however possible to create `mouseover` and `mouseout` event listeners on the elements that are resized via CSS and have these events call the [parentIFrame.size()](##parentiframesize-customheight-customwidth) method. With jQuery this can be done as follows
|
||||
|
||||
```js
|
||||
function resize(){
|
||||
if ('parentIFrame' in window) {
|
||||
// Fix race condition in FireFox with setTimeout
|
||||
setTimeout(parentIFrame.size.bind(parentIFrame),0);
|
||||
}
|
||||
}
|
||||
|
||||
$(*Element with hover style*).hover(resize);
|
||||
```
|
||||
|
||||
### IFrame not detecting textarea resizes
|
||||
|
||||
Both FireFox and the WebKit based browsers allow the user to resize `textarea` input boxes. Unfortunately the WebKit browsers don't trigger the mutation event when this happens. This can be worked around to some extent with the following code.
|
||||
|
||||
```js
|
||||
function store() {
|
||||
this.x = this.offsetWidth
|
||||
this.y = this.offsetHeight
|
||||
}
|
||||
|
||||
$('textarea')
|
||||
.each(store)
|
||||
.on('mouseover mouseout', function() {
|
||||
if (this.offsetWidth !== this.x || this.offsetHeight !== this.y) {
|
||||
store.call(this)
|
||||
if ('parentIFrame' in window) {
|
||||
parentIFrame.size()
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### IFrame flickers
|
||||
|
||||
Some of the alternate [height calculation methods](./parent_page/options.md#heightcalculationmethod), such as **max** can cause the iFrame to flicker. This is due to the fact that to check for downsizing, the iFrame first has to be downsized before the new height can be worked out. This effect can be reduced by setting a [minSize](./docs/parent_page/options.md#minheight--minwidth) value, so that the iFrame is not reset to zero height before regrowing.
|
||||
|
||||
In modern browsers, if the default [height calculation method](./parent_page/options.md#heightcalculationmethod) does not work, then it is normally best to use **taggedElement** or **lowestElement**, which are both flicker free.
|
||||
|
||||
<i>Please see the notes section under [heightCalculationMethod](./parent_page/options.md#heightcalculationmethod) to understand the limitations of the different options.</i>
|
||||
|
||||
### Localhost 127.0.0.1 and file:///
|
||||
|
||||
When an iframe is located on your local machine the browser adds extra security restrictions to cross-domain iframes. These will stop iframe-resizer from functioning. If you need to test something locally, then it is best to use the external IP Address of the machine.
|
||||
|
||||
### Failed to execute 'postMessage' on 'DOMWindow'
|
||||
|
||||
This error occurs when the parent window tries to send a message to the iframe before it has loaded. IFrameResize makes multiple attempts to talk to the iFrame, so if everything is working then you can safely ignore this error message.
|
||||
|
||||
If you're still having problems, or you really want to not ignore the error, then you can try delaying the call to `iframeResize()` until after the `onLoad` event of the iframe has fired.
|
||||
|
||||
If this does not fix the problem then check `x-Frame-Options` http header on the server that is sending the iframe content, as this can also block calls to `postMessage` if set incorrectly.
|
||||
|
||||
|
||||
### ParentIFrame not found errors
|
||||
|
||||
The `parentIFrame` object is created once the iFrame has been initially resized. If you wish to use it during page load you will need call it from the onReady.
|
||||
|
||||
```html
|
||||
<script>
|
||||
window.iFrameResizer = {
|
||||
onReady: function() {
|
||||
var myId = window.parentIFrame.getId()
|
||||
console.log('The ID of the iFrame in the parent page is: ' + myId)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script src="js/iframeresizer.contentwindow.js"></script>
|
||||
```
|
||||
|
||||
### PDF and OpenDocument files
|
||||
|
||||
It is not possible to add the required JavaScript to PDF and ODF files. However, you can get around this limitation by using [ViewerJS](https://viewerjs.org/) to render these files inside a HTML page, that also contains the iFrame JavaScript file ([iframeResizer.contentWindow.min.js](https://raw.github.com/davidjbradshaw/iframe-resizer/master/js/iframeResizer.contentWindow.min.js)).
|
||||
|
||||
### Unexpected message received error
|
||||
|
||||
By default the origin of incoming messages is checked against the `src` attribute of the iFrame. If they don't match an error is thrown. This behaviour can be disabled by setting the [checkOrigin](./docs/parent_page/options.md#checkorigin) option to **false**.
|
||||
|
||||
### Width not resizing
|
||||
|
||||
By default only changes in height are detected, if you want to calculate the width you need to set the `sizeWidth` option to true and the `sizeHeight` option to false.
|
||||
|
||||
### Frame has not responded within 5 seconds
|
||||
|
||||
This can happen when postMessage is being blocked in browser. There could be multiple reasons to that but in some cases we found that RocketLoader extension within Cloudflare was the reason. Try disabling it if you are using cloudflare.
|
5
iframe-resizer-master/docs/upgrade.md
Executable file
5
iframe-resizer-master/docs/upgrade.md
Executable file
@ -0,0 +1,5 @@
|
||||
## Upgrading to version 4
|
||||
|
||||
In version 4 support for IE 8-10 and Andriod 4.4 has been removed, if you still need this then please use [version 3](https://github.com/davidjbradshaw/iframe-resizer/tree/V3) of this library.
|
||||
|
||||
The callback methods have been renamed to onEvents, so for example `scrollCallback` is now called `onScroll`. This is to enable better integration with modern libraries such as React.
|
7
iframe-resizer-master/docs/use_with/jquery.md
Executable file
7
iframe-resizer-master/docs/use_with/jquery.md
Executable file
@ -0,0 +1,7 @@
|
||||
## jQuery
|
||||
|
||||
If jQuery is detected on the page, then this library provides a simple jQuery interface.
|
||||
|
||||
```js
|
||||
$('iframe').iFrameResize([{ options }])
|
||||
```
|
30
iframe-resizer-master/docs/use_with/vue.md
Executable file
30
iframe-resizer-master/docs/use_with/vue.md
Executable file
@ -0,0 +1,30 @@
|
||||
## Vue
|
||||
|
||||
Create the following Vue directive
|
||||
|
||||
```js
|
||||
import Vue from 'vue'
|
||||
import iframeResize from 'iframe-resizer/js/iframeResizer';
|
||||
|
||||
Vue.directive('resize', {
|
||||
bind: function(el, { value = {} }) {
|
||||
el.addEventListener('load', () => iframeResize(value, el))
|
||||
},
|
||||
unbind: function (el) {
|
||||
el.iFrameResizer.removeListeners();
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
and then include it on your page as follows.
|
||||
|
||||
```html
|
||||
<iframe
|
||||
v-resize="{ log: true }"
|
||||
width="100%"
|
||||
src="myiframe.html"
|
||||
frameborder="0"
|
||||
></iframe>
|
||||
```
|
||||
|
||||
- Thanks to [Aldebaran Desombergh](https://github.com/davidjbradshaw/iframe-resizer/issues/513#issuecomment-538333854) for this example
|
127
iframe-resizer-master/example/frame.absolute.html
Executable file
127
iframe-resizer-master/example/frame.absolute.html
Executable file
@ -0,0 +1,127 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>iFrame message passing test</title>
|
||||
<meta name="description" content="iFrame message passing test" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<style>
|
||||
a.back {
|
||||
float: right;
|
||||
margin-left: 8px;
|
||||
}
|
||||
body {
|
||||
border: solid 1px red;
|
||||
}
|
||||
p {
|
||||
padding: 5px 212px 5px 5px;
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
#abs {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 200px;
|
||||
height: 600px;
|
||||
background-color: wheat;
|
||||
}
|
||||
a.top {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
margin: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p>
|
||||
<b>iFrame</b>
|
||||
|
||||
<a href="frame.content.html" class="back">Back to page 1</a>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
class=" back"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.scrollTo(0,99999);return false;"
|
||||
>Bottom</a
|
||||
>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
class=" back"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.scrollToOffset(0,0);return false;"
|
||||
>Scroll to iFrame</a
|
||||
>
|
||||
|
||||
<a href="#test" class="back">Jump to iFrame anchor</a>
|
||||
<a href="#anchorParentTest" class="back">Jump to parent anchor</a>
|
||||
</p>
|
||||
<p>
|
||||
This page has an absolute position element that take it out side the
|
||||
normal document body, which is marked with a red border on this page. This
|
||||
prevents the normal height calculation, which is based on the body tag
|
||||
from returning the correct height. To work around this you can set the
|
||||
<b>heightCalculationMethod</b> option to use one of the other page height
|
||||
properties.
|
||||
</p>
|
||||
<p>
|
||||
Use the dropdown to change the sizing method of the page, select the
|
||||
different sizing options to see how the effect the page. Note that they
|
||||
can have different effects in different browsers, so you are normally best
|
||||
off selecting <b>max</b> if you need to change away from the default
|
||||
<b>bodyOffset</b> option.
|
||||
</p>
|
||||
<p data-iframe-height>
|
||||
<b>Height Calculation Method</b>
|
||||
<select name="heightCalculationMethod">
|
||||
<option>bodyOffset</option>
|
||||
<option>bodyScroll</option>
|
||||
<option>documentElementOffset</option>
|
||||
<option>documentElementScroll</option>
|
||||
<option>max</option>
|
||||
<option>min</option>
|
||||
<option>grow</option>
|
||||
<option>lowestElement</option>
|
||||
<option>taggedElement</option>
|
||||
</select>
|
||||
</p>
|
||||
<p>
|
||||
<i
|
||||
>This option should be used sparingly, as the alternate methods can be
|
||||
less accurate at working out the correct page size, can cause screen
|
||||
flicker and can sometimes fail to reduce in size when the frame content
|
||||
changes in browsers that do not support mutationObservers (See
|
||||
<a href="https://caniuse.com/mutationobserver">caniuse.com</a> for
|
||||
details).</i
|
||||
>
|
||||
</p>
|
||||
<a name="test">Test in page anchor</a>
|
||||
|
||||
<div id="abs">
|
||||
Absolute positioned element
|
||||
<a
|
||||
href="#"
|
||||
class="top"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.scrollTo(0,0);return false;"
|
||||
>Top</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="../js/iframeResizer.contentWindow.min.js"
|
||||
></script>
|
||||
<script>
|
||||
$('select').on('change', function() {
|
||||
if ('parentIFrame' in window) {
|
||||
parentIFrame.setHeightCalculationMethod($(this).val())
|
||||
parentIFrame.size()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
125
iframe-resizer-master/example/frame.content.html
Executable file
125
iframe-resizer-master/example/frame.content.html
Executable file
@ -0,0 +1,125 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>iFrame message passing test</title>
|
||||
<meta name="description" content="iFrame message passing test" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
<style>
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-model: border-box;
|
||||
}
|
||||
a {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<b>iFrame</b>
|
||||
<a href="#" onclick="$('p:eq(0)').toggle();return false;">Toggle content</a>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.size(250);return false;"
|
||||
>Size(250)</a
|
||||
>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.autoResize(true);return false;"
|
||||
>autoResize(true)</a
|
||||
>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.autoResize(false);return false;"
|
||||
>autoResize(false)</a
|
||||
>
|
||||
|
||||
<a id="nested" href="frame.nested.html">Nested</a>
|
||||
|
||||
<a href="frame.hover.html">:Hover</a>
|
||||
|
||||
<a href="frame.textarea.html">TextArea</a>
|
||||
|
||||
<a href="frame.absolute.html">Absolute Position</a>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.sendMessage('Hello from the iFrame');return false;"
|
||||
>Send Message</a
|
||||
>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.close();return false;"
|
||||
>Close</a
|
||||
>
|
||||
|
||||
<p>
|
||||
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
|
||||
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
|
||||
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
|
||||
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
|
||||
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
|
||||
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
|
||||
est laborum.
|
||||
</p>
|
||||
<p>
|
||||
But I must explain to you how all this mistaken idea of denouncing
|
||||
pleasure and praising pain was born and I will give you a complete account
|
||||
of the system, and expound the actual teachings of the great explorer of
|
||||
the truth, the master-builder of human happiness. No one rejects,
|
||||
dislikes, or avoids pleasure itself, because it is pleasure, but because
|
||||
those who do not know how to pursue pleasure rationally encounter
|
||||
consequences that are extremely painful. Nor again is there anyone who
|
||||
loves or pursues or desires to obtain pain of itself, because it is pain,
|
||||
but because occasionally circumstances occur in which toil and pain can
|
||||
procure him some great pleasure. To take a trivial example, which of us
|
||||
ever undertakes laborious physical exercise, except to obtain some
|
||||
advantage from it? But who has any right to find fault with a man who
|
||||
chooses to enjoy a pleasure that has no annoying consequences, or one who
|
||||
avoids a pain that produces no resultant pleasure?
|
||||
</p>
|
||||
<p>
|
||||
On the other hand, we denounce with righteous indignation and dislike men
|
||||
who are so beguiled and demoralized by the charms of pleasure of the
|
||||
moment, so blinded by desire, that they cannot foresee the pain and
|
||||
trouble that are bound to ensue; and equal blame belongs to those who fail
|
||||
in their duty through weakness of will, which is the same as saying
|
||||
through shrinking from toil and pain. These cases are perfectly simple and
|
||||
easy to distinguish. In a free hour, when our power of choice is
|
||||
untrammelled and when nothing prevents our being able to do what we like
|
||||
best, every pleasure is to be welcomed and every pain avoided. But in
|
||||
certain circumstances and owing to the claims of duty or the obligations
|
||||
of business it will frequently occur that pleasures have to be repudiated
|
||||
and annoyances accepted. The wise man therefore always holds in these
|
||||
matters to this principle of selection: he rejects pleasures to secure
|
||||
other greater pleasures, or else he endures pains to avoid worse pains.
|
||||
</p>
|
||||
|
||||
<script>
|
||||
var level = document.location.search.replace(/\?/, '') || 0
|
||||
$('#nested').attr('href', 'frame.nested.html?' + ++level)
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var iFrameResizer = {
|
||||
onMessage: function(message) {
|
||||
alert(message, parentIFrame.getId())
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="../js/iframeResizer.contentWindow.min.js"
|
||||
defer
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
68
iframe-resizer-master/example/frame.hover.html
Executable file
68
iframe-resizer-master/example/frame.hover.html
Executable file
@ -0,0 +1,68 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>iFrame message passing test</title>
|
||||
<meta name="description" content="iFrame message passing test" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<style>
|
||||
a {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<b>iFrame :Hover Example</b>
|
||||
<a href="frame.content.html">Back to page 1</a>
|
||||
|
||||
<p>
|
||||
Mouse over the code example below.
|
||||
</p>
|
||||
|
||||
<xmp>
|
||||
<!-- #code -->
|
||||
</xmp>
|
||||
|
||||
<script>
|
||||
var iFrameResizer = {
|
||||
heightCalculationMethod: 'lowestElement'
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="../js/iframeResizer.contentWindow.min.js"
|
||||
></script>
|
||||
|
||||
<div id="code">
|
||||
<style>
|
||||
xmp {
|
||||
background-color: #eee;
|
||||
padding: 20px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
xmp:hover {
|
||||
border: #c33 solid 40px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
;(function() {
|
||||
$('xmp').hover(function() {
|
||||
if ('parentIFrame' in window) {
|
||||
// Fix race condition in FireFox with setTimeout
|
||||
setTimeout(parentIFrame.size.bind(parentIFrame), 0)
|
||||
}
|
||||
})
|
||||
})()
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$('xmp').text('<xmp>' + $('#code').html() + '<xmp>')
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
100
iframe-resizer-master/example/frame.nested.html
Executable file
100
iframe-resizer-master/example/frame.nested.html
Executable file
@ -0,0 +1,100 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>iFrame message passing test</title>
|
||||
<meta name="description" content="iFrame message passing test" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<style>
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-model: border-box;
|
||||
}
|
||||
a {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin-top: 0;
|
||||
}
|
||||
body {
|
||||
margin: 8px !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<a href="frame.content.html">Back to page 1</a>
|
||||
<h2>Nested iFrame</h2>
|
||||
<p>
|
||||
Resize window or click one of the links in the nested iFrame to watch it
|
||||
resize.
|
||||
</p>
|
||||
<div style="margin:20px;">
|
||||
<iframe
|
||||
id="nestedIFrame"
|
||||
src="frame.content.html"
|
||||
width="100%"
|
||||
scrolling="no"
|
||||
></iframe>
|
||||
</div>
|
||||
<p id="callback"></p>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../js/iframeResizer.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
var level = document.location.search.replace(/\?/, '') || 0
|
||||
|
||||
$('iframe')
|
||||
.attr('id', 'nestedIFrame' + level)
|
||||
.attr('src', 'frame.content.html?' + level)
|
||||
|
||||
/*
|
||||
* If you do not understand what the code below does, then please just use the
|
||||
* following call in your own code.
|
||||
*
|
||||
* iFrameResize({log:true});
|
||||
*
|
||||
* Once you have it working, set the log option to false.
|
||||
*/
|
||||
|
||||
iFrameResize({
|
||||
log: true, // Enable console logging
|
||||
inPageLinks: true,
|
||||
onResized: function(messageData) {
|
||||
// Callback fn when message is received
|
||||
$('p#callback').html(
|
||||
'<b>Frame ID:</b> ' +
|
||||
messageData.iframe.id +
|
||||
' <b>Height:</b> ' +
|
||||
messageData.height +
|
||||
' <b>Width:</b> ' +
|
||||
messageData.width +
|
||||
' <b>Event type:</b> ' +
|
||||
messageData.type
|
||||
)
|
||||
},
|
||||
onMessage: function(messageData) {
|
||||
// Callback fn when message is received
|
||||
parentIFrame.sendMessage(
|
||||
messageData.message + ' (via ' + $('iframe').attr('id') + ')'
|
||||
)
|
||||
},
|
||||
onClosed: function(id) {
|
||||
/// Callback fn when iFrame is closed
|
||||
$('p#callback').html(
|
||||
'<b>IFrame (</b>' + id + '<b>) removed from page.</b>'
|
||||
)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="../js/iframeResizer.contentWindow.min.js"
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
45
iframe-resizer-master/example/frame.textarea.html
Executable file
45
iframe-resizer-master/example/frame.textarea.html
Executable file
@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>iFrame message passing test</title>
|
||||
<meta name="description" content="iFrame message passing test" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<style>
|
||||
a {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<b>iFrame TextArea Example</b>
|
||||
<a href="frame.content.html">Back to page 1</a>
|
||||
|
||||
<p>
|
||||
Resize the textarea below.
|
||||
</p>
|
||||
|
||||
<textarea id="textArea">Resize me</textarea>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
<script src="../js/iframeResizer.contentWindow.min.js"></script>
|
||||
|
||||
<script>
|
||||
function store() {
|
||||
this.x = this.offsetWidth
|
||||
this.y = this.offsetHeight
|
||||
}
|
||||
|
||||
$('textarea')
|
||||
.each(store)
|
||||
.on('mouseover mouseout', function() {
|
||||
if (this.offsetWidth !== this.x || this.offsetHeight !== this.y) {
|
||||
if ('parentIFrame' in window) parentIFrame.size()
|
||||
store.call(this)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
113
iframe-resizer-master/example/frame.tolerance.html
Executable file
113
iframe-resizer-master/example/frame.tolerance.html
Executable file
@ -0,0 +1,113 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>iFrame message passing test</title>
|
||||
<meta name="description" content="iFrame message passing test" />
|
||||
<style>
|
||||
a.back {
|
||||
float: right;
|
||||
margin-left: 8px;
|
||||
}
|
||||
body {
|
||||
border: solid 1px red;
|
||||
}
|
||||
p {
|
||||
padding: 5px 212px 5px 5px;
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
#abs {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: -10;
|
||||
pxright: 0;
|
||||
width: 200px;
|
||||
height: 101%;
|
||||
background-color: wheat;
|
||||
}
|
||||
a.top {
|
||||
position: absolute;
|
||||
bottom: -10px;
|
||||
right: 0;
|
||||
margin: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<p>
|
||||
<b>iFrame</b>
|
||||
|
||||
<a href="frame.content.html" class="back">Back to page 1</a>
|
||||
|
||||
<a
|
||||
href="#"
|
||||
class="back"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.scrollTo(0,99999999);return false;"
|
||||
>Bottom</a
|
||||
>
|
||||
</p>
|
||||
<p>
|
||||
This page has an absolute position element that take it out side the normal
|
||||
document body, which is marked with a red border on this page. This
|
||||
prevents the normal height calculation, which is based on the body tag
|
||||
from returning the correct height. To work around this you can set the
|
||||
<b>heightCalculationMethod</b> option to use one of the other page height
|
||||
properties.
|
||||
</p>
|
||||
<p>
|
||||
Use the dropdown to change the sizing method of the page, select the
|
||||
different sizing options to see how the effect the page. Note that they
|
||||
can have different effects in different browsers, so you are normally best
|
||||
off selecting <b>max</b> if you need to change away from the default
|
||||
<b>bodyOffset</b> option.
|
||||
</p>
|
||||
<p>
|
||||
<b>Height Calculation Method</b>
|
||||
<select name="heightCalculationMethod">
|
||||
<option>bodyOffset</option>
|
||||
<option>bodyScroll</option>
|
||||
<option>documentElementOffset</option>
|
||||
<option>documentElementScroll</option>
|
||||
<option>max</option>
|
||||
<option>min</option>
|
||||
<option>grow</option>
|
||||
<option>lowestElement</option>
|
||||
</select>
|
||||
</p>
|
||||
<p>
|
||||
<i
|
||||
>This option should be used sparingly, as the alternate methods can be
|
||||
less accurate at working out the correct page size, can cause screen
|
||||
flicker and can sometimes fail to reduce in size when the frame content
|
||||
changes in browsers that do not support mutationObservers (See
|
||||
<a href="https://caniuse.com/mutationobserver">caniuse.com</a> for
|
||||
details).</i
|
||||
>
|
||||
</p>
|
||||
|
||||
<div id="abs">
|
||||
Absolute positioned element
|
||||
<a
|
||||
href="#"
|
||||
class="top"
|
||||
onclick="if ('parentIFrame' in window) window.parentIFrame.scrollTo(0,0);return false;"
|
||||
>Top</a
|
||||
>
|
||||
</div>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="../js/iframeResizer.contentWindow.min.js"
|
||||
></script>
|
||||
<script>
|
||||
$('select').on('change', function() {
|
||||
if ('parentIFrame' in window) {
|
||||
parentIFrame.setHeightCalculationMethod($(this).val())
|
||||
parentIFrame.size()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
110
iframe-resizer-master/example/index.html
Executable file
110
iframe-resizer-master/example/index.html
Executable file
@ -0,0 +1,110 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>iFrame message passing test</title>
|
||||
<meta name="description" content="iFrame message passing test" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Automagically resizing iFrame</h2>
|
||||
<p>
|
||||
Resize window or click one of the links in the iFrame to watch it resize.
|
||||
Or try with <a name="anchorParentTest" href="two.html">two iFrames</a>.
|
||||
</p>
|
||||
<div style="margin:20px;">
|
||||
<iframe src="frame.content.html" width="100%" scrolling="no"></iframe>
|
||||
</div>
|
||||
<p id="callback"></p>
|
||||
<div style="margin: 8px 0;font-size:13px;">
|
||||
For details on how this works, see
|
||||
<a href="https://davidjbradshaw.github.io/iframe-resizer/"
|
||||
>https://davidjbradshaw.github.io/iframe-resizer/</a
|
||||
>.
|
||||
</div>
|
||||
|
||||
<!-- MDN PolyFils for IE8 (This is not normally needed if you use the jQuery version) -->
|
||||
<!--[if lte IE 8]>
|
||||
|
||||
<![endif]-->
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../js/iframeResizer.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
* If you do not understand what the code below does, then please just use the
|
||||
* following call in your own code.
|
||||
*
|
||||
* iFrameResize({log:true});
|
||||
*
|
||||
* Once you have it working, set the log option to false.
|
||||
*/
|
||||
|
||||
var callbackDisplay = 'p#callback'
|
||||
|
||||
iFrameResize({
|
||||
log: true, // Enable console logging
|
||||
inPageLinks: true,
|
||||
onResized: function (messageData) {
|
||||
// Callback fn when resize is received
|
||||
$(callbackDisplay).html(
|
||||
'<b>Frame ID:</b> ' +
|
||||
messageData.iframe.id +
|
||||
' <b>Height:</b> ' +
|
||||
messageData.height +
|
||||
' <b>Width:</b> ' +
|
||||
messageData.width +
|
||||
' <b>Event type:</b> ' +
|
||||
messageData.type
|
||||
)
|
||||
},
|
||||
onMouseEnter: function (messageData) {
|
||||
// Callback fn when mouse enters iframe
|
||||
$(callbackDisplay).html(
|
||||
'<b>Frame ID:</b> ' +
|
||||
messageData.iframe.id +
|
||||
' <b>ScreenX:</b> ' +
|
||||
messageData.screenX +
|
||||
' <b>ScreenY:</b> ' +
|
||||
messageData.screenY +
|
||||
' <b>Event type:</b> ' +
|
||||
messageData.type
|
||||
)
|
||||
},
|
||||
onMouseLeave: function (messageData) {
|
||||
// Callback fn when mouse enters iframe
|
||||
$(callbackDisplay).html(
|
||||
'<b>Frame ID:</b> ' +
|
||||
messageData.iframe.id +
|
||||
' <b>ScreenX:</b> ' +
|
||||
messageData.screenX +
|
||||
' <b>ScreenY:</b> ' +
|
||||
messageData.screenY +
|
||||
' <b>Event type:</b> ' +
|
||||
messageData.type
|
||||
)
|
||||
},
|
||||
onMessage: function (messageData) {
|
||||
// Callback fn when message is received
|
||||
$(callbackDisplay).html(
|
||||
'<b>Frame ID:</b> ' +
|
||||
messageData.iframe.id +
|
||||
' <b>Message:</b> ' +
|
||||
messageData.message
|
||||
)
|
||||
alert(messageData.message)
|
||||
document
|
||||
.getElementsByTagName('iframe')[0]
|
||||
.iFrameResizer.sendMessage('Hello back from parent page')
|
||||
},
|
||||
onClosed: function (id) {
|
||||
// Callback fn when iFrame is closed
|
||||
$(callbackDisplay).html('<b>IFrame (</b>' + id + '<b>) removed from page.</b>')
|
||||
},
|
||||
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
88
iframe-resizer-master/example/two.html
Executable file
88
iframe-resizer-master/example/two.html
Executable file
@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>iFrame message passing test</title>
|
||||
<meta name="description" content="iFrame message passing test" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h2>Automagically resizing iFrame</h2>
|
||||
<p>
|
||||
Resize window or click one of the links in the iFrame to watch it resize.
|
||||
Or go back to a
|
||||
<a name="anchorParentTest" href="index.html">single iFrame</a>.
|
||||
</p>
|
||||
<div style="margin:20px;">
|
||||
<iframe
|
||||
src="frame.content.html"
|
||||
width="48%"
|
||||
scrolling="no"
|
||||
style="float:left;margin-right:2%"
|
||||
></iframe>
|
||||
<iframe src="frame.content.html" width="48%" scrolling="no"></iframe>
|
||||
</div>
|
||||
<p id="callback"></p>
|
||||
<div style="margin: 8px 0;font-size:13px;">
|
||||
For details on how this works, see
|
||||
<a href="https://davidjbradshaw.github.io/iframe-resizer/"
|
||||
>https://davidjbradshaw.github.io/iframe-resizer/</a
|
||||
>.
|
||||
</div>
|
||||
|
||||
<!-- MDN PolyFils for IE8 -->
|
||||
<!--[if lte IE 8]>
|
||||
|
||||
<![endif]-->
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../src/iframeResizer.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
* If you do not understand what the code below does, then please just use the
|
||||
* following call in your own code.
|
||||
*
|
||||
* iFrameResize({log:true});
|
||||
*
|
||||
* Once you have it working, set the log option to false.
|
||||
*/
|
||||
|
||||
iFrameResize({
|
||||
log: true, // Enable console logging
|
||||
enablePublicMethods: true, // Enable methods within iframe hosted page
|
||||
enableInPageLinks: true,
|
||||
onResized: function(messageData) {
|
||||
// Callback fn when resize is received
|
||||
$('p#callback').html(
|
||||
'<b>Frame ID:</b> ' +
|
||||
messageData.iframe.id +
|
||||
' <b>Height:</b> ' +
|
||||
messageData.height +
|
||||
' <b>Width:</b> ' +
|
||||
messageData.width +
|
||||
' <b>Event type:</b> ' +
|
||||
messageData.type
|
||||
)
|
||||
},
|
||||
onMessage: function(messageData) {
|
||||
// Callback fn when message is received
|
||||
$('p#callback').html(
|
||||
'<b>Frame ID:</b> ' +
|
||||
messageData.iframe.id +
|
||||
' <b>Message:</b> ' +
|
||||
messageData.message
|
||||
)
|
||||
alert(messageData.message + ' (' + messageData.iframe.id + ')')
|
||||
},
|
||||
onClosed: function(id) {
|
||||
// Callback fn when iFrame is closed
|
||||
$('p#callback').html(
|
||||
'<b>IFrame (</b>' + id + '<b>) removed from page.</b>'
|
||||
)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
218
iframe-resizer-master/gruntfile.js
Executable file
218
iframe-resizer-master/gruntfile.js
Executable file
@ -0,0 +1,218 @@
|
||||
module.exports = function (grunt) {
|
||||
// show elapsed time at the end
|
||||
require('time-grunt')(grunt) // eslint-disable-line import/no-extraneous-dependencies
|
||||
|
||||
// load all grunt tasks
|
||||
// require('load-grunt-tasks')(grunt);
|
||||
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
require('jit-grunt')(grunt, {
|
||||
'bump-only': 'grunt-bump',
|
||||
'bump-commit': 'grunt-bump',
|
||||
coveralls: 'grunt-karma-coveralls'
|
||||
})
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
|
||||
meta: {
|
||||
bannerLocal:
|
||||
'/*! iFrame Resizer (iframeSizer.min.js ) - v<%= pkg.version %> - ' +
|
||||
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
||||
' * Desc: Force cross domain iframes to size to content.\n' +
|
||||
' * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame.\n' +
|
||||
' * Copyright: (c) <%= grunt.template.today("yyyy") %> David J. Bradshaw - dave@bradshaw.net\n' +
|
||||
' * License: MIT\n */\n',
|
||||
bannerRemote:
|
||||
'/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v<%= pkg.version %> - ' +
|
||||
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
||||
' * Desc: Include this file in any page being loaded into an iframe\n' +
|
||||
' * to force the iframe to resize to the content size.\n' +
|
||||
' * Requires: iframeResizer.min.js on host page.\n' +
|
||||
' * Copyright: (c) <%= grunt.template.today("yyyy") %> David J. Bradshaw - dave@bradshaw.net\n' +
|
||||
' * License: MIT\n */\n'
|
||||
},
|
||||
|
||||
clean: ['coverage', 'coverageLcov'],
|
||||
|
||||
qunit: {
|
||||
files: ['test/*.html'],
|
||||
puppeteer: {
|
||||
args: [
|
||||
'--disable-web-security',
|
||||
'--allow-file-access-from-files',
|
||||
'--user-data-dir=/tmp'
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
karma: {
|
||||
options: {
|
||||
configFile: 'karma.conf.js'
|
||||
},
|
||||
travis: {
|
||||
singleRun: true,
|
||||
browsers: ['Chrome'], // 'PhantomJS'
|
||||
coverageReporter: {
|
||||
type: 'lcov',
|
||||
dir: 'coverageLcov/'
|
||||
}
|
||||
},
|
||||
single: {
|
||||
singleRun: true,
|
||||
browsers: ['Chrome', 'Firefox'] // 'Safari', 'PhantomJS'
|
||||
},
|
||||
watch: {
|
||||
singleRun: false,
|
||||
browsers: ['Chrome'], // 'Firefox', 'Safari', 'PhantomJS'
|
||||
reporters: ['logcapture', 'progress']
|
||||
}
|
||||
},
|
||||
|
||||
coveralls: {
|
||||
options: {
|
||||
debug: true,
|
||||
coverageDir: 'coverageLcov',
|
||||
dryRun: false,
|
||||
force: true,
|
||||
recursive: true
|
||||
}
|
||||
},
|
||||
|
||||
uglify: {
|
||||
options: {
|
||||
sourceMap: true,
|
||||
sourceMapIncludeSources: true,
|
||||
report: 'gzip'
|
||||
},
|
||||
local: {
|
||||
options: {
|
||||
banner: '<%= meta.bannerLocal %>',
|
||||
sourceMapName: 'js/iframeResizer.map'
|
||||
},
|
||||
src: ['js/iframeResizer.js'],
|
||||
dest: 'js/iframeResizer.min.js'
|
||||
},
|
||||
remote: {
|
||||
options: {
|
||||
banner: '<%= meta.bannerRemote %>',
|
||||
sourceMapName: 'js/iframeResizer.contentWindow.map'
|
||||
},
|
||||
src: ['js/iframeResizer.contentWindow.js'],
|
||||
dest: 'js/iframeResizer.contentWindow.min.js'
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
files: ['src/**/*'],
|
||||
tasks: 'default'
|
||||
},
|
||||
|
||||
bump: {
|
||||
options: {
|
||||
files: ['package.json', 'package-lock.json', 'bower.json'],
|
||||
updateConfigs: ['pkg'],
|
||||
commit: true,
|
||||
commitMessage: 'Release v%VERSION%',
|
||||
commitFiles: ['-a'], // '-a' for all files
|
||||
createTag: true,
|
||||
tagName: 'v%VERSION%',
|
||||
tagMessage: 'Version %VERSION%',
|
||||
push: true,
|
||||
pushTo: 'origin',
|
||||
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' // options to use with '$ git describe'
|
||||
}
|
||||
},
|
||||
|
||||
shell: {
|
||||
options: {
|
||||
stdout: true,
|
||||
stderr: true,
|
||||
failOnError: true
|
||||
},
|
||||
npm: {
|
||||
command: 'npm publish'
|
||||
},
|
||||
deployExample: {
|
||||
command: function () {
|
||||
var retStr = '',
|
||||
fs = require('fs')
|
||||
|
||||
if (fs.existsSync('bin')) {
|
||||
retStr = 'bin/deploy.sh'
|
||||
}
|
||||
|
||||
return retStr
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
jsonlint: {
|
||||
json: {
|
||||
src: ['*.json']
|
||||
}
|
||||
},
|
||||
|
||||
removeBlock: {
|
||||
options: ['TEST CODE START', 'TEST CODE END'],
|
||||
files: [
|
||||
{
|
||||
src: 'src/iframeResizer.contentWindow.js',
|
||||
dest: 'js/iframeResizer.contentWindow.js'
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
copy: {
|
||||
main: {
|
||||
nonull: true,
|
||||
src: 'src/iframeResizer.js',
|
||||
dest: 'js/iframeResizer.js'
|
||||
}
|
||||
},
|
||||
|
||||
eslint: {
|
||||
target: ['src/**', '*.js']
|
||||
}
|
||||
})
|
||||
|
||||
grunt.registerTask('default', ['notest', 'karma:single'])
|
||||
grunt.registerTask('build', ['removeBlock', 'copy', 'uglify'])
|
||||
grunt.registerTask('notest', ['eslint', 'jsonlint', 'build'])
|
||||
grunt.registerTask('test', ['clean', 'eslint', 'karma:single', 'qunit'])
|
||||
grunt.registerTask('test-watch', ['clean', 'karma:watch'])
|
||||
grunt.registerTask('travis', [
|
||||
'clean',
|
||||
'notest',
|
||||
'qunit',
|
||||
'karma:travis',
|
||||
'coveralls'
|
||||
])
|
||||
|
||||
grunt.registerTask('postBump', ['build', 'bump-commit', 'shell'])
|
||||
grunt.registerTask('preBump', ['clean', 'notest'])
|
||||
grunt.registerTask('patch', ['preBump', 'bump-only:patch', 'postBump'])
|
||||
grunt.registerTask('minor', ['preBump', 'bump-only:minor', 'postBump'])
|
||||
grunt.registerTask('major', ['preBump', 'bump-only:major', 'postBump'])
|
||||
|
||||
grunt.registerMultiTask('removeBlock', function () {
|
||||
// set up a removal regular expression
|
||||
// eslint-disable-next-line security/detect-non-literal-regexp
|
||||
var removalRegEx = new RegExp(
|
||||
'(// ' +
|
||||
this.options()[0] +
|
||||
' //)(?:[^])*?(// ' +
|
||||
this.options()[1] +
|
||||
' //)',
|
||||
'g'
|
||||
)
|
||||
|
||||
this.data.forEach(function (fileObj) {
|
||||
var sourceFile = grunt.file.read(fileObj.src)
|
||||
var removedFile = sourceFile.replace(removalRegEx, '')
|
||||
|
||||
grunt.file.write(fileObj.dest, removedFile)
|
||||
}) // for each loop end
|
||||
})
|
||||
}
|
1
iframe-resizer-master/index.js
Executable file
1
iframe-resizer-master/index.js
Executable file
@ -0,0 +1 @@
|
||||
module.exports = require('./js')
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user