diff --git a/cis/infoterminal/index.php b/cis/infoterminal/index.php index 3e7f7ed2d..b364691fe 100644 --- a/cis/infoterminal/index.php +++ b/cis/infoterminal/index.php @@ -41,6 +41,7 @@ require_once('../../include/konto.class.php'); require_once('../../include/functions.inc.php'); require_once('../../include/authentication.class.php'); + require_once('../../include/addon.class.php'); require_once('../../include/'.EXT_FKT_PATH.'/serviceterminal.inc.php'); if (!$db = new basis_db()) @@ -92,7 +93,7 @@ unset($_SESSION[constSESSIONNAME]); $uid=''; $work='raumanzeigen'; - $raumtyp_kurzbz='EDV'; + $raumtyp_kurzbz=$ServiceTerminalDefaultRaumtyp; } @@ -107,22 +108,49 @@ // Login Prozedure wenn Anmeldung ueber einen Schluessel erfolgte // - Lesen der Betriebsmittel um Anwender zu ermitteln ( es wird hier kein Passwort benoetigt / LDAP ) $cardlogin=false; + $cardnumber = ""; if ($db && !empty($key_input)) // Login { - // Pruefen ob es sich um eine HEX Eingabe handelt - - $betriebsmittel = new betriebsmittel(); - //$key_input = $betriebsmittel->transform_kartennummer($key_input); + // Pruefen ob es sich um eine HEX Eingabe handelt + $betriebsmittel = new betriebsmittel(); + //$key_input = $betriebsmittel->transform_kartennummer($key_input); - // führende nullen entfernen - $key_input = preg_replace("/^0*/", "", $key_input); - $uidStudent = getUidFromCardNumber($key_input); - if($uidStudent != false) + // führende nullen entfernen + $key_input = preg_replace("/^0*/", "", $key_input); + $uidStudent = getUidFromCardNumber($key_input); + if($uidStudent != false) + { + $uid = $uidStudent; + $work = "login"; + $cardlogin = true; + } + else + { + $addon_externeAusweise = false; + $addon = new addon(); + $addon->loadAddons(); + foreach($addon->result as $ad) { - $uid = $uidStudent; - $work = "login"; - $cardlogin = true; + if($ad->kurzbz == "externeAusweise") + { + $addon_externeAusweise = true; + } } + + if($addon_externeAusweise) + { + require_once (dirname(__FILE__).'/../../addons/externeAusweise/include/idCard.class.php'); + $idCard = new idCard(); + if($idCard->loadByCardnumber($key_input)) + { + $uid = ""; + $cardnumber = $idCard->cardnumber; + $work = "verlaengerung"; + $cardlogin = true; + $_SESSION[constSESSIONNAME]["uid"]=$cardnumber; + } + } + } } if (mb_strtolower($work)=='login') @@ -485,7 +513,7 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em echo ' Logo '; - if(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) ) + if(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["pwd"])) { //Angemeldeter User - Stundenplan der Woche echo ' @@ -506,8 +534,7 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em // Tabelle der Raumtypen echo html_output_liste_raumtypen($row_ort); - - if(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) ) + if(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) && empty($cardnumber)) { //Angemeldeter User - Stundenplan der Woche echo ' @@ -610,7 +637,7 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em } else if (strtolower($work)==strtolower("verlaengerung") && isset($_SESSION[constSESSIONNAME])) { - karten_verlaengerung($_SESSION[constSESSIONNAME]["uid"]); + karten_verlaengerung($_SESSION[constSESSIONNAME]["uid"],$cardnumber); } else if (mb_strtolower($work)==mb_strtolower("stundenplan") && isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) ) { @@ -752,46 +779,46 @@ function meine_uid_informationen($db,$uid,$user="") * Zeigt die Oberfläche zur Kartenverlängerung an * @param $uid Userkurzzeichen */ -function karten_verlaengerung($uid) +function karten_verlaengerung($uid, $cardnumber=NULL) { - $studienbeitrag = false; - - - // Mitarbeiter brauchen die Karte nicht verlängern - - $cardPerson = new benutzer(); - if(!$cardPerson->load($uid)) + if(is_null($cardnumber)) { - die('Konnte User nicht laden'); + $studienbeitrag = false; + // Mitarbeiter brauchen die Karte nicht verlängern + + $cardPerson = new benutzer(); + if(!$cardPerson->load($uid)) + { + die('Konnte User nicht laden'); + } + + $html_user_daten=''; + $html_user_daten.='

Verlängerung Studienausweis

'; + $html_user_daten.=' + + + + +
+ + + + + + + +
'.($cardPerson->titelpre?$cardPerson->titelpre.' ':'').$cardPerson->vorname.' '.$cardPerson->nachname.' '.($cardPerson->titelpost?$cardPerson->titelpost:'').' 
+  
+ + +
 
+  
'; + + echo $html_user_daten; } - - $html_user_daten=''; - $html_user_daten.='

Verlängerung Studienausweis

'; - $html_user_daten.=' - - - - -
- - - - - - - -
'.($cardPerson->titelpre?$cardPerson->titelpre.' ':'').$cardPerson->vorname.' '.$cardPerson->nachname.' '.($cardPerson->titelpost?$cardPerson->titelpost:'').' 
-  
- - -
 
-  
'; - - echo $html_user_daten; - // User zur Karte konnte nicht geladen werden - $data = ServiceTerminalCheckVerlaengerung($uid); + $data = ServiceTerminalCheckVerlaengerung($uid, $cardnumber); if($data[0]===true) { diff --git a/cis/private/lvplan/index.php b/cis/private/lvplan/index.php index ee87e216f..f48c53228 100644 --- a/cis/private/lvplan/index.php +++ b/cis/private/lvplan/index.php @@ -128,8 +128,8 @@ function jumpKalender(){ else if (document.getElementById('studiensemester').value == '') { alert("t('lvplan/bitteEinStudiensemesterAuswaehlen');?>"); } - else {window.open ('stpl_kalender.php?type=verband&stg_kz='+document.getElementById('stg_kz_semplan').value+'&sem='+document.getElementById('sem').value - +'&ver='+document.getElementById('ver').value+'&grp='+document.getElementById('grp').value+'&begin='+document.getElementById('studiensemester').value+'&format=html', '_blank'); + else {window.open ('stpl_kalender.php?type=verband&stg_kz='+document.getElementById('stg_kz_semplan').value+'&sem='+document.getElementById('sem_semplan').value + +'&ver='+document.getElementById('ver_semplan').value+'&grp='+document.getElementById('grp_semplan').value+'&begin='+document.getElementById('studiensemester').value+'&format=html', '_blank'); } } function checkSetStudiengang(){ @@ -179,6 +179,95 @@ $(document).ready(function() } }); }); + +function LoadSemester(type) +{ + if(typeof type=='undefined') + type=''; + + var studiengang_kz = $('#stg_kz'+type).val(); + $.ajax({ + url: "lvplan_autocomplete.php", + data: { 'autocomplete':'getSemester', + 'stg_kz':studiengang_kz + }, + type: "POST", + dataType: "json", + success: function(data) + { + $("#sem"+type).empty(); + $("#sem"+type).append(''); + $.each(data, function(i, data){ + $("#sem"+type).append(''); + }); + }, + error: function(data) + { + alert("Fehler beim Laden der Daten"); + } + }); +} +function LoadVerband(type) +{ + if(typeof type=='undefined') + type=''; + + var studiengang_kz = $('#stg_kz'+type).val(); + var semester = $('#sem'+type).val(); + $.ajax({ + url: "lvplan_autocomplete.php", + data: { 'autocomplete':'getVerband', + 'stg_kz':studiengang_kz, + 'sem':semester + }, + type: "POST", + dataType: "json", + success: function(data) + { + $("#ver"+type).empty(); + $("#ver"+type).append(''); + $.each(data, function(i, data){ + $("#ver"+type).append(''); + }); + }, + error: function(data) + { + alert("Fehler beim Laden der Daten"); + } + }); +} +function LoadGruppe(type) +{ + if(typeof type=='undefined') + type=''; + + var studiengang_kz = $('#stg_kz'+type).val(); + var semester = $('#sem'+type).val(); + var verband = $('#ver'+type).val(); + $.ajax({ + url: "lvplan_autocomplete.php", + data: { 'autocomplete':'getGruppe', + 'stg_kz':studiengang_kz, + 'sem':semester, + 'ver':verband + }, + type: "POST", + dataType: "json", + success: function(data) + { + $("#grp"+type).empty(); + $("#grp"+type).append(''); + $.each(data, function(i, data){ + $("#grp"+type).append(''); + }); + }, + error: function(data) + { + alert("Fehler beim Laden der Daten"); + } + }); +} + @@ -282,7 +371,7 @@ $(document).ready(function() @@ -904,6 +910,7 @@ $anschaffungswert_array=(isset($_REQUEST['anschaffungswert_array'])?$_REQUEST['a $hoehe_array=(isset($_REQUEST['hoehe_array'])?$_REQUEST['hoehe_array']:array()); $breite_array=(isset($_REQUEST['breite_array'])?$_REQUEST['breite_array']:array()); $tiefe_array=(isset($_REQUEST['tiefe_array'])?$_REQUEST['tiefe_array']:array()); +$verplanen_array=(isset($_REQUEST['verplanen_array'])?$_REQUEST['verplanen_array']:array()); for ($pos=0;$pos<$anzahl;$pos++) { @@ -933,6 +940,7 @@ for ($pos=0;$pos<$anzahl;$pos++) $hoehe_array[$pos]=isset($hoehe_array[$pos]) && $work=='save' ?trim($hoehe_array[$pos]):$hoehe; $breite_array[$pos]=isset($breite_array[$pos]) && $work=='save' ?trim($breite_array[$pos]):$breite; $tiefe_array[$pos]=isset($tiefe_array[$pos]) && $work=='save' ?trim($tiefe_array[$pos]):$tiefe; + //$verplanen_array[$pos]=isset($verplanen_array[$pos]) && $work=='save' ?trim($verplanen_array[$pos]):$verplanen; if ($work=='save') { @@ -1012,6 +1020,11 @@ for ($pos=0;$pos<$anzahl;$pos++) $oBetriebsmittel->tiefe = number_format(str_replace(',','.',$tiefe_array[$pos]),2,'.',''); else $oBetriebsmittel->tiefe = ''; + + if(!isset($verplanen_array[$pos])) + $oBetriebsmittel->verplanen = false; + else + $oBetriebsmittel->verplanen = true; if ($oBetriebsmittel->save()) { @@ -1582,6 +1595,10 @@ for ($pos=0;$pos<$anzahl;$pos++) + +
- '; $num_rows=$db->db_num_rows($result_stg); @@ -296,7 +385,7 @@ $(document).ready(function() - @@ -309,7 +398,7 @@ $(document).ready(function() - @@ -321,14 +410,14 @@ $(document).ready(function() - - - + + @@ -350,7 +439,7 @@ if(!defined('CIS_LVPLAN_ARCHIVAUSWAHL_ANZEIGEN') || CIS_LVPLAN_ARCHIVAUSWAHL_ANZ + 0 + + + + + + + + + + + {F0B7457E-0314-41A3-9B8C-C2FA39AA0ADD} + + + + + + + 0 + + + {13F9E5FB-D094-42C3-86B3-1FB25394A4BE} + bezeichnung_lang + 0 + {3587B2F1-E88E-4AB0-BBF6-293BD3230B07} + 0 + 0 + 0 + 0 + 1 + + + + + 256 + + 0 + + 0 + 0 + + 0 + + + + + + + + + + + {F0B7457E-0314-41A3-9B8C-C2FA39AA0ADD} + + + + + + + 0 + @@ -100903,6 +101309,7 @@ Studiengang>0 und Semester>0 -> News fuer bestimmtes Semester im Studie {81344121-60AF-4A05-8745-90ABBE72E71B} {1E772E3D-51F7-410E-B436-7AC58A6CB8EA} {358357B3-0219-4749-94DB-79776038106E} + {52D2A12D-7F72-4AF9-959A-3403DADA37C1} @@ -100933,7 +101340,9 @@ Studiengang>0 und Semester>0 -> News fuer bestimmtes Semester im Studie {DF6C470F-CF9A-4C0F-B87F-3A8A0A5DB963} - + + {52642A9D-3DC2-4C99-897E-DB05672310EB} + @@ -101813,10 +102222,14 @@ Studiengang>0 und Semester>0 -> News fuer bestimmtes Semester im Studie {09F07E60-E845-4412-A968-BA5A0DC92635} - + + {52642A9D-3DC2-4C99-897E-DB05672310EB} + - + + {52D2A12D-7F72-4AF9-959A-3403DADA37C1} + @@ -110087,6 +110500,7 @@ art=tbl_benutzerrolle.art & tbl_rolleberechtigung.art {228D489C-025C-4B45-AAFA-E9D57BE4AED0} {C2C310BB-F2DD-46E5-8A26-31E57E7E714A} {928E0575-160A-40E7-8C88-69C9284BC95A} + {A79B765E-8BA7-4EBE-897B-6D558045ABE1} @@ -110121,6 +110535,7 @@ art=tbl_benutzerrolle.art & tbl_rolleberechtigung.art {F77283EA-37F6-4B41-AB09-417E372C432F} {1D52E692-86F2-46EF-9DDE-9D1749D7E68F} {D621EB52-3C70-4E25-8B34-3A9D9135AE29} + {DCB89954-2BEE-4F11-82E4-3966FC732970} @@ -111292,6 +111707,47 @@ art=tbl_benutzerrolle.art & tbl_rolleberechtigung.art 0 + + {19D1B27C-3DBE-4EB7-9334-8C9868CADFBA} + verplanen + 0 + {D841342E-450A-4D77-B3D3-1528F78FFC67} + 0 + 0 + 0 + 0 + 1 + + + + + + + 0 + false + 1 + 0 + + 0 + + + + + + + + + + {D64069A5-B04A-490B-B0A2-5144DEA81A2E} + + + + + + + + 0 + @@ -111329,6 +111785,7 @@ art=tbl_benutzerrolle.art & tbl_rolleberechtigung.art {F77283EA-37F6-4B41-AB09-417E372C432F} {1D52E692-86F2-46EF-9DDE-9D1749D7E68F} {D621EB52-3C70-4E25-8B34-3A9D9135AE29} + {DCB89954-2BEE-4F11-82E4-3966FC732970} @@ -111336,6 +111793,7 @@ art=tbl_benutzerrolle.art & tbl_rolleberechtigung.art {720FF69C-B05A-4A09-92C6-A30546F658B5} {228D489C-025C-4B45-AAFA-E9D57BE4AED0} {928E0575-160A-40E7-8C88-69C9284BC95A} + {A79B765E-8BA7-4EBE-897B-6D558045ABE1} @@ -133488,6 +133946,47 @@ ALTER TABLE tbl_mitarbeiter ALTER COLUMN personalnummer DROP NOT NULL; 0 + + {150C90B9-38FE-4647-A5CC-0EACD038D1F3} + beschreibung + 0 + {2BA6FC4E-3FE3-4340-9B09-CF7A006016E4} + 0 + 0 + 0 + 0 + 1 + + + + + 128 + + 0 + + 0 + 0 + + 0 + + + + + + + + + + {ECB8F02F-B683-4252-8508-ED9D064C9AF3} + + + + + + + + 0 + @@ -193539,6 +194038,342 @@ Storno + + {24E7E0FE-930E-4306-B48C-A1B495A91C2D} + tbl_stundenplan_betriebsmittel + 0 + {01855901-1A5A-49D5-8002-9B495EDA33E7} + 0 + 0 + 0 + 0 + 1 + + + + + + 0 + + {A79B765E-8BA7-4EBE-897B-6D558045ABE1} + {52D2A12D-7F72-4AF9-959A-3403DADA37C1} + + + + {5DCD6006-C78A-4B59-8026-79B4C7C63BB4} + stundenplan_betriebsmittel_id + 0 + {082BC971-434D-4589-97AE-5DB966263CF6} + 0 + 0 + 0 + 0 + 1 + + + + + + + 0 + + 1 + 0 + + 0 + + + + + {5E1C07D7-A89B-48DD-866A-0D70A71C3ECF} + + + + + + + {5F0FB0CB-62A1-4BDC-A4DA-882CACFC296A} + + + + + + + + 0 + + + {88B16466-36FE-4EB5-BC41-247A45919F41} + betriebsmittel_id + 0 + {5D4A6C20-A711-4927-ABDB-ED4D09D7055F} + 0 + 0 + 0 + 0 + 1 + + + + + + + 0 + nextval('seq_betriebsmittel_betriebsmittel_id'::regclass) + 1 + 1 + + 0 + + + + + + + {DCB89954-2BEE-4F11-82E4-3966FC732970} + + + + + {361EF147-269D-4247-8F7C-5A3876A3999A} + + + + + + + + 0 + + + {C37D3AA2-4CD4-43FE-B46D-6F92906F425C} + stundenplandev_id + 0 + {992D6B3F-1EDF-4FC4-864B-3A7F18268F00} + 0 + 0 + 0 + 0 + 1 + + + + + + + 0 + nextval('lehre.seq_stundenplandev_stundenplandev_id'::regclass) + 0 + 1 + + 0 + + + + + + + {52642A9D-3DC2-4C99-897E-DB05672310EB} + + + + + {361EF147-269D-4247-8F7C-5A3876A3999A} + + + + + + + + 0 + + + {A07A7AD7-8F6D-4BB5-84A2-030476A7ADA1} + insertamum + 0 + {AFC54793-734E-47CD-939F-4A3646E6A029} + 0 + 0 + 0 + 0 + 1 + + + + + + + 0 + + 0 + 0 + + 0 + + + + + + + + + + {342E3F36-138D-40F7-B1B2-D9489C848835} + + + + + + + + 0 + + + {8EA05B5B-4CBA-4B76-90F1-A57FA0C89733} + insertvon + 0 + {58F9E6CF-98DD-48FC-92D2-523DA2B35C69} + 0 + 0 + 0 + 0 + 1 + + + + + 32 + + 0 + + 0 + 0 + + 0 + + + + + + + + + + {ECB8F02F-B683-4252-8508-ED9D064C9AF3} + + + + + + + + 0 + + + {1ABCABAA-90E4-4E13-8422-E6A2DE9EDC8C} + anmerkung + 0 + {96D8650A-5305-4446-AAED-179C2CE35DB8} + 0 + 0 + 0 + 0 + 1 + + + + + + + 0 + + 0 + 0 + + 0 + + + + + + + + + + {8D91E2A4-12F5-40E3-BAC2-BFCF7BE1C8B7} + + + + + + + + 0 + + + + + {1EEB3826-B294-4FE2-B37E-CBA967FC4433} + Key116 + 0 + {23674345-7F79-449A-B262-D7F96D5729B8} + 0 + 0 + 0 + 0 + 1 + + + + + + + + {5E1C07D7-A89B-48DD-866A-0D70A71C3ECF} + stundenplan_betriebsmittel_id + 0 + {E9C16D8B-FCD4-4D16-8EFF-0C7D6DB53F8F} + 0 + 1 + + + + + 0 + + {5DCD6006-C78A-4B59-8026-79B4C7C63BB4} + + + + + + + + + + + + {1EEB3826-B294-4FE2-B37E-CBA967FC4433} + + + + + + + + + {665A865D-A845-48F9-AC5C-C6533F3D34BF} + + + 0 + + 0 + + + + + @@ -193622,6 +194457,8 @@ Storno {50C8C070-F10E-4B6D-B2ED-702F87F61F8A} {6E5E956D-3B16-4942-9CBD-34C789B2FFCA} {94B28078-344D-41A4-B32A-2E57EE205C51} + {D2E837BF-E18B-4B96-8ACE-AB0611BE2DE6} + {13F9E5FB-D094-42C3-86B3-1FB25394A4BE} @@ -224697,6 +225534,122 @@ Storno SIMPLE 1 + + {A79B765E-8BA7-4EBE-897B-6D558045ABE1} + fk_betriebsmittel_stundenplan_betriebsmittel + 0 + {6036B62E-12F2-4C7C-8D59-E0EE44A3AE13} + 0 + + {15F85B08-AD47-4E02-9EB2-AD1CB7AB6EB3} + + + {24E7E0FE-930E-4306-B48C-A1B495A91C2D} + + 1 + + + 0 + 0 + 0 + -1 + + + + 0 + 0 + 0 + 0 + + {7499E6E7-640A-4F9D-BD1F-A25FC747F738} + + + + {DCB89954-2BEE-4F11-82E4-3966FC732970} + FK betriebsmittel_id - betriebsmittel_id + 0 + {F109814E-E94B-4712-9B7F-FC49A6AA1588} + 0 + 1 + + + + + + {07ED98B0-2A82-4276-BF4C-943084A0A653} + + + {88B16466-36FE-4EB5-BC41-247A45919F41} + + + {F76D2CF3-FA9E-4E61-BA58-4EA8818639A2} + + + + + 0 + 0 + SIMPLE + 1 + + + {52D2A12D-7F72-4AF9-959A-3403DADA37C1} + fk_stundenplandev_stundenplan_betriebsmittel + 0 + {3D2E51A3-4832-454B-B2D3-2B0E9CDBBA47} + 0 + + {3BA1E0FF-FD0A-42CA-9428-AF78C1AB8DD1} + + + {24E7E0FE-930E-4306-B48C-A1B495A91C2D} + + 1 + + + 0 + 0 + 0 + -1 + + + + 0 + 0 + 0 + 0 + + {B27B3AB5-CDA4-48E7-AFA9-5934A5407E49} + + + + {52642A9D-3DC2-4C99-897E-DB05672310EB} + FK stundenplandev_id - stundenplandev_id + 0 + {608A49F1-B69D-4CA5-B0B3-6AFFCC1493D5} + 0 + 1 + + + + + + {09F07E60-E845-4412-A968-BA5A0DC92635} + + + {C37D3AA2-4CD4-43FE-B46D-6F92906F425C} + + + {DF6C470F-CF9A-4C0F-B87F-3A8A0A5DB963} + + + + + 0 + 0 + SIMPLE + 1 + @@ -257997,6 +258950,7 @@ WHERE NOT (tbl_ablauf.gebiet_id IN ( SELECT tbl_kategorie.gebiet_id {206A098E-F419-4A58-B1F8-887966ED376C} {83E171D4-911F-415A-A7BE-112B952AB3EA} {ECAA6237-2747-4FEF-A56F-F4489CBCF8B9} + {24E7E0FE-930E-4306-B48C-A1B495A91C2D} diff --git a/system/checksystem.php b/system/checksystem.php index 22c331079..9b043d6e0 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2940,7 +2940,7 @@ if(!$result = @$db->db_query("SELECT * FROM lehre.vw_studienplan LIMIT 1")) if(!$db->db_query($qry)) echo '
lehre.vw_studienplan: '.$db->db_last_error().'
'; else - echo '
lehre.vw_studienplan: View erstellt'; + echo '
lehre.vw_studienplan: View erstellt
'; } // Spalte beschreibung in public.tbl_studiensemester @@ -2954,6 +2954,84 @@ if(!$result = @$db->db_query("SELECT beschreibung FROM public.tbl_studiensemeste echo ' public.tbl_studiensemester: Spalte beschreibung hinzugefuegt!
'; } +// Eigene Berechtigung fuer Betriebsmittel Studndenplan +if(!$result = @$db->db_query("SELECT 1 FROM lehre.tbl_stundenplan_betriebsmittel LIMIT 1")) +{ + $qry = "CREATE TABLE lehre.tbl_stundenplan_betriebsmittel + ( + stundenplan_betriebsmittel_id bigint, + betriebsmittel_id bigint, + stundenplandev_id bigint, + anmerkung text, + insertamum timestamp, + insertvon varchar(32) + ); + + ALTER TABLE lehre.tbl_stundenplan_betriebsmittel ADD CONSTRAINT pk_stundenplan_betriebsmittel PRIMARY KEY (stundenplan_betriebsmittel_id); + + CREATE SEQUENCE lehre.seq_stundenplan_betriebsmittel_id + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + + ALTER TABLE wawi.tbl_betriebsmittel ADD COLUMN verplanen boolean NOT NULL default false; + + ALTER TABLE lehre.tbl_stundenplan_betriebsmittel ALTER COLUMN stundenplan_betriebsmittel_id SET DEFAULT nextval('lehre.seq_stundenplan_betriebsmittel_id'); + ALTER TABLE lehre.tbl_stundenplan_betriebsmittel ADD CONSTRAINT fk_stundenplan_betriebsmittel_stundenplandev FOREIGN KEY (stundenplandev_id) REFERENCES lehre.tbl_stundenplandev (stundenplandev_id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE lehre.tbl_stundenplan_betriebsmittel ADD CONSTRAINT fk_stundenplan_betriebsmittel_betriebsmittel FOREIGN KEY (betriebsmittel_id) REFERENCES wawi.tbl_betriebsmittel (betriebsmittel_id) ON UPDATE CASCADE ON DELETE CASCADE; + + GRANT SELECT, INSERT, UPDATE, DELETE ON lehre.tbl_stundenplan_betriebsmittel TO vilesci; + GRANT SELECT, UPDATE ON lehre.seq_stundenplan_betriebsmittel_id TO vilesci; + "; + + if(!$db->db_query($qry)) + echo 'system.tbl_berechtigung '.$db->db_last_error().'
'; + else + echo ' system.tbl_berechtigung: Eigene Berechtigung fuer persoenliche Daten bei den Mitarbeitern mitarbeiter/persoenlich hinzugefuegt!
'; + +} + +// Spalte standort in public.tbl_organisationseinheit einfügen +if(!$result = @$db->db_query("SELECT standort FROM public.tbl_organisationseinheit LIMIT 1;")) +{ + $qry = "ALTER TABLE public.tbl_organisationseinheit ADD COLUMN standort varchar(32);"; + + if(!$db->db_query($qry)) + echo 'public.tbl_organisationseinheit: '.$db->db_last_error().'
'; + else + echo 'public.tbl_organisationseinheit: Spalte standort hinzugefuegt!
'; +} + +// Spalte standort in lehre.vw_studienplan einfügen +if(!$result = @$db->db_query("SELECT standort FROM lehre.vw_studienplan LIMIT 1")) +{ + $qry = "CREATE OR REPLACE VIEW lehre.vw_studienplan AS + SELECT + organisationseinheittyp_kurzbz, oe_kurzbz, studiengang_kz, studienordnung_id, studienplan_id, + tbl_studienplan.orgform_kurzbz, tbl_studienplan.version, tbl_studienplan.bezeichnung, regelstudiendauer, + tbl_studienplan.sprache, tbl_studienplan.aktiv, semesterwochen, tbl_studienplan.testtool_sprachwahl, + tbl_studienplan.insertamum, tbl_studienplan.insertvon, tbl_studienplan.updateamum, tbl_studienplan.updatevon, + gueltigvon, gueltigbis, ects, studiengangbezeichnung, studiengangbezeichnung_englisch, studiengangkurzbzlang, + akadgrad_id, kurzbz, kurzbzlang, typ, english, farbe, email, telefon, max_semester, max_verband, max_gruppe, + erhalter_kz, bescheid, bescheidbgbl1, bescheidbgbl2, bescheidgz, bescheidvom, titelbescheidvom, zusatzinfo_html, + moodle, studienplaetze, lgartcode, mischform, projektarbeit_note_anzeige, onlinebewerbung, oe_parent_kurzbz, + mailverteiler, freigabegrenze, kurzzeichen, lehre, beschreibung, studienordnung_semester_id, studiensemester_kurzbz, + semester, standort + FROM + lehre.tbl_studienplan + JOIN lehre.tbl_studienordnung USING (studienordnung_id) + JOIN tbl_studiengang USING (studiengang_kz) + JOIN tbl_organisationseinheit USING (oe_kurzbz) + JOIN tbl_organisationseinheittyp USING (organisationseinheittyp_kurzbz) + JOIN lehre.tbl_studienordnung_semester USING (studienordnung_id);"; + + if(!$db->db_query($qry)) + echo 'lehre.vw_studienplan: '.$db->db_last_error().'
'; + else + echo 'lehre.vw_studienplan: Neue Spalte standort zur View hinzugefuegt
'; +} + echo '


'; $tabellen=array( @@ -3087,6 +3165,7 @@ $tabellen=array( "lehre.tbl_stunde" => array("stunde","beginn","ende"), "lehre.tbl_stundenplan" => array("stundenplan_id","unr","mitarbeiter_uid","datum","stunde","ort_kurzbz","gruppe_kurzbz","titel","anmerkung","lehreinheit_id","studiengang_kz","semester","verband","gruppe","fix","updateamum","updatevon","insertamum","insertvon"), "lehre.tbl_stundenplandev" => array("stundenplandev_id","lehreinheit_id","unr","studiengang_kz","semester","verband","gruppe","gruppe_kurzbz","mitarbeiter_uid","ort_kurzbz","datum","stunde","titel","anmerkung","fix","updateamum","updatevon","insertamum","insertvon","ext_id"), + "lehre.tbl_stundenplan_betriebsmittel" => array("stundenplan_betriebsmittel_id","betriebsmittel_id","stundenplandev_id","anmerkung","insertamum","insertvon"), "lehre.tbl_vertrag" => array("vertrag_id","person_id","vertragstyp_kurzbz","bezeichnung","betrag","insertamum","insertvon","updateamum","updatevon","ext_id","anmerkung","vertragsdatum"), "lehre.tbl_vertrag_vertragsstatus" => array("vertragsstatus_kurzbz","vertrag_id","uid","datum","ext_id","insertamum","insertvon","updateamum","updatevon"), "lehre.tbl_vertragstyp" => array("vertragstyp_kurzbz","bezeichnung"), @@ -3134,7 +3213,7 @@ $tabellen=array( "public.tbl_notiz_dokument" => array("notiz_id","dms_id"), "public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"), "public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"), - "public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre"), + "public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre","standort"), "public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"), "public.tbl_person" => array("person_id","staatsbuergerschaft","geburtsnation","sprache","anrede","titelpost","titelpre","nachname","vorname","vornamen","gebdatum","gebort","gebzeit","foto","anmerkung","homepage","svnr","ersatzkennzeichen","familienstand","geschlecht","anzahlkinder","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","bundesland_code","kompetenzen","kurzbeschreibung","zugangscode", "foto_sperre","matr_nr"), "public.tbl_person_fotostatus" => array("person_fotostatus_id","person_id","fotostatus_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"), @@ -3162,7 +3241,7 @@ $tabellen=array( "public.tbl_studentlehrverband" => array("student_uid","studiensemester_kurzbz","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"), "public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung"), "public.tbl_studiengangstyp" => array("typ","bezeichnung","beschreibung"), - "public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id"), + "public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id","beschreibung"), "public.tbl_tag" => array("tag"), "public.tbl_variable" => array("name","uid","wert"), "public.tbl_vorlage" => array("vorlage_kurzbz","bezeichnung","anmerkung","mimetype"), @@ -3190,7 +3269,7 @@ $tabellen=array( "system.tbl_webservicetyp" => array("webservicetyp_kurzbz","beschreibung"), "system.tbl_server" => array("server_kurzbz","beschreibung"), "wawi.tbl_betriebsmittelperson" => array("betriebsmittelperson_id","betriebsmittel_id","person_id", "anmerkung", "kaution", "ausgegebenam", "retouram","insertamum", "insertvon","updateamum", "updatevon","ext_id","uid"), - "wawi.tbl_betriebsmittel" => array("betriebsmittel_id","betriebsmitteltyp","oe_kurzbz", "ort_kurzbz", "beschreibung", "nummer", "hersteller","seriennummer", "bestellung_id","bestelldetail_id", "afa","verwendung","anmerkung","reservieren","updateamum","updatevon","insertamum","insertvon","ext_id","inventarnummer","leasing_bis","inventuramum","inventurvon","anschaffungsdatum","anschaffungswert","hoehe","breite","tiefe","nummer2"), + "wawi.tbl_betriebsmittel" => array("betriebsmittel_id","betriebsmitteltyp","oe_kurzbz", "ort_kurzbz", "beschreibung", "nummer", "hersteller","seriennummer", "bestellung_id","bestelldetail_id", "afa","verwendung","anmerkung","reservieren","updateamum","updatevon","insertamum","insertvon","ext_id","inventarnummer","leasing_bis","inventuramum","inventurvon","anschaffungsdatum","anschaffungswert","hoehe","breite","tiefe","nummer2","verplanen"), "wawi.tbl_betriebsmittel_betriebsmittelstatus" => array("betriebsmittelbetriebsmittelstatus_id","betriebsmittel_id","betriebsmittelstatus_kurzbz", "datum", "updateamum", "updatevon", "insertamum", "insertvon","anmerkung"), "wawi.tbl_betriebsmittelstatus" => array("betriebsmittelstatus_kurzbz","beschreibung"), "wawi.tbl_betriebsmitteltyp" => array("betriebsmitteltyp","beschreibung","anzahl","kaution","typ_code","mastershapename"), diff --git a/vilesci/inventar/inventar_pflege.php b/vilesci/inventar/inventar_pflege.php index e6a7ab34b..602246501 100644 --- a/vilesci/inventar/inventar_pflege.php +++ b/vilesci/inventar/inventar_pflege.php @@ -92,6 +92,7 @@ $hoehe=isset($_REQUEST['hoehe'])?$_REQUEST['hoehe']:''; $breite=isset($_REQUEST['breite'])?$_REQUEST['breite']:''; $tiefe=isset($_REQUEST['tiefe'])?$_REQUEST['tiefe']:''; + $verplanen=isset($_REQUEST['verplanen'])?$_REQUEST['verplanen']:false; $jahr_monat=trim(isset($_REQUEST['jahr_monat']) ? $_REQUEST['jahr_monat']:''); $inventur_jahr=trim(isset($_REQUEST['inventur_jahr']) ? $_REQUEST['inventur_jahr']:''); @@ -236,6 +237,7 @@ $hoehe = $oBetriebsmittel->hoehe; $breite = $oBetriebsmittel->breite; $tiefe = $oBetriebsmittel->tiefe; + $verplanen = $oBetriebsmittel->verplanen; $bestellung_id_old=$bestellung_id; $bestelldetail_id_old=$bestelldetail_id; @@ -829,6 +831,10 @@ if($betriebsmittel_id!='' || $anzahl_lock)
+ +
- '; $num_rows=$db->db_num_rows($result_stg); @@ -364,7 +453,7 @@ if(!defined('CIS_LVPLAN_ARCHIVAUSWAHL_ANZEIGEN') || CIS_LVPLAN_ARCHIVAUSWAHL_ANZ - @@ -377,7 +466,7 @@ if(!defined('CIS_LVPLAN_ARCHIVAUSWAHL_ANZEIGEN') || CIS_LVPLAN_ARCHIVAUSWAHL_ANZ - @@ -389,14 +478,14 @@ if(!defined('CIS_LVPLAN_ARCHIVAUSWAHL_ANZEIGEN') || CIS_LVPLAN_ARCHIVAUSWAHL_ANZ - - - + +
'; diff --git a/cis/private/lvplan/lvplan_autocomplete.php b/cis/private/lvplan/lvplan_autocomplete.php index 1e0ce544c..1dec4a52b 100644 --- a/cis/private/lvplan/lvplan_autocomplete.php +++ b/cis/private/lvplan/lvplan_autocomplete.php @@ -20,32 +20,102 @@ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/basis_db.class.php'); -require_once('../../../include/benutzer.class.php'); - +require_once('../../../include/benutzer.class.php'); +require_once('../../../include/studiengang.class.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/lehrverband.class.php'); + +$uid = get_uid(); + if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); -if(isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete']=='benutzer') +if(!isset($_REQUEST['autocomplete'])) + die('autocomplete param missing'); + +switch($_REQUEST['autocomplete']) { - $search=trim((isset($_REQUEST['term']) ? $_REQUEST['term']:'')); - if (is_null($search) ||$search=='') + case 'benutzer': + $search=trim((isset($_REQUEST['term']) ? $_REQUEST['term']:'')); + if (is_null($search) ||$search=='') exit(); - - $benutzer = new benutzer(); - $searchItems = explode(' ',$search); - if($benutzer->search($searchItems)) - { - $result_obj = array(); - foreach($benutzer->result as $row) + + $benutzer = new benutzer(); + $searchItems = explode(' ',$search); + if($benutzer->search($searchItems)) { - $item['vorname']=html_entity_decode($row->vorname); - $item['nachname']=html_entity_decode($row->nachname); - $item['uid']=html_entity_decode($row->uid); - $item['mitarbeiter_uid']=html_entity_decode($row->mitarbeiter_uid); - $result_obj[]=$item; + $result_obj = array(); + foreach($benutzer->result as $row) + { + $item['vorname']=html_entity_decode($row->vorname); + $item['nachname']=html_entity_decode($row->nachname); + $item['uid']=html_entity_decode($row->uid); + $item['mitarbeiter_uid']=html_entity_decode($row->mitarbeiter_uid); + $result_obj[]=$item; + } + echo json_encode($result_obj); } - echo json_encode($result_obj); - } - exit; + break; + + case 'getSemester': + $studiengang = new studiengang(); + $data = array(); + if($studiengang->load($_REQUEST['stg_kz'])) + { + for($i=1;$i<=$studiengang->max_semester;$i++) + { + $data[]=$i; + } + echo json_encode($data); + } + else + { + echo $studiengang->errormsg; + } + break; + case 'getVerband': + $lvb = new lehrverband(); + $studiengang_kz=$_REQUEST['stg_kz']; + $semester=$_REQUEST['sem']; + $data = array(); + if($lvb->getlehrverband($studiengang_kz, $semester)) + { + foreach($lvb->result as $row) + { + if(trim($row->verband)!='') + $data[]=$row->verband; + } + $data = array_unique($data); + echo json_encode($data); + } + else + { + echo $studiengang->errormsg; + } + break; + case 'getGruppe': + $lvb = new lehrverband(); + $studiengang_kz=$_REQUEST['stg_kz']; + $semester=$_REQUEST['sem']; + $verband=$_REQUEST['ver']; + $data = array(); + if($lvb->getlehrverband($studiengang_kz, $semester, $verband)) + { + foreach($lvb->result as $row) + { + if(trim($row->gruppe)!='') + $data[]=$row->gruppe; + } + $data = array_unique($data); + echo json_encode($data); + } + else + { + echo $studiengang->errormsg; + } + break; + default: + echo 'Invalid Parameter'; + break; } ?> diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 05b64fd65..20d476c5c 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -150,4 +150,5 @@ define('STIP_USER_PASSWORD','password'); define('BEWERBERTOOL_STUDIENAUSWAHL_ANZEIGEN', true); define('BEWERBERTOOL_STANDORTAUSWAHL_ANZEIGEN', false); +define('KOLLISIONSFREIE_USER',serialize(array('_DummyLektor'))); ?> diff --git a/content/dragboard.js.php b/content/dragboard.js.php index 45e1fe27b..07012ca78 100644 --- a/content/dragboard.js.php +++ b/content/dragboard.js.php @@ -501,6 +501,25 @@ var boardObserver= var new_ort=evt.target.getAttribute("ort_kurzbz"); var kollisionsanzahl=evt.target.getAttribute("kollision"); } + else if(evt.target.tagName=="button") + { + + if(getvariable('allow_lehrstunde_drop')=='true') + { + // Wenn direkt auf die Stunde gezogen wird, wird der Raum uebernommen und die unr gleich gesetzt + ort=evt.target.getAttribute("ort_kurzbz"); + var new_unr=evt.target.getAttribute("unr"); + var new_ort=ort; + + // zusaetzlich wird diese zu allen Stunden (gesamter Block) dazugebucht + var new_blockung=getNewBlockung(evt.target); + } + else + { + alert('Bitte waehlen Sie einen Ort oder aktivieren Sie die Option allow_lehrstunde_drop'); + return false; + } + } else { if (dropdata.flavour.contentType=="application/tempus-lehrveranstaltung") @@ -518,11 +537,17 @@ var boardObserver= url+="&new_ort="+new_ort+"&kollisionsanzahl="+kollisionsanzahl; else url+="&aktion=stpl_move"; + + if(new_unr) + url+="&new_unr="+new_unr; + if(new_blockung) + url+="&new_blockung="+new_blockung; + url+="&mime="+dropdata.flavour.contentType; - //IDs der Stunden die verschoben werden dazuhaengen //idList = TimeTableWeekGetMarkedIdList(); //url+=idList; + //alert("url:"+url); if(new_ort=='' && ort=='') { alert('Es muss ein Ort gewaehlt werden'); @@ -535,6 +560,30 @@ var boardObserver= } }; +// Holt die Anzahl der Bloecke nach dem uebergebenen mit der selben unr +function getNewBlockung(item) +{ + var items = document.getElementsByTagName('button'); + var unr = item.getAttribute('unr'); + var stunde = item.getAttribute('stunde'); + var wochentag = item.getAttribute('wochentag'); + var blockung=1; + for each(var button in items) + { + if(button.id && button.id.startsWith('buttonSTPL')) + { + buttonunr=button.getAttribute('unr'); + buttonwochentag=button.getAttribute('wochentag'); + buttonstunde=button.getAttribute('stunde'); + + if(buttonunr==unr && buttonwochentag==wochentag && buttonstunde>stunde) + { + blockung=blockung+1; + } + } + } + return blockung; +} // **** // * Observer fuer den Lehrverbandstree diff --git a/content/fas.xul.php b/content/fas.xul.php index 68dce6a34..33e363829 100644 --- a/content/fas.xul.php +++ b/content/fas.xul.php @@ -125,25 +125,25 @@ foreach($addon_obj->result as $addon) - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + diff --git a/content/fasoverlay.js.php b/content/fasoverlay.js.php index 25a698bb7..627704180 100644 --- a/content/fasoverlay.js.php +++ b/content/fasoverlay.js.php @@ -688,27 +688,6 @@ function loadURL(event) if (url) contentFrame.setAttribute('src', url); }; -function parseRDFString(str, url) -{ - - try { - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - } catch(e) { - alert(e); - return; - } - - var memoryDS = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource); - - var ios=Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); - baseUri=ios.newURI(url,null,null); - - var parser=Components.classes["@mozilla.org/rdf/xml-parser;1"].createInstance(Components.interfaces.nsIRDFXMLParser); - parser.parseString(memoryDS,baseUri,str); - - return memoryDS; -} - // **** // * Liefert eine HTML Liste mit den Koordinatorstunden // * fuer einen Fachbereich diff --git a/content/functions.js.php b/content/functions.js.php index af24c751e..d157d649b 100644 --- a/content/functions.js.php +++ b/content/functions.js.php @@ -103,6 +103,27 @@ function ParseReturnValue(response) //debug('data:'+this.dbdml_data+' errormsg:'+this.dbdml_errormsg+' return:'+this.dbdml_return ); } +function parseRDFString(str, url) +{ + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + } catch(e) { + alert(e); + return; + } + + var memoryDS = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource); + + var ios=Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); + baseUri=ios.newURI(url,null,null); + + var parser=Components.classes["@mozilla.org/rdf/xml-parser;1"].createInstance(Components.interfaces.nsIRDFXMLParser); + parser.parseString(memoryDS,baseUri,str); + + return memoryDS; +} + + // **** // * Zeigt einen Text in der Statusbar an // **** @@ -259,4 +280,39 @@ String.prototype.startsWith = function(str) function getUsername() { return ''; -} \ No newline at end of file +} + +// **** +// * Laedt den Wert einer Variable aus der DB +// **** +function getvariable(variable) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + // Request absetzen + + var url = 'content/fasDBDML.php'; + + var req = new phpRequest(url,'',''); + + req.add('type', 'getvariable'); + req.add('name', variable); + + var response = req.executePOST(); + + var val = new ParseReturnValue(response) + + if (!val.dbdml_return) + { + if(val.dbdml_errormsg=='') + alert(response) + else + alert(val.dbdml_errormsg) + return false; + } + else + { + return val.dbdml_data; + } +} + diff --git a/content/lvplanung/ressourcedialog.js.php b/content/lvplanung/ressourcedialog.js.php new file mode 100644 index 000000000..82ac65e64 --- /dev/null +++ b/content/lvplanung/ressourcedialog.js.php @@ -0,0 +1,392 @@ + + */ +require_once('../../config/vilesci.config.inc.php'); +require_once('../../config/global.config.inc.php'); +?> + +// *********** Globale Variablen *****************// +var RessourceZugeteiltTreeDatasource; //Datasource des RessourceZugeteiltTrees +var RessourceVerplanbarTreeDatasource; //Datasource des RessourceVerplanbarTrees +var RessourceStunden; +var RessourceDatum; +var RessourceStplIDs; +var RessourceZugeteiltTreeDoubleRefresh=false; +var RessourceVerplanbarTreeDoubleRefresh=false; + +// ********** Observer und Listener ************* // + +// **** +// * Observer fuer RessourceZugeteilt Tree +// * startet Rebuild nachdem das Refresh +// * der datasource fertig ist +// **** +var RessourceZugeteiltTreeSinkObserver = +{ + onBeginLoad : function(pSink) {}, + onInterrupt : function(pSink) {}, + onResume : function(pSink) {}, + onError : function(pSink, pStatus, pError) {}, + onEndLoad : function(pSink) + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + document.getElementById('ressource-zugeteilt-tree').builder.rebuild(); + } +}; + +// **** +// * Nach dem Rebuild wird die Betriebsmittelzuordnung wieder +// * markiert +// **** +var RessourceZugeteiltTreeListener = +{ + willRebuild : function(builder) { }, + didRebuild : function(builder) + { + if(RessourceZugeteiltTreeDoubleRefresh) + { + // Doppeltes Rebuild damit nach leeren Trees korrekt geladen wird + RessourceZugeteiltTreeDoubleRefresh=false; + window.setTimeout("RessourceZugeteiltTreeRefresh()",10); + } + else + { + window.setTimeout(RessourceZugeteiltTreeSelectZuordnung,10); + } + } +}; + +// **** +// * Observer fuer RessourceVerplanbar Tree +// * startet Rebuild nachdem das Refresh +// * der datasource fertig ist +// **** +var RessourceVerplanbarTreeSinkObserver = +{ + onBeginLoad : function(pSink) {}, + onInterrupt : function(pSink) {}, + onResume : function(pSink) {}, + onError : function(pSink, pStatus, pError) {}, + onEndLoad : function(pSink) + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + document.getElementById('ressource-verplanbar-tree').builder.rebuild(); + } +}; + +// **** +// * Nach dem Rebuild wird die Betriebsmittelzuordnung wieder +// * markiert +// **** +var RessourceVerplanbarTreeListener = +{ + willRebuild : function(builder) { }, + didRebuild : function(builder) + { + if(RessourceVerplanbarTreeDoubleRefresh) + { + // Doppeltes Rebuild damit nach leeren Trees korrekt geladen wird + RessourceVerplanbarTreeDoubleRefresh=false; + window.setTimeout("RessourceVerplanbarTreeRefresh()",10); + } + else + { + window.setTimeout(RessourceVerplanbarTreeSelectZuordnung,10); + } + } +}; + +// **** +// * Laedt die Trees +// **** +function RessourceInit(datum, stunden, stplids) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + RessourceStunden = stunden; + RessourceDatum = datum; + RessourceStplIDs = stplids; + + // *** Zugeteilte Betriebsmittel *** + var ressourcezugeteilttree = document.getElementById('ressource-zugeteilt-tree'); + // TODO Parameter + url='rdf/stundenplan_betriebsmittel.rdf.php?ts='+gettimestamp(); + + for(i in stplids) + url = url+'&stundenplan_ids[]='+stplids[i]; + + //Alte DS entfernen + var oldDatasources = ressourcezugeteilttree.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + ressourcezugeteilttree.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + ressourcezugeteilttree.builder.rebuild(); + + try + { + RessourceZugeteiltTreeDatasource.removeXMLSinkObserver(RessourceZugeteiltTreeSinkObserver); + ressourcezugeteilttree.builder.removeListener(RessourceZugeteiltTreeListener); + } + catch(e) + {} + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + RessourceZugeteiltTreeDatasource = rdfService.GetDataSource(url); + RessourceZugeteiltTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + RessourceZugeteiltTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + ressourcezugeteilttree.database.AddDataSource(RessourceZugeteiltTreeDatasource); + RessourceZugeteiltTreeDatasource.addXMLSinkObserver(RessourceZugeteiltTreeSinkObserver); + ressourcezugeteilttree.builder.addListener(RessourceZugeteiltTreeListener); + + + // *** Verplanbare Betriebsmittel *** + var ressourceverplanbartree = document.getElementById('ressource-verplanbar-tree'); + // TODO Parameter + url='rdf/betriebsmittel.rdf.php?datum='+datum+'&'+gettimestamp(); + + for(i in stunden) + url = url+'&stunde[]='+stunden[i]; + + //Alte DS entfernen + var oldDatasources = ressourceverplanbartree.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + ressourceverplanbartree.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + ressourceverplanbartree.builder.rebuild(); + + try + { + RessourceVerplanbarTreeDatasource.removeXMLSinkObserver(RessourceVerplanbarTreeSinkObserver); + ressourceverplanbartree.builder.removeListener(RessourceVerplanbarTreeDatasource); + } + catch(e) + {} + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + RessourceVerplanbarTreeDatasource = rdfService.GetDataSource(url); + RessourceVerplanbarTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + RessourceVerplanbarTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + ressourceverplanbartree.database.AddDataSource(RessourceVerplanbarTreeDatasource); + RessourceVerplanbarTreeDatasource.addXMLSinkObserver(RessourceVerplanbarTreeSinkObserver); + ressourceverplanbartree.builder.addListener(RessourceVerplanbarTreeListener); +} + +// Hinzufuegen der Ressourcenzuordnung +function RessourceAdd() +{ + var tree = document.getElementById('ressource-verplanbar-tree'); + + if (tree.currentIndex==-1) + return; + + //Ausgewaehlte Nr holen + betriebsmittel_id=getTreeCellText(tree, "ressource-verplanbar-tree-betriebsmittel_id", tree.currentIndex); + + var url = 'content/tempusDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'addressource'); + req.add('betriebsmittel_id', betriebsmittel_id); + + for(i in RessourceStplIDs) + req.add('stpl_id[]', RessourceStplIDs[i]); + + for(i in RessourceStunden) + req.add('stunden[]', RessourceStunden[i]); + + var response = req.executePOST(); + + var val = new ParseReturnValue(response) + + if (!val.dbdml_return) + { + if(val.dbdml_errormsg=='') + alert(response) + else + alert(val.dbdml_errormsg) + } + else + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + RessourcenReloadTrees(); + } + +} + +// Entfernen der Ressourcenzuordnung +function RessourceRemove() +{ + var tree = document.getElementById('ressource-zugeteilt-tree'); + + if (tree.currentIndex==-1) + return; + + var url = 'content/tempusDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'deleteressource'); + + var start = new Object(); + var end = new Object(); + var numRanges = tree.view.selection.getRangeCount(); + var paramList= ''; + var anzahl=0; + + for (var t = 0; t < numRanges; t++) + { + tree.view.selection.getRangeAt(t,start,end); + for (var v = start.value; v <= end.value; v++) + { + stundenplan_betriebsmittel_id = getTreeCellText(tree, 'ressource-zugeteilt-tree-stundenplan_betriebsmittel_id', v); + req.add('stundenplan_betriebsmittel_id[]', stundenplan_betriebsmittel_id); + } + } + + var response = req.executePOST(); + + var val = new ParseReturnValue(response) + + if (!val.dbdml_return) + { + if(val.dbdml_errormsg=='') + alert(response) + else + alert(val.dbdml_errormsg) + } + else + { + RessourcenReloadTrees(); + RessourcenDisableDetails() + } +} + +function RessourceZugeteiltTreeRefresh() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + RessourceZugeteiltTreeDatasource.Refresh(false); +} + +function RessourceVerplanbarTreeRefresh() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + RessourceVerplanbarTreeDatasource.Refresh(false); +} + +function RessourcenReloadTrees() +{ + + RessourceZugeteiltTreeDoubleRefresh=true; + RessourceVerplanbarTreeDoubleRefresh=true; + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + RessourceZugeteiltTreeDatasource.Refresh(false); + RessourceVerplanbarTreeDatasource.Refresh(false); +} + +// Speichert die Anmerkung +function RessourceSave() +{ + var stundenplan_betriebsmittel_id=document.getElementById('ressource-detail-stundenplan_betriebsmittel_id').value; + var anmerkung = document.getElementById('ressource-detail-anmerkung').value; + + var url = 'content/tempusDBDML.php'; + var req = new phpRequest(url,'',''); + + req.add('type', 'saveressource'); + req.add('stundenplan_betriebsmittel_id', stundenplan_betriebsmittel_id); + req.add('anmerkung', anmerkung); + + var response = req.executePOST(); + + var val = new ParseReturnValue(response) + + if (!val.dbdml_return) + { + if(val.dbdml_errormsg=='') + alert(response) + else + alert(val.dbdml_errormsg) + } + else + { + RessourcenReloadTrees(); + RessourcenDisableDetails(); + } +} + +function RessourcenDisableDetails() +{ + document.getElementById('ressource-detail-anmerkung').value=''; + document.getElementById('ressource-detail-anmerkung').disabled=true; + document.getElementById('ressource-detail-stundenplan_betriebsmittel_id').value=''; + document.getElementById('ressource-detail-speichern').disabled=true; +} + +/** + * Bei der Auswahl der zugeteilten Ressource wird diese geladen und die Anmerkung angezeigt + */ +function RessourceZugeteiltAuswahl() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var tree = document.getElementById('ressource-zugeteilt-tree'); + + if (tree.currentIndex==-1) + return; + + //Ausgewaehlte Nr holen + var stundenplan_betriebsmittel_id=getTreeCellText(tree, "ressource-zugeteilt-tree-stundenplan_betriebsmittel_id", tree.currentIndex); + + var req = new phpRequest('rdf/stundenplan_betriebsmittel.rdf.php','',''); + req.add('stundenplan_betriebsmittel_id',stundenplan_betriebsmittel_id); + + var response = req.execute(); + // Datasource holen + var dsource=parseRDFString(response, 'http://www.technikum-wien.at/stundenplanbetriebsmittel'); + + dsource=dsource.QueryInterface(Components.interfaces.nsIRDFDataSource); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + var subject = rdfService.GetResource("http://www.technikum-wien.at/stundenplanbetriebsmittel/" + stundenplan_betriebsmittel_id); + + var predicateNS = "http://www.technikum-wien.at/stundenplanbetriebsmittel/rdf"; + + //Daten holen + anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); + beschreibung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#beschreibung" )); + + document.getElementById('ressource-detail-anmerkung').disabled=false; + document.getElementById('ressource-detail-speichern').disabled=false; + + document.getElementById('ressource-detail-caption').label='Anmerkungen zu '+beschreibung; + document.getElementById('ressource-detail-anmerkung').value=anmerkung; + + document.getElementById('ressource-detail-stundenplan_betriebsmittel_id').value=stundenplan_betriebsmittel_id; +} + +function RessourceZugeteiltTreeSelectZuordnung() +{ +} + +function RessourceVerplanbarTreeSelectZuordnung() +{ +} diff --git a/content/lvplanung/ressourcedialog.xul.php b/content/lvplanung/ressourcedialog.xul.php new file mode 100644 index 000000000..ee9e6737c --- /dev/null +++ b/content/lvplanung/ressourcedialog.xul.php @@ -0,0 +1,161 @@ + + */ + +header("Cache-Control: no-cache"); +header("Cache-Control: post-check=0, pre-check=0",false); +header("Expires Mon, 26 Jul 1997 05:00:00 GMT"); +header("Pragma: no-cache"); +header("Content-type: application/vnd.mozilla.xul+xml"); + +require_once('../../config/vilesci.config.inc.php'); +echo ''."\n"; +echo ''; + +echo ''; +echo ''; + +$stunden = $_GET['stunde']; +$stplids = $_GET['stplid']; +$datum = $_GET['datum']; +?> +)' + > + +'; break; } diff --git a/include/functions.inc.php b/include/functions.inc.php index 8def2d31d..86ebfba73 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -322,6 +322,18 @@ function loadVariables($user) global $emailadressentrennzeichen; $emailadressentrennzeichen=','; } + + if(!isset($alle_unr_mitladen)) + { + global $alle_unr_mitladen; + $alle_unr_mitladen='false'; + } + if(!isset($allow_lehrstunde_drop)) + { + global $allow_lehrstunde_drop; + $allow_lehrstunde_drop='false'; + } + return $error_msg; } diff --git a/include/gruppe.class.php b/include/gruppe.class.php index 5cb5f7331..8e4d6ffbd 100644 --- a/include/gruppe.class.php +++ b/include/gruppe.class.php @@ -354,14 +354,14 @@ class gruppe extends basis_db $this->errormsg = 'Aktiv muss ein boolscher Wert sein'; return false; } - if(mb_strlen($this->updatevon)>16) + if(mb_strlen($this->updatevon)>32) { - $this->errormsg = 'Updatevon darf nicht laenger als 16 Zeichen sein'; + $this->errormsg = 'Updatevon darf nicht laenger als 32 Zeichen sein'; return false; } - if(mb_strlen($this->insertvon)>16) + if(mb_strlen($this->insertvon)>32) { - $this->errormsg = 'Insertvon darf nicht laenger als 16 Zeichen sein'; + $this->errormsg = 'Insertvon darf nicht laenger als 32 Zeichen sein'; return false; } @@ -568,4 +568,4 @@ class gruppe extends basis_db return $gruppe_kurzbz; } } -?> \ No newline at end of file +?> diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php index 13d52dd5b..39876b229 100644 --- a/include/lehreinheit.class.php +++ b/include/lehreinheit.class.php @@ -21,6 +21,7 @@ */ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/log.class.php'); +require_once(dirname(__FILE__).'/../config/global.config.inc.php'); class lehreinheit extends basis_db { @@ -492,7 +493,7 @@ class lehreinheit extends basis_db foreach ($this->mitarbeiter_uid as $lkt) $sql_lkt.="OR mitarbeiter_uid=".$this->db_add_param($lkt).' '; $sql_lkt=mb_substr($sql_lkt,3); - $sql_lkt="(($sql_lkt) AND mitarbeiter_uid!='_DummyLektor')"; + $sql_lkt="(($sql_lkt) AND mitarbeiter_uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))"; // Datenbank abfragen $sql_query="SELECT $stpl_id FROM $stpl_table @@ -554,7 +555,7 @@ class lehreinheit extends basis_db foreach ($this->mitarbeiter_uid as $lkt) $sql_lkt.="OR uid='$lkt' "; $sql_lkt=mb_substr($sql_lkt,3); - $sql_lkt="(($sql_lkt) AND uid!='_DummyLektor')"; + $sql_lkt="(($sql_lkt) AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))"; $sql_query="SELECT reservierung_id AS id, uid AS lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, gruppe_kurzbz, datum, stunde FROM lehre.vw_reservierung WHERE datum=".$this->db_add_param($datum)." AND stunde=".$this->db_add_param($stunde)." diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php index e274b9ea0..ba3fe65d1 100644 --- a/include/lehrstunde.class.php +++ b/include/lehrstunde.class.php @@ -232,14 +232,16 @@ class lehrstunde extends basis_db * @param gruppe_kurzbz * */ - public function load_lehrstunden($type, $datum_von, $datum_bis, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $gruppe_kurzbz=NULL, $stpl_view='stundenplan', $idList=null, $fachbereich_kurzbz=null, $lva=NULL) + public function load_lehrstunden($type, $datum_von, $datum_bis, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $gruppe_kurzbz=NULL, $stpl_view='stundenplan', $idList=null, $fachbereich_kurzbz=null, $lva=NULL, $alle_unr_mitladen=false) { $num_rows_einheit=0; // Parameter Checken // Bezeichnung der Stundenplan-Tabelle und des Keys $stpl_id=$stpl_view.TABLE_ID; + $stpl_view_ohneschema=VIEW_BEGIN.$stpl_view; $stpl_view='lehre.'.VIEW_BEGIN.$stpl_view; + // Datum im Format YYYY-MM-TT ? if (!preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/",$datum_von) ) { @@ -338,9 +340,13 @@ class lehrstunde extends basis_db // Stundenplandaten ermitteln // Abfrage generieren - $sql_query_stdplan='SELECT * FROM '.$stpl_view; + if ($type!='idList') { + if($alle_unr_mitladen) + $sql_query_stdplan='SELECT '.$stpl_id.', datum, stunde, unr FROM '.$stpl_view; + else + $sql_query_stdplan='SELECT * FROM '.$stpl_view; $sql_query_lva=""; $sql_query=" WHERE datum>=".$this->db_add_param($datum_von)." AND datum<".$this->db_add_param($datum_bis); if ($type == 'lva') @@ -372,7 +378,7 @@ class lehrstunde extends basis_db if ($type=='student') $sql_query.=' AND gruppe_kurzbz IS NULL'; $sql_query.=' )'; - + for ($i=0;$i<$num_rows_einheit;$i++) { $row=$this->db_fetch_object($result_einheit,$i); @@ -382,16 +388,37 @@ class lehrstunde extends basis_db } $sql_query_orderby=' ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid'; $sql_query_stdplan.=$sql_query . $sql_query_lva . $sql_query_orderby; + + // Wenn aktiviert, werden alle Stunden mit der gleichen UNR geladen die zur selben Zeit stattfinden + if($alle_unr_mitladen) + { + $sql_query_stdplan=" + WITH lvplan(id, datum, stunde, unr) as + ( + $sql_query_stdplan + ) + SELECT + $stpl_view_ohneschema.* + FROM + ".$stpl_view.", lvplan + WHERE + $stpl_view_ohneschema.datum=lvplan.datum + AND $stpl_view_ohneschema.stunde=lvplan.stunde + AND $stpl_view_ohneschema.unr=lvplan.unr + ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid + "; + } } else { + $sql_query_stdplan='SELECT * FROM '.$stpl_view; $sql_query=''; foreach ($idList as $id) $sql_query.=" OR ".$stpl_id."=".$this->db_add_param($id); $sql_query=mb_substr($sql_query,3); $sql_query_stdplan.=' WHERE'.$sql_query; } - +//die($sql_query_stdplan); //Datenbankabfrage if (!$this->db_query($sql_query_stdplan)) { @@ -436,8 +463,9 @@ class lehrstunde extends basis_db $stunde->updatevon=$row->updatevon; $stunde->reservierung=false; $this->lehrstunden[$i]=$stunde; + } - + // Reservierungsdaten ermitteln if ($type!='idList' && $type!='fachbereich') { @@ -572,8 +600,8 @@ class lehrstunde extends basis_db // Datenbank abfragen $sql_query="SELECT $stpl_id AS id, lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, gruppe_kurzbz, datum, stunde FROM $stpl_table WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde)." AND (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." "; - if ($this->lektor_uid!='_DummyLektor') - $sql_query.=" OR (uid=".$this->db_add_param($this->lektor_uid)." AND uid!='_DummyLektor') "; + if (!in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER))) + $sql_query.=" OR (uid=".$this->db_add_param($this->lektor_uid)." AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))"; //Wenn eine Kollisionspruefung auf Studentenebene durchgefuehrt wird, werden die LVB nicht gecheckt if($kollision_student=='false') @@ -605,13 +633,15 @@ class lehrstunde extends basis_db if ($anz==0) { // Zeitsperren pruefen - if($ignore_zeitsperre=='false' && $this->lektor_uid!='_DummyLektor' && $this->kollision_zeitsperre()) + if($ignore_zeitsperre=='false' && !in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)) && $this->kollision_zeitsperre()) return true; // Reservierungen pruefen if ($ignore_reservierung=='false' && $this->kollision_reservierung()) return true; + if($this->kollision_ressource()) + return true; return false; } else @@ -622,6 +652,36 @@ class lehrstunde extends basis_db } } + /** + * Prueft ob eine Kollision mit den zugeteilten Ressourcen vorhanden ist + * + * @return boolean true=kollision, false=keine kollision + */ + public function kollision_ressource() + { + $qry = "SELECT + tbl_betriebsmittel.beschreibung, tbl_stundenplandev.ort_kurzbz + FROM + lehre.tbl_stundenplan_betriebsmittel + JOIN lehre.tbl_stundenplandev USING(stundenplandev_id) + JOIN wawi.tbl_betriebsmittel USING(betriebsmittel_id) + WHERE + tbl_stundenplandev.datum=".$this->db_add_param($this->datum)." + AND tbl_stundenplandev.stunde=".$this->db_add_param($this->stunde)." + AND betriebsmittel_id IN(SELECT betriebsmittel_id FROM lehre.tbl_stundenplan_betriebsmittel WHERE stundenplandev_id=".$this->db_add_param($this->stundenplan_id).")"; + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->errormsg='Kollision (Ressource)'.$row->beschreibung.'|'.$row->ort_kurzbz; + return true; + } + return false; + } + return false; + } + /** * Prueft ob eine Kollision mit den Zeitsperren vorhanden ist * @@ -668,8 +728,8 @@ class lehrstunde extends basis_db stunde=".$this->db_add_param($this->stunde)." AND (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." OR "; - if ($this->lektor_uid!='_DummyLektor') - $sql_query.="(uid=".$this->db_add_param($this->lektor_uid)." AND uid!='_DummyLektor') OR "; + if (!in_array($this->lektor_uid, unserialize(KOLLISIONSFREIE_USER))) + $sql_query.="(uid=".$this->db_add_param($this->lektor_uid)." AND uid not in(".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER)).")) OR "; $sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem); if ($this->ver!=null && $this->ver!='' && $this->ver!=' ') diff --git a/include/organisationseinheit.class.php b/include/organisationseinheit.class.php index 2364c28bd..a82754d48 100644 --- a/include/organisationseinheit.class.php +++ b/include/organisationseinheit.class.php @@ -691,5 +691,38 @@ class organisationseinheit extends basis_db return false; } } + + /** + * Gibt alle Standorte zurück + * @param $aktiv + * @param $lehre + * @return boolean|array false im Fehlerfall, ansonsten ein Array + */ + public function getAllStandorte($aktiv=null, $lehre=null) + { + $result = array(); + $qry = "SELECT DISTINCT standort FROM public.tbl_organisationseinheit WHERE standort IS NOT NULL"; + + if(!is_null($aktiv)) + $qry.=" AND aktiv=".$this->db_add_param($aktiv, FHC_BOOLEAN); + + if(!is_null($lehre)) + $qry.=" AND lehre=".$this->db_add_param($lehre, FHC_BOOLEAN); + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $result[] = $row->standort; + } + + return $result; + } + else + { + $this->errormsg = 'Fehler beim Laden der Standorte'; + return false; + } + } } ?> diff --git a/include/studiengang.class.php b/include/studiengang.class.php index 69f2e8ae2..1dca2253b 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -237,7 +237,7 @@ class studiengang extends basis_db */ public function getAllForBewerbung() { - $qry = 'SELECT DISTINCT studiengang_kz, typ, organisationseinheittyp_kurzbz, studiengangbezeichnung ' + $qry = 'SELECT DISTINCT studiengang_kz, typ, organisationseinheittyp_kurzbz, studiengangbezeichnung, standort ' . 'FROM lehre.vw_studienplan ' . 'WHERE onlinebewerbung IS TRUE ' . 'ORDER BY studiengangbezeichnung ASC'; diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 696703df4..64ac1c2b5 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -48,26 +48,6 @@ class studiensemester extends basis_db $this->load($studiensemester_kurzbz); } - public function __get($property) - { - if(property_exists($this, $property)) - { - return $this->$property; - } - else - { - return NULL; - } - } - - public function __set($property, $value) - { - if(property_exists($this, $property)) - { - $this->$property = $value; - } - } - /** * Laedt das Studiensemester mit der uebergebenen Kurzbz * diff --git a/include/variable.class.php b/include/variable.class.php index 95dc966c4..e1ce0809a 100644 --- a/include/variable.class.php +++ b/include/variable.class.php @@ -268,6 +268,13 @@ class variable extends basis_db if (!isset($this->variable->max_kollision)) $this->variable->max_kollision='0'; + + if (!isset($this->variable->alle_unr_mitladen)) + $this->variable->alle_unr_mitladen='false'; + + if (!isset($this->variable->allow_lehrstunde_drop)) + $this->variable->allow_lehrstunde_drop='false'; + return true; } diff --git a/include/wawi_bestelldetail.class.php b/include/wawi_bestelldetail.class.php index c263b72ca..089194648 100644 --- a/include/wawi_bestelldetail.class.php +++ b/include/wawi_bestelldetail.class.php @@ -198,6 +198,11 @@ class wawi_bestelldetail extends basis_db $this->errormsg="Ungültige MWSt. eingegeben."; return false; } + if($this->menge!='' && !fmod($this->menge,1)==0) + { + $this->errormsg = 'Menge muss eine ganze Zahl sein'; + return false; + } return true; } diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php index c924f098c..4aac262b2 100644 --- a/include/wochenplan.class.php +++ b/include/wochenplan.class.php @@ -42,6 +42,7 @@ require_once(dirname(__FILE__).'/phrasen.class.php'); require_once(dirname(__FILE__).'/globals.inc.php'); require_once(dirname(__FILE__).'/sprache.class.php'); require_once(dirname(__FILE__).'/functions.inc.php'); +require_once(dirname(__FILE__).'/betriebsmittel.class.php'); class wochenplan extends basis_db { @@ -374,7 +375,7 @@ class wochenplan extends basis_db * @param datum Datum eines Tages in der angeforderten Woche * @return true oder false */ - public function load_week($datum, $stpl_view='stundenplan') + public function load_week($datum, $stpl_view='stundenplan', $alle_unr_mitladen=false) { // Pruefung der Attribute if (!isset($this->type)) @@ -398,7 +399,7 @@ class wochenplan extends basis_db // Stundenplandaten ermittlen $this->wochenplan=new lehrstunde(); - $anz=$this->wochenplan->load_lehrstunden($this->type,$this->datum_begin,$this->datum_end,$this->pers_uid,$this->ort_kurzbz,$this->stg_kz,$this->sem,$this->ver,$this->grp,$this->gruppe_kurzbz, $stpl_view, null,$this->fachbereich_kurzbz,$this->lva); + $anz=$this->wochenplan->load_lehrstunden($this->type,$this->datum_begin,$this->datum_end,$this->pers_uid,$this->ort_kurzbz,$this->stg_kz,$this->sem,$this->ver,$this->grp,$this->gruppe_kurzbz, $stpl_view, null,$this->fachbereich_kurzbz,$this->lva, $alle_unr_mitladen); if ($anz<0) { $this->errormsg=$this->wochenplan->errormsg; @@ -612,7 +613,7 @@ class wochenplan extends basis_db echo '">'; echo '

'; //Kalenderjump mit Hoverbox - jahreskalenderjump_hoverbox($this->link); + $this->jahreskalenderjump_hoverbox($this->link); return true; } @@ -845,7 +846,7 @@ class wochenplan extends basis_db $uEinheiten=array(); for($n=0;$nsearchForId($unr[$n], $uEinheiten); if($unrIndex===FALSE) { /* @@ -1108,6 +1109,7 @@ class wochenplan extends basis_db // Kontext Menue echo ' + @@ -1207,7 +1209,7 @@ class wochenplan extends basis_db $tooltip .= $bezeichnung; } } - echo ''; - + if (isset($this->std_plan[$i][$j][0]->lehrfach)) { // Daten aufbereiten @@ -1229,6 +1231,7 @@ class wochenplan extends basis_db unset($lvb); //$lvb=array(); $kollision=-1; + unset($kollisionsmeldungen); if (isset($a_unr)) unset($a_unr); foreach ($this->std_plan[$i][$j] as $lehrstunde) @@ -1279,9 +1282,16 @@ class wochenplan extends basis_db } $qry.="ORDER BY datum, stunde, student_uid LIMIT 1;"; - if($this->db_query($qry)) - if($this->db_num_rows()>0) + if($stud_result = $this->db_query($qry)) + { + if($this->db_num_rows($stud_result)>0) + { $kollision++; + $stud_row = $this->db_fetch_object($stud_result); + foreach($a_unr as $kollision_unr) + $kollisionsmeldungen[$kollision_unr][]=' Studentenkollision '.$stud_row->student_uid; + } + } } else @@ -1295,26 +1305,29 @@ class wochenplan extends basis_db $a=0; foreach ($a_unr as $unr) { - array_unique($a_lvb[$unr]); + $lvb_unr_arr[$a]=$unr; $lvb[$a++]=$a_lvb[$unr]; } - - for ($a=0;$astd_plan[$i][$j] as $lehrstunde) { if ($lehrstunde->unr==$unr) @@ -1374,17 +1395,34 @@ class wochenplan extends basis_db $reservierung=true; } else + { $paramList.='&stundenplan_id'.$z++.'='.$lehrstunde->stundenplan_id; - if(isset($lehrstunde->farbe)) + $stundenplan_ids[]=$lehrstunde->stundenplan_id; + } + if(isset($lehrstunde->farbe) && $farbe=='') $farbe=$lehrstunde->farbe; $titel=htmlspecialchars($lehrstunde->titel); $anmerkung=htmlspecialchars($lehrstunde->anmerkung); + $tooltip_anmerkung[]=$titel.' '.$anmerkung; } if(isset($raumcheck[$lehrstunde->ort]) && $raumcheck[$lehrstunde->ort]!=$lehrstunde->unr) + { $kollision++; + $kollisionsmeldungen[$lehrstunde->unr][]=" Ort ".$lehrstunde->ort; + $kollisionsmeldungen[$raumcheck[$lehrstunde->ort]][]=" Ort ".$lehrstunde->ort; + } else $raumcheck[$lehrstunde->ort]=$lehrstunde->unr; + + if(isset($lktcheck[$lehrstunde->lektor]) && $lktcheck[$lehrstunde->lektor]!=$lehrstunde->unr) + { + $kollision++; + $kollisionsmeldungen[$lehrstunde->unr][]=" LektorIn ".$lehrstunde->lektor; //." ".$lehrstunde->unr."!=".$lktcheck[$lehrstunde->lektor]; + $kollisionsmeldungen[$lktcheck[$lehrstunde->lektor]][]=" LektorIn ".$lehrstunde->lektor; //." ".$lehrstunde->unr."!=".$lktcheck[$lehrstunde->lektor]; + } + else + $lktcheck[$lehrstunde->lektor]=$lehrstunde->unr; } // Lektoren //if ($this->type!='lektor') @@ -1434,7 +1472,8 @@ class wochenplan extends basis_db $updatevonam.=$u.' '; // Blinken oder nicht ? - if ($kollision) + if (isset($kollisionsmeldungen[$unr]) + || (isset($kollisionsmeldung) && count($kollisionsmeldungen, COUNT_RECURSIVE)==0 && $kollision>0)) { $blink_ein='';// .$kollision; $blink_aus=''; @@ -1447,10 +1486,15 @@ class wochenplan extends basis_db $stg_obj = new studiengang(); $stg_obj->load($stg_kz); - + $tooltip_anmerkung = array_unique($tooltip_anmerkung); + $tooltip_gesamt = '('.$updatevonam.') '.implode(',',$tooltip_anmerkung); + + if(isset($kollisionsmeldungen[$unr])) + $tooltip_gesamt .= ' Kollision wegen:'.implode(',',array_unique($kollisionsmeldungen[$unr])); + // Ausgabe echo '
bezeichnung_kurzbezeichnung_langverplanenbeschreibungtbl_stundenplan_betriebsmittelstundenplan_betriebsmittel_idbetriebsmittel_idstundenplandev_idinsertamuminsertvonanmerkungKey116fk_betriebsmittel_stundenplan_betriebsmittelfk_stundenplandev_stundenplan_betriebsmittel
   + > +
   + > +
diff --git a/vilesci/personen/anwesenheitslisten_barcode.php b/vilesci/personen/anwesenheitslisten_barcode.php index 459e0210b..d6468ac32 100644 --- a/vilesci/personen/anwesenheitslisten_barcode.php +++ b/vilesci/personen/anwesenheitslisten_barcode.php @@ -123,6 +123,7 @@ $studiengang->getAll("typ, kurzbz"); Studiengang diff --git a/wawi/bestellung.php b/wawi/bestellung.php index 9e8300324..be61d092b 100644 --- a/wawi/bestellung.php +++ b/wawi/bestellung.php @@ -2184,7 +2184,12 @@ if($_GET['method']=='update') var brutto = $("#brutto_"+i).val(); brutto = brutto.replace(",","."); var sort = $("#sort_"+i).val(); - + + if(menge!="" && !(menge%1==0)) + { + alert("Menge muss eine ganze Zahl sein"); + return false; + } var detailid= $("#bestelldetailid_"+i).val(); if(detailid != "") {