diff --git a/application/helpers/hlp_sancho_helper.php b/application/helpers/hlp_sancho_helper.php index c788f1bbf..f063365ec 100644 --- a/application/helpers/hlp_sancho_helper.php +++ b/application/helpers/hlp_sancho_helper.php @@ -66,7 +66,7 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm $body = _parseMailContent('Sancho_Mail_Template', $layout); // Send mail - $ci->maillib->send('sancho@'. DOMAIN, $to, $subject, $body); + $ci->maillib->send('sancho@'. DOMAIN, $to, $subject, $body, $alias = '', $cc = null, $bcc = null, $altMessage = '', $bulk = true, $autogenerated = true); } /** diff --git a/application/libraries/MailLib.php b/application/libraries/MailLib.php index 0871273b5..6d0a48f73 100644 --- a/application/libraries/MailLib.php +++ b/application/libraries/MailLib.php @@ -19,7 +19,7 @@ class MailLib * Class constructor */ public function __construct() - { + { // Set the counter to 0 $this->sended = 0; @@ -46,7 +46,7 @@ class MailLib /** * Sends a single email */ - public function send($from, $to, $subject, $message, $alias = '', $cc = null, $bcc = null, $altMessage = '') + public function send($from, $to, $subject, $message, $alias = '', $cc = null, $bcc = null, $altMessage = '', $bulk = false, $autogenerated = false) { // If from is not specified then use the standard one if (is_null($from) || $from == '') @@ -90,6 +90,11 @@ class MailLib $this->ci->email->message($message); if (!isEmptyString($altMessage)) $this->ci->email->set_alt_message($altMessage); + if($bulk) + $this->ci->email->set_header('Precedence', 'bulk'); + if($autogenerated) + $this->ci->email->set_header('Auto-Submitted', 'auto-generated'); + // Avoid printing on standard output ugly error messages $result = @$this->ci->email->send(); diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index c042c2e0a..0a76df4b9 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -14,11 +14,11 @@ class Lehrveranstaltung_model extends DB_Model /** * Gets unique Groupstrings for Lehrveranstaltungen, e.g. WS2018_BIF_1_PRJM_VZ_LV12345 - * @param $studiensemester_kurzbz - * @param null $ausbildungssemester - * @param null $studiengang_kz - * @param null $lehrveranstaltung_ids - * @return StdClass + * @param string $studiensemester_kurzbz + * @param string $ausbildungssemester + * @param string $studiengang_kz + * @param string|array $lehrveranstaltung_ids + * @return array|null */ public function getLehrveranstaltungGroupNames($studiensemester_kurzbz, $ausbildungssemester = null, $studiengang_kz = null, $lehrveranstaltung_ids = null) { diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php index 272204e7e..f9353c7b3 100644 --- a/application/models/organisation/Organisationseinheit_model.php +++ b/application/models/organisation/Organisationseinheit_model.php @@ -119,7 +119,7 @@ class Organisationseinheit_model extends DB_Model /** * Liefert die ChildNodes einer Organisationseinheit * @param $oe_kurzbz - * @param bool $includeinactive - wether to include inactive parent oes + * @param bool $includeinactive wether to include inactive parent oes * @return array mit den Childs inkl dem Uebergebenen Element */ public function getChilds($oe_kurzbz, $includeinactive = false) @@ -131,19 +131,20 @@ class Organisationseinheit_model extends DB_Model WHERE oe_kurzbz=? %s UNION ALL SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes - WHERE o.oe_parent_kurzbz=oes.oe_kurzbz + WHERE o.oe_parent_kurzbz=oes.oe_kurzbz %s ) SELECT oe_kurzbz FROM oes GROUP BY oe_kurzbz;"; - return $this->execQuery(sprintf($query, $includeinactive === true ? "" : "AND aktiv = true"), array($oe_kurzbz)); + $aktivstring = $includeinactive === true ? "" : "AND aktiv = true"; + return $this->execQuery(sprintf($query, $aktivstring, $aktivstring), array($oe_kurzbz)); } /** * Liefert die OEs die im Tree ueberhalb der uebergebene OE liegen * @param $oe_kurzbz - * @param bool $includeinactive - wether to include inactive parent oes + * @param bool $includeinactive wether to include inactive parent oes * @return array|null */ public function getParents($oe_kurzbz, $includeinactive = false) @@ -155,12 +156,13 @@ class Organisationseinheit_model extends DB_Model WHERE oe_kurzbz=? %s UNION ALL SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes - WHERE o.oe_kurzbz=oes.oe_parent_kurzbz and aktiv = true + WHERE o.oe_kurzbz=oes.oe_parent_kurzbz %s ) SELECT oe_kurzbz FROM oes"; - return $this->execQuery(sprintf($query, $includeinactive === true ? "" : "AND aktiv = true"), array($oe_kurzbz)); + $aktivstring = $includeinactive === true ? "" : "AND aktiv = true"; + return $this->execQuery(sprintf($query, $aktivstring, $aktivstring), array($oe_kurzbz)); } } diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index e6f030e7f..02a27e87a 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -25,13 +25,14 @@ class Benutzerfunktion_model extends DB_Model /** * Gets all Benutzer for a given OE and specified Benutzerfunktionen - * @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more - * @param $oe_kurzbz - * @param bool $activeoeonly if true, retrieve only active Organisationseinheiten - * @param bool $activebenonly if true, retrieve only active Benutzer + * @param string $funktion_kurzbz String with one benutzerfunktionname or array with one or more. + * @param string $oe_kurzbz + * @param bool $activeoeonly If true, retrieve only active Organisationseinheiten. + * @param bool $activebenonly If true, retrieve only active Benutzer. + * @param bool $oerecursive If true, retrieve all oes under given oe_kurzbz recursively. * @return array|null */ - public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false) + public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false, $oerecursive = false) { $parametersArray = array(); @@ -57,7 +58,35 @@ class Benutzerfunktion_model extends DB_Model if (is_string($oe_kurzbz)) { - $query .= " AND tbl_benutzerfunktion.oe_kurzbz = ?"; + if ($oerecursive === true) + { + $query .= + " AND oe_kurzbz IN + ( + WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz, aktiv) as + ( + SELECT oe_kurzbz, oe_parent_kurzbz, aktiv FROM public.tbl_organisationseinheit + WHERE oe_kurzbz=?"; + + if ($activeoeonly === true) + $query .= " AND aktiv=true"; + + $query .= + " UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz, o.aktiv FROM public.tbl_organisationseinheit o, oes + WHERE o.oe_parent_kurzbz=oes.oe_kurzbz + ) + SELECT oe_kurzbz + FROM oes"; + if ($activeoeonly === true) + { + $query .= " WHERE aktiv=true"; + } + $query .= " GROUP BY oe_kurzbz)"; + } + else + $query .= " AND tbl_benutzerfunktion.oe_kurzbz = ?"; + $parametersArray[] = $oe_kurzbz; } @@ -71,7 +100,7 @@ class Benutzerfunktion_model extends DB_Model $query .= " AND tbl_organisationseinheit.aktiv"; } - $query .= " ORDER BY funktion_kurzbz, oe_kurzbz, uid"; + $query .= " ORDER BY oe_kurzbz, funktion_kurzbz, uid"; return $this->execQuery($query, $parametersArray); } diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php index c3648d4fa..3c9985a8b 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php @@ -82,10 +82,14 @@ $uebung_id = (isset($_GET['uebung_id'])?$_GET['uebung_id']:''); $uid = (isset($_GET['uid'])?$_GET['uid']:''); $noten_anmerkung=array(); +$noten_arr=array(); $note_obj = new note(); $note_obj->getAll(); foreach($note_obj->result as $row) - $noten_anmerkung[$row->anmerkung]=$row->note; +{ + $noten_anmerkung[$row->anmerkung] = $row->note; + $noten_arr[$row->note] = $row; +} //Studiensemester laden $stsem_obj = new studiensemester(); @@ -238,12 +242,23 @@ if (isset($_REQUEST["submit"])) } // Hole Zeugnisnote wenn schon eine eingetragen ist - /* if ($zeugnisnote = new zeugnisnote($lvid, $student_uid, $stsem)) + { $znote = $zeugnisnote->note; - else - $znote = null; - */ + + if (!empty($znote) && array_key_exists($znote, $noten_arr)) + { + $notenobj = $noten_arr[$znote]; + + // Note nicht speichern wenn Zeugnisnote nicht überschreibbar + if ($notenobj->lkt_ueberschreibbar === false) + { + $response .= "\n".$p->t('benotungstool/noteNichtUeberschreibbar', array($matrikelnummer, $notenobj->bezeichnung)); + continue; + } + } + } + $val=savenote($db,$lvid, $student_uid, $note, $punkte); if($val!='neu' && $val!='update' && $val!='update_f') $response.=$val; diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index fa9bdc980..a41e362fd 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -181,6 +181,7 @@ foreach ($noten_obj->result as $row) $noten_array[$row->note]['positiv'] = $row->positiv; $noten_array[$row->note]['aktiv'] = $row->aktiv; $noten_array[$row->note]['lehre'] = $row->lehre; + $noten_array[$row->note]['lkt_ueberschreibbar'] = $row->lkt_ueberschreibbar; $noten_array[$row->note]['anmerkung'] = $row->anmerkung; foreach ($sprachen->result AS $s) $noten_array[$row->note]['bezeichnung_mehrsprachig'][$s->sprache] = $row->bezeichnung_mehrsprachig[$s->sprache]; @@ -1249,21 +1250,34 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG action='" . $_SERVER['PHP_SELF'] . "?lvid=$lvid&lehreinheit_id=$lehreinheit_id&stsem=$stsem'> "; - + + // nur überschreibbare Noten können geändert werden + $ueberschreibbar = true; + + if (isset($noten_array[$znote]['lkt_ueberschreibbar']) && $noten_array[$znote]['lkt_ueberschreibbar'] === false) + $ueberschreibbar = false; + // Punkte if (CIS_GESAMTNOTE_PUNKTE) { + $htmlstring .= ' '; + size="3"'; + + if ($ueberschreibbar) + $htmlstring .= ' oninput="PunkteEingabe(' . $i . ')"'; + else + $htmlstring .= ' disabled="disabled"'; + + $htmlstring .= '/>'; } - + // Noten DropDown - if ($punkte_vorschlag != '' && CIS_GESAMTNOTE_PUNKTE) + if (($punkte_vorschlag != '' && CIS_GESAMTNOTE_PUNKTE) || $ueberschreibbar == false) $disabled = 'disabled="disabled"'; else $disabled = ''; @@ -1281,10 +1295,13 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG } $htmlstring .= ''; $htmlstring .= " - - - - "; + "; + if ($ueberschreibbar) + { + $htmlstring .= ""; + } + $htmlstring .= " + "; } else { @@ -1370,13 +1387,18 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG $htmlstring .= ' ' . $pr_datum . ' ' . $pr_notenbezeichnung . ' - - '; + if ($ueberschreibbar) + { + $htmlstring .= + ' - - '; + onclick="' . $onclick . '">'; + } + $htmlstring .= + ' + '; } $htmlstring .= ""; $htmlstring .= ""; @@ -1386,12 +1408,16 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG { if (! is_null($note_lv) || ! is_null($znote)) { - $htmlstring .= " - "; + if ($ueberschreibbar) + { + $htmlstring .= + " - "; + onclick='pruefungAnlegen(\"" . $uid . "\",\"\",\"\",\"\",\"\")'>"; + } + $htmlstring .= ""; } else { @@ -1445,7 +1471,7 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG } else { - if (! is_null($note_lv) || ! is_null($znote)) + if ((! is_null($note_lv) || ! is_null($znote)) && $ueberschreibbar) { $htmlstring .= " diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index 391167186..51e961223 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -62,13 +62,14 @@ $daysinmonth = cal_days_in_month(CAL_GREGORIAN, $month, $year); $date = new datum(); $ztauf = new zeitaufzeichnung(); -$ztauf->getListeUserFromTo($uid, $year.'-'.$month.'-01', $year.'-'.$month.'-'.$daysinmonth); +$activitiesToIgnore = array('DienstreiseMT');//aktivitaetstypen which shouldn't be added to worktime +$ztauf->getListeUserFromTo($uid, $year.'-'.$month.'-01', $year.'-'.$month.'-'.$daysinmonth, $activitiesToIgnore); //objects for one projectline of list (corresponds to one day) $projectlines = []; $dayStart = $dayEnd = ''; $projectnames = $tosubtract = $allpauseranges = []; -$toignore = ['Pause', 'LehreExtern']; +$activitiesToSubtract = ['Pause', 'LehreExtern'];//aktivitaetstypen which should be subtracted fromworktime $ztaufdata = $ztauf->result; $monthsums = [0 => 0.00]; @@ -94,7 +95,7 @@ for ($i = 0; $i < count($ztaufdata); $i++) //last entry for a day (next entry is different day) $isLastEntry = !array_key_exists($i + 1, $ztaufdata) || intval($date->formatDatum($ztaufdata[$i + 1]->ende, 'd')) != $day; - if (in_array($ztaufrow->aktivitaet_kurzbz, $toignore)) + if (in_array($ztaufrow->aktivitaet_kurzbz, $activitiesToSubtract)) { $subtraction = new stdClass(); $subtraction->start = $ztaufrow->start; @@ -104,7 +105,7 @@ for ($i = 0; $i < count($ztaufdata); $i++) $tosubtract[] = $subtraction; //save all pause ranges - if ($ztaufrow->aktivitaet_kurzbz == $toignore[0]) + if ($ztaufrow->aktivitaet_kurzbz == $activitiesToSubtract[0]) { $prevpause = null; if (count($allpauseranges) > 0) @@ -129,9 +130,9 @@ for ($i = 0; $i < count($ztaufdata); $i++) } //save new dayStart (if earlier) or dayEnd (if later) - if (($dayStart == '' || $dayStart > $ztaufrow->start) && $ztaufrow->aktivitaet_kurzbz != $toignore[1]) + if (($dayStart == '' || $dayStart > $ztaufrow->start) && $ztaufrow->aktivitaet_kurzbz != $activitiesToSubtract[1]) $dayStart = $ztaufrow->start; - if (($dayEnd == '' || $dayEnd < $ztaufrow->ende) && $ztaufrow->aktivitaet_kurzbz != $toignore[1]) + if (($dayEnd == '' || $dayEnd < $ztaufrow->ende) && $ztaufrow->aktivitaet_kurzbz != $activitiesToSubtract[1]) $dayEnd = $ztaufrow->ende; if ($isFirstEntry) @@ -221,12 +222,12 @@ for ($i = 0; $i < count($ztaufdata); $i++) //subtract pauses and LehreExtern from total worktime foreach ($tosubtract as $subtraction) { - if ($subtraction->typ == $toignore[0]) + if ($subtraction->typ == $activitiesToSubtract[0]) { $projectlines[$day]->arbeitszeit -= $subtraction->diff; $pauseSubtracted += $subtraction->diff; } - elseif ($subtraction->typ == $toignore[1] && $subtraction->start >= $dayStart && $subtraction->ende <= $dayEnd) + elseif ($subtraction->typ == $activitiesToSubtract[1] && $subtraction->start >= $dayStart && $subtraction->ende <= $dayEnd) { $projectlines[$day]->arbeitszeit -= $subtraction->diff; $lehreExternExists = true; @@ -271,12 +272,12 @@ for ($i = 0; $i < count($ztaufdata); $i++) $projectlines[$day]->arbeitszeit -= $projectlines[$day]->arbeitszeit - 6; } - $projectlines[$day]->arbeitszeit = floor($projectlines[$day]->arbeitszeit * 100) / 100; + $projectlines[$day]->arbeitszeit = round($projectlines[$day]->arbeitszeit, 2); foreach ($projectlines[$day]->projekte as $name => $project) { $projecthours =& $projectlines[$day]->projekte[$name]->stunden; - $projecthours = floor($projecthours * 100) / 100; + $projecthours = round($projecthours, 2); if (array_key_exists($name, $monthsums)) $monthsums[$name] += $projecthours; else diff --git a/cms/admin_dms.php b/cms/admin_dms.php index 11d4e3086..6dce630d9 100644 --- a/cms/admin_dms.php +++ b/cms/admin_dms.php @@ -127,7 +127,7 @@ if (isset($_REQUEST['save'])) $dms->gruppe_kurzbz = $_POST['gruppe_kurzbz']; $dms->insertamum = date('Y-m-d H:i:s'); $dms->insertvon = $user; - + if (! $dms->saveGruppeKategorie()) echo '' . $dms->errormsg . ''; else @@ -145,7 +145,7 @@ if (isset($_REQUEST['save'])) { // wenn keine auswahl getroffen wurde $kategorie_auswahl = (($_POST['kategorie_parent'] == 'auswahl') ? null : $_POST['kategorie_parent']); - + if ($kategorieSave->loadKategorie($_POST['kategorie_kurzbz'])) { // Update @@ -184,7 +184,7 @@ if (isset($_REQUEST['save'])) // Löscht eine Kategorie if (isset($_REQUEST['delete'])) { - + if ($method == 'gruppe') { $dms = new dms(); @@ -205,7 +205,7 @@ if (isset($_REQUEST['delete'])) } else echo "keine Kategorie übergeben"; - + $kategorie_kurzbz = ''; } } @@ -270,7 +270,7 @@ switch ($method) case 'gruppe': print_rights($kategorie_kurzbz); break; - + default: drawKategorie($kategorie_kurzbz); break; @@ -287,7 +287,8 @@ function drawKategorie($kategorie_kurzbz) $kategorie_bezeichnung = ''; $disabled = ''; $kategorie_berechtigung = ''; - + $kategorie_oe_kurzbz = ''; + if ($kategorie->loadKategorie($kategorie_kurzbz)) { // Formular zum Editieren bestehender Kategorien @@ -297,7 +298,7 @@ function drawKategorie($kategorie_kurzbz) $kategorie_berechtigung = $kategorie->berechtigung_kurzbz; $kategorie_oe_kurzbz = $kategorie->kategorie_oe_kurzbz; } - + $allKategorien = new dms(); $allKategorien->getAllKategories(); $berechtigungen = new berechtigung(); @@ -305,7 +306,7 @@ function drawKategorie($kategorie_kurzbz) $organisationseinheiten = new organisationseinheit(); $organisationseinheiten->getAll(true, null, 'organisationseinheittyp_kurzbz, bezeichnung'); $oe_typ = ''; - + // var_dump($allKategorien->result); echo '
@@ -341,13 +342,13 @@ function drawKategorie($kategorie_kurzbz) { if ($oe_typ!='') echo ''; - + echo ''; } $selected = ''; if ($oe->oe_kurzbz == $kategorie_oe_kurzbz) $selected = 'selected'; - + echo ''; $oe_typ = $oe->organisationseinheittyp_kurzbz; } @@ -362,7 +363,7 @@ function drawKategorie($kategorie_kurzbz) $selected = ''; if ($recht->berechtigung_kurzbz == $kategorie_berechtigung) $selected = 'selected'; - + echo ''; } echo ' @@ -427,17 +428,17 @@ function print_rights($kategorie_kurzbz) } else echo 'Diese Seite darf von allen angezeigt werden!

'; - + $gruppe = new gruppe(); $gruppe->getgruppe(null, null, null, null, true); - + // Sortieren der Gruppen nach kurzbz - function sortGruppen($a, $b) - { - return strcasecmp($a->gruppe_kurzbz, $b->gruppe_kurzbz); + function sortGruppen($a, $b) + { + return strcasecmp($a->gruppe_kurzbz, $b->gruppe_kurzbz); } - usort($gruppe->result, "sortGruppen"); - + usort($gruppe->result, "sortGruppen"); + // function sortDocuments($a, $b) // { // $c = $a->anzahl_akten_formal_geprueft - $b->anzahl_akten_formal_geprueft; @@ -449,7 +450,7 @@ function print_rights($kategorie_kurzbz) // } // if ($dokumente_abzugeben) // usort($dokumente_abzugeben, "sortDocuments"); - + echo ''; echo 'Gruppe
diff --git a/cms/dms.php b/cms/dms.php index ad7a102d6..6548dc1e3 100644 --- a/cms/dms.php +++ b/cms/dms.php @@ -43,37 +43,37 @@ else $akte_id =''; //if(!isset($_GET['version'])) -// die('Version muss uebergeben werden'); - +// die('Version muss uebergeben werden'); + $id = $_GET['id']; -$version = isset($_GET['version'])?$_GET['version']:null; +$version = isset($_GET['version'])?$_GET['version']:null; if(!is_numeric($id)) die('ID ist ungueltig'); - + if($version!='' && !is_numeric($version)) - die('Version ist ungueltig'); - + die('Version ist ungueltig'); + $doc = new dms(); if(!$doc->load($id,$version)) die('Dieses Dokument existiert nicht mehr'); if($doc->isLocked($id)) { - //Wenn person_id aus Session und akte_id uebergeben wurde - //und person_id Besitzer des Dokuments ist (person_id aus tbl_akte) + //Wenn person_id aus Session und akte_id uebergeben wurde + //und person_id Besitzer des Dokuments ist (person_id aus tbl_akte) //und das Dokument in der Onlinebewerbung hochgeladen werden kann //darf das Dokument heruntergeladen werden if($person_id!='' && $akte_id!='') - { + { $akte = new akte(); $akte->load($akte_id); $akte_person = $akte->person_id; $akte_dokument_kurzbz = $akte->dokument_kurzbz; - + $dokumente_person = new dokument(); $dokumente_person->getAllDokumenteForPerson($person_id, true); - + $dokumente_arr = array(); foreach ($dokumente_person->result AS $row) $dokumente_arr[] .= $row->dokument_kurzbz; @@ -90,11 +90,23 @@ if($doc->isLocked($id)) { //Dokument erfordert Authentifizierung $user = get_uid(); + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + if(!$doc->isBerechtigt($id, $user)) { + // Wenn eine Berechtigung an der Kategorie haengt + // dann darf nur mit diesem Recht darauf zugegriffen werden + $kategorie = new dms(); + $kategorie->loadKategorie($doc->kategorie_kurzbz); + if($kategorie->berechtigung_kurzbz!='') + { + if(!$rechte->isBerechtigt($kategorie->berechtigung_kurzbz)) + die('Sie haben keinen Zugriff auf dieses Dokument'); + } + //Globales DMS recht pruefen - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($user); if(!$rechte->isBerechtigt('basis/dms')) die('Sie haben keinen Zugriff auf dieses Dokument'); } @@ -111,12 +123,12 @@ if(file_exists($filename)) { if($doc->mimetype=='') $doc->mimetype='application/octetstream'; - + header('Content-type: '.$doc->mimetype); header('Content-Disposition: inline; filename="'.$doc->name.'"'); header('Content-Length: ' .filesize($filename)); - - while (!feof($handle)) + + while (!feof($handle)) { echo fread($handle, 8192); } @@ -127,4 +139,4 @@ if(file_exists($filename)) } else echo 'Die Datei existiert nicht'; -?> \ No newline at end of file +?> diff --git a/cms/menu/menu_addon_urlaub.inc.php b/cms/menu/menu_addon_urlaub.inc.php index bfcbd83b4..3321e3f47 100644 --- a/cms/menu/menu_addon_urlaub.inc.php +++ b/cms/menu/menu_addon_urlaub.inc.php @@ -19,7 +19,7 @@ */ /** * Menu Addon fuer Urlaube - * + * * Zeigt eine Liste der untergebenen Mitarbeiter mit deren Urlaube */ require_once(dirname(__FILE__).'/menu_addon.class.php'); @@ -33,25 +33,25 @@ class menu_addon_urlaub extends menu_addon public function __construct() { parent::__construct(); - + $sprache = getSprache(); $user = get_uid(); - + $p = new phrasen($sprache); - + //Untergebene holen $mitarbeiter = new mitarbeiter(); $mitarbeiter->getUntergebene($user); $untergebene = ''; - + foreach ($mitarbeiter->untergebene as $u_uid) { if($untergebene!='') $untergebene.=','; - + $untergebene.="'".addslashes($u_uid)."'"; } - + $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); if($rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid')) @@ -65,14 +65,14 @@ class menu_addon_urlaub extends menu_addon $untergebene.="'".addslashes($row->uid)."'"; } } - + if($untergebene!='') { - $qry = "SELECT * FROM campus.vw_mitarbeiter WHERE uid in($untergebene) AND aktiv ORDER BY nachname, vorname"; + $qry = "SELECT * FROM campus.vw_mitarbeiter WHERE uid in($untergebene) AND aktiv AND fixangestellt ORDER BY nachname, vorname"; $this->linkitem['link']='private/profile/urlaubsfreigabe.php'; $this->linkitem['target']='content'; - + if($result = $this->db_query($qry)) { $this->items[] = array('title'=>$p->t('menu/urlaubAlle'), @@ -80,31 +80,31 @@ class menu_addon_urlaub extends menu_addon 'link'=>'private/profile/urlaubsfreigabe.php', 'name'=>$p->t('menu/urlaubAlle') ); - + while($row = $this->db_fetch_object($result)) { - + $name = $row->nachname.' '.$row->vorname.' '.$row->titelpre.' '.$row->titelpost; $title = $row->nachname.' '.$row->vorname.' '.$row->titelpre.' '.$row->titelpost; - + if($row->fixangestellt=='f') $name = ''.$name.''; - + $this->items[] = array('title'=>$title, 'target'=>'content', 'link'=>'private/profile/urlaubsfreigabe.php?uid='.$row->uid, 'name'=>$name ); - + } } } else $this->link=false; - + $this->output(); } } new menu_addon_urlaub(); -?> \ No newline at end of file +?> diff --git a/content/mitarbeiter/mitarbeiterDBDML.php b/content/mitarbeiter/mitarbeiterDBDML.php index 63235d960..6bb1513d0 100644 --- a/content/mitarbeiter/mitarbeiterDBDML.php +++ b/content/mitarbeiter/mitarbeiterDBDML.php @@ -169,6 +169,12 @@ if(!$error) $verwendung->updatevon = $user; $verwendung->dv_art = $_POST['dv_art']; $verwendung->inkludierte_lehre = $_POST['inkludierte_lehre']; + if($_POST['zeitaufzeichnungspflichtig']=='true') + $verwendung->zeitaufzeichnungspflichtig = true; + elseif($_POST['zeitaufzeichnungspflichtig']=='false') + $verwendung->zeitaufzeichnungspflichtig = false; + else + $verwendung->zeitaufzeichnungspflichtig = ''; if($verwendung->save()) { diff --git a/content/mitarbeiter/mitarbeiteroverlay.js.php b/content/mitarbeiter/mitarbeiteroverlay.js.php index c5340614d..3fd424d02 100644 --- a/content/mitarbeiter/mitarbeiteroverlay.js.php +++ b/content/mitarbeiter/mitarbeiteroverlay.js.php @@ -1178,7 +1178,7 @@ function MitarbeiterVerwendungBearbeiten() bisverwendung_id=tree.view.getCellText(tree.currentIndex,col); //Dialog laden - window.open("content/mitarbeiter/mitarbeiterverwendungdialog.xul.php?mitarbeiter_uid="+mitarbeiter_uid+"&bisverwendung_id="+bisverwendung_id,"popup","chrome, status=no, width=500, height=400, centerscreen, resizable"); + window.open("content/mitarbeiter/mitarbeiterverwendungdialog.xul.php?mitarbeiter_uid="+mitarbeiter_uid+"&bisverwendung_id="+bisverwendung_id,"popup","chrome, status=no, width=500, height=500, centerscreen, resizable"); } // **** @@ -1192,7 +1192,7 @@ function MitarbeiterVerwendungNeu() col = tree.columns ? tree.columns["mitarbeiter-treecol-uid"] : "mitarbeiter-treecol-uid"; mitarbeiter_uid=tree.view.getCellText(tree.currentIndex,col); - window.open("content/mitarbeiter/mitarbeiterverwendungdialog.xul.php?mitarbeiter_uid="+mitarbeiter_uid,"popup","chrome, status=no, width=500, height=350, centerscreen, resizable"); + window.open("content/mitarbeiter/mitarbeiterverwendungdialog.xul.php?mitarbeiter_uid="+mitarbeiter_uid,"popup","chrome, status=no, width=500, height=500, centerscreen, resizable"); } function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_uid, neu) @@ -1209,6 +1209,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui vertragsstunden = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-vertragsstunden').value; dv_art = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-dv_art').value; inkludierte_lehre = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-inkludierte_lehre').value; + zeitaufzeichnungspflichtig = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked; if(verwendung_code=='1' || verwendung_code=='5' || verwendung_code=='6') { @@ -1266,6 +1267,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui req.add('vertragsstunden', vertragsstunden); req.add('dv_art', dv_art); req.add('inkludierte_lehre', inkludierte_lehre); + req.add('zeitaufzeichnungspflichtig', zeitaufzeichnungspflichtig); var response = req.executePOST(); diff --git a/content/mitarbeiter/mitarbeiterverwendungdialog.js.php b/content/mitarbeiter/mitarbeiterverwendungdialog.js.php index 0a0894756..2b3bcfafd 100644 --- a/content/mitarbeiter/mitarbeiterverwendungdialog.js.php +++ b/content/mitarbeiter/mitarbeiterverwendungdialog.js.php @@ -69,9 +69,25 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) vertragsstunden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#vertragsstunden" )); dv_art = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#dv_art" )); inkludierte_lehre = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#inkludierte_lehre" )); + zeitaufzeichnungspflichtig = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnungspflichtig" )); } else { + //Laden der Daten + //Daten holen + var url = 'rdf/personal.rdf.php?uid='+MitarbeiterVerwendungDetailMitarbeiterUid+'&'+gettimestamp(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + + var dsource = rdfService.GetDataSourceBlocking(url); + + var subject = rdfService.GetResource("http://www.technikum-wien.at/mitarbeiter/" + MitarbeiterVerwendungDetailMitarbeiterUid); + + var predicateNS = "http://www.technikum-wien.at/mitarbeiter/rdf"; + + fixangestellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#fixangestellt" )); + //neuer Datensatz wird angelegt MitarbeiterVerwendungDetailNeu='true'; @@ -88,6 +104,14 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) vertragsstunden='38.5'; dv_art=''; inkludierte_lehre=''; + if (fixangestellt=='Ja') + { + zeitaufzeichnungspflichtig='Ja'; + } + else + { + zeitaufzeichnungspflichtig='Nein'; + } } document.getElementById('mitarbeiter-verwendung-detail-menulist-beschart1').value=ba1code; @@ -110,6 +134,10 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id) document.getElementById('mitarbeiter-verwendung-detail-textbox-vertragsstunden').value=vertragsstunden; document.getElementById('mitarbeiter-verwendung-detail-textbox-dv_art').value=dv_art; document.getElementById('mitarbeiter-verwendung-detail-textbox-inkludierte_lehre').value=inkludierte_lehre; + if(zeitaufzeichnungspflichtig=='Ja') + document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=true; + else + document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=false; MitarbeiterVerwendungDetailToggleHauptberuf(); MitarbeiterVerwendungVerwendungChange(); diff --git a/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php b/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php index 9a5231b61..bc87a097d 100644 --- a/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php +++ b/content/mitarbeiter/mitarbeiterverwendungdialog.xul.php @@ -162,6 +162,10 @@ echo '