diff --git a/content/lvplanung/stpl-week-overlay.js.php b/content/lvplanung/stpl-week-overlay.js.php index beebfa2ef..48cd0b00a 100644 --- a/content/lvplanung/stpl-week-overlay.js.php +++ b/content/lvplanung/stpl-week-overlay.js.php @@ -41,11 +41,11 @@ function onLVAFilter() var filter=document.getElementById('tempus-lva-filter').value; var vorher=''; var nachher=''; - + // LVAs var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung'); var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources'); - + var orig=datasources.substring(0); var idx = datasources.indexOf("&filter=") if(idx!=-1) @@ -56,13 +56,14 @@ function onLVAFilter() nachher=datasources.slice(idx2); datasources=vorher+nachher; } - + datasources=datasources+"&filter="+encodeURIComponent(filter); - + //alert('Orig:'+orig+' Source: '+datasources+' Vorher:'+vorher+' Nachher:'+nachher); vboxLehrveranstalungPlanung.setAttribute('datasources',datasources); } + // LVA-Panel aktualisieren function onLektorRefresh() { @@ -121,7 +122,7 @@ function LehrstundeGetSortOrder() { var toolbar = document.getElementById('toolbarTimeTableSort'); var tbbuttons = toolbar.getElementsByTagName('toolbarbutton'); - + for each(var button in tbbuttons) { if(button.getAttribute('checked')=='true') @@ -132,17 +133,61 @@ function LehrstundeGetSortOrder() return 'stundenDESC'; } +// Setzt den Vertragsfilter zurueck +function LVAFilterReset() +{ + //Filtermarkierung von allen entfernen + var toolbar = document.getElementById('toolbarTimeTableFilterVertrag'); + var tbbuttons = toolbar.getElementsByTagName('toolbarbutton'); + + for each(var button in tbbuttons) + { + if(button.id) + button.setAttribute('checked','false'); + } +} + +// LVA-Panel auf Vertragsstatus filtern +function onLVAFilterVertrag(item) +{ + var vorher=''; + var nachher=''; + var vertragsstatus=item.getAttribute('value'); + + LVAFilterReset(); + //Element als gedrueckt markieren + item.setAttribute('checked','true'); + + // LVAs + var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung'); + var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources'); + + var orig=datasources.substring(0); + var idx = datasources.indexOf("&vertrag=") + if(idx!=-1) + { + idx2=datasources.indexOf("&",idx+10); + vorher=datasources.slice(0,idx); + if(idx2!=-1) + nachher=datasources.slice(idx2); + datasources=vorher+nachher; + } + + datasources=datasources+"&vertrag="+encodeURIComponent(vertragsstatus); + vboxLehrveranstalungPlanung.setAttribute('datasources',datasources); +} + // LVA-Panel filtern function onLVASort(item) { var vorher=''; var nachher=''; var order=item.getAttribute('value'); - + //Sortiermarkierung von allen entfernen var toolbar = document.getElementById('toolbarTimeTableSort'); var tbbuttons = toolbar.getElementsByTagName('toolbarbutton'); - + for each(var button in tbbuttons) { if(button.id) @@ -150,11 +195,11 @@ function onLVASort(item) } //Element als gedrueckt markieren item.setAttribute('checked','true'); - + // LVAs var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung'); var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources'); - + var orig=datasources.substring(0); var idx = datasources.indexOf("&order=") if(idx!=-1) @@ -165,9 +210,9 @@ function onLVASort(item) nachher=datasources.slice(idx2); datasources=vorher+nachher; } - + datasources=datasources+"&order="+encodeURIComponent(order); - + //alert('Orig:'+orig+' Source: '+datasources+' Vorher:'+vorher+' Nachher:'+nachher); vboxLehrveranstalungPlanung.setAttribute('datasources',datasources); } @@ -301,7 +346,7 @@ function StplSearchRoom(target) saveScrollPositionTimeTableWeek(); if(typeof(target)==='undefined') target = document.popupNode; - + var contentFrame=document.getElementById('iframeTimeTableWeek'); var daten=document.getElementById('TimeTableWeekData'); var datum=parseInt(daten.getAttribute("datum")); @@ -316,7 +361,7 @@ function StplSearchRoom(target) var aktion=target.getAttribute("aktion"); aktion+="_single_search"; var idList=target.getAttribute("idList"); - + var attributes="\n?type="+type+"&datum="+datum+"&ort="+ort+"&pers_uid="+pers_uid+"\n&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"\n&gruppe="+gruppe; attributes+=idList+"&aktion="+aktion; var url = "content/lvplanung/timetable-week.xul.php"; @@ -336,7 +381,7 @@ function TimeTableWeekMarkiere(item) if(!item) { items = document.getElementsByTagName('button'); - + for each(var button in items) { if(button.id && button.id.startsWith('buttonSTPL')) @@ -346,7 +391,7 @@ function TimeTableWeekMarkiere(item) //button.style.fontStyle='normal'; //button.style.fontWeight='normal'; button.style.border = "1px solid transparent"; - + button.style.MozBorderTopColors='transparent'; button.style.MozBorderLeftColors='transparent'; button.style.MozBorderBottomColors='transparent'; @@ -358,19 +403,19 @@ function TimeTableWeekMarkiere(item) else { item.setAttribute('marked','true'); - + item.style.color='darkred'; //item.style.fontStyle='italic'; //item.style.fontWeight='bold'; - + item.style.border = "1px solid darkred"; - + item.style.MozBorderTopColors='darkred'; item.style.MozBorderLeftColors='darkred'; item.style.MozBorderBottomColors='darkred'; item.style.MozBorderRightColors='darkred'; - - TimeTableWeekLastMarkedItem=item; + + TimeTableWeekLastMarkedItem=item; } } @@ -463,7 +508,7 @@ function TimeTableWeekClick(event) } else if(event.shiftKey) { - //Wenn mit Shift auf eine Stunde geklickt wird, dann werden alle Stunden markiert, + //Wenn mit Shift auf eine Stunde geklickt wird, dann werden alle Stunden markiert, //die zwischen der zuletzt markierten und dieser Stunde liegen start = parseInt(TimeTableWeekLastMarkedItem.id.substring('buttonSTPL'.length)); ende = parseInt(event.target.id.substring('buttonSTPL'.length)); @@ -473,7 +518,7 @@ function TimeTableWeekClick(event) ende = start; start = hlp; } - + for(var i=start;i<=ende;i++) { item = document.getElementById('buttonSTPL'+i); @@ -482,13 +527,13 @@ function TimeTableWeekClick(event) } else { - + //alle markierungen entfernen TimeTableWeekMarkiere(); - + //aktuellen Eintrag markieren TimeTableWeekMarkiere(event.target); - + //Details anzeigen onStplDetail(event); } @@ -510,7 +555,7 @@ function TimeTableWeekDblClick(event) { buttonunr=button.getAttribute('unr'); buttonwochentag=button.getAttribute('wochentag'); - + if(buttonunr==unr && buttonwochentag==wochentag) { TimeTableWeekMarkiere(button); @@ -597,7 +642,7 @@ function STPLDetailSave(dialog) } var url = 'content/tempusDBDML.php'; var req = new phpRequest(url,'',''); - + req.add('type', 'savestundenplaneintrag'); req.add('stundenplan_id', id); @@ -614,7 +659,7 @@ function STPLDetailSave(dialog) req.add('fix', fix); req.add('mitarbeiter_uid', mitarbeiter_uid); req.add('semester',semester); - + var response = req.executePOST(); var val = new ParseReturnValue(response) @@ -630,14 +675,14 @@ function STPLDetailSave(dialog) else { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - + var treeStplDetails=parent.document.getElementById('treeStplDetails'); //alert('url'+STPLlastDetailUrl); treeStplDetails.setAttribute('datasources', ''); treeStplDetails.setAttribute('datasources', STPLlastDetailUrl+"&ts="+gettimestamp()); return true; } - + } // **** @@ -647,7 +692,7 @@ function STPLDetailDelete() { //alert('url'+STPLlastDetailUrl); //return false; - + tree = document.getElementById('treeStplDetails'); if(tree.currentIndex==-1) { @@ -657,15 +702,15 @@ function STPLDetailDelete() var col = tree.columns ? tree.columns["stundenplan_id"] : "stundenplan_id"; var stundenplanid = tree.view.getCellText(tree.currentIndex,col); - + var col = tree.columns ? tree.columns["stpl-details-overlay-lehrstunde-reservierung"] : "stpl-details-overlay-lehrstunde-reservierung"; var reservierung = tree.view.getCellText(tree.currentIndex,col); - + if(confirm('Wollen Sie diesen Datensatz wirklich loeschen?')) { var url = 'content/tempusDBDML.php'; var req = new phpRequest(url,'',''); - + if(reservierung=='true') { req.add('type', 'deletereservierung'); @@ -676,11 +721,11 @@ function STPLDetailDelete() req.add('type', 'deletestundenplaneintrag'); req.add('stundenplan_id', stundenplanid); } - + var response = req.executePOST(); - + var val = new ParseReturnValue(response) - + if (!val.dbdml_return) { if(val.dbdml_errormsg=='') @@ -691,7 +736,7 @@ function STPLDetailDelete() else { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - + var treeStplDetails=parent.document.getElementById('treeStplDetails'); //alert('url'+STPLlastDetailUrl); treeStplDetails.setAttribute('datasources', ''); @@ -758,18 +803,18 @@ function TimetableDeleteEntries() var pers_uid=daten.getAttribute("pers_uid"); var doIt=true; var aktion='stpl_delete_single'; - + doIt=confirm('Es werden die gewaehlten Eintraege aus dem LV-Plan geloescht!\nSind Sie sicher?') var attributes="\n?type="+type+"&datum="+datum+"&ort="+encodeURIComponent(ort)+"&pers_uid="+pers_uid+"\n&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"\n&gruppe="+gruppe; attributes+="&aktion="+aktion; var url = "content/lvplanung/timetable-week.xul.php"; url+=attributes; - + //IDs der Stunden dazuhaengen idList = TimeTableWeekGetMarkedIdList(); url+=idList - + if (url && doIt) location.href=url; } @@ -795,7 +840,7 @@ function BetriebsmittelZuordnen(item) { for(i in stunden) url = url+'&stunde[]='+stunden[i]; - + // Alle StundenplanIDs holen von den Eintraegen die markiert sind var ids = TimeTableWeekGetMarkedIdArray(); for(i in ids) @@ -805,7 +850,7 @@ function BetriebsmittelZuordnen(item) { // Wenn kein eintrag markiert ist, wird der genommen auf den geklickt wurde url = url+'&stunde[]'+item.getAttribute('stunde'); - + idlist = item.getAttribute('idList'); idarr = idlist.split(/&stundenplan_id[0-9]=/); for(i in idarr) @@ -815,6 +860,6 @@ function BetriebsmittelZuordnen(item) url = url+'&stplid[]'+idarr[i]; } - } + } window.open(url,'Details', 'height=350,width=800,left=100,top=100,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes'); } diff --git a/content/lvplanung/stpl-week-overlay.xul.php b/content/lvplanung/stpl-week-overlay.xul.php index 629133913..58d73d47d 100644 --- a/content/lvplanung/stpl-week-overlay.xul.php +++ b/content/lvplanung/stpl-week-overlay.xul.php @@ -22,7 +22,16 @@ */ header("Content-type: application/vnd.mozilla.xul+xml"); include('../../config/vilesci.config.inc.php'); +include('../../config/global.config.inc.php'); +if(defined('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN') && FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN) +{ + $showvertragsfilter = true; +} +else +{ + $showvertragsfilter = false; +} echo ''; echo ''; ?> @@ -100,7 +109,7 @@ echo ' - + - + + + diff --git a/content/tempusoverlay.js.php b/content/tempusoverlay.js.php index 1b796fada..a187f5176 100644 --- a/content/tempusoverlay.js.php +++ b/content/tempusoverlay.js.php @@ -101,6 +101,7 @@ function onVerbandSelect() } var order = LehrstundeGetSortOrder(); + LVAFilterReset(); // LVAs var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung'); var attribute='../rdf/lehreinheit-lvplan.rdf.php'+type+"&stg_kz="+stg_kz+"&sem="+sem+"&ver="+ver+"&grp="+grp+"&gruppe="+gruppe+"&order="+order+"&orgform="+orgform; @@ -196,7 +197,7 @@ function onOrtSelect() url+=attributes+'&'+gettimestamp(); if (url) contentFrame.setAttribute('src', url); - + // Semesterplan var semesterplan=document.getElementById('tabpanels-main'); var panelIndex=semesterplan.getAttribute("selectedIndex"); @@ -238,7 +239,7 @@ function onLektorSelect(event) url+=attributes+'&'+gettimestamp(); if (url) contentFrame.setAttribute('src', url); - + // Semesterplan var semesterplan=document.getElementById('tabpanels-main'); var panelIndex=semesterplan.getAttribute("selectedIndex"); @@ -251,8 +252,9 @@ function onLektorSelect(event) if (url) contentFrame.setAttribute('src', url); } - + var order = LehrstundeGetSortOrder(); + LVAFilterReset(); // LVAs var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung'); vboxLehrveranstalungPlanung.setAttribute('datasources','../rdf/lehreinheit-lvplan.rdf.php?'+"type=lektor&lektor="+uid+"&order="+order+"&"+gettimestamp()); @@ -307,7 +309,7 @@ function onLektorSelect(event) } catch(e) {} - + while(oldDatasources.hasMoreElements()) { treeLV.database.RemoveDataSource(oldDatasources.getNext()); @@ -363,7 +365,7 @@ function onFachbereichSelect(event) col = tree.columns ? tree.columns["fachbereich-treecol-uid"] : "fachbereich-treecol-uid"; var uid=tree.view.getCellText(tree.currentIndex,col); - + //Wenn auf einen Mitarbeiter geklickt wird, dann die kurzbz vom uebergeordneten //Fachbereich holen if(uid!='') @@ -387,7 +389,7 @@ function onFachbereichSelect(event) url+=attributes+'&'+gettimestamp(); if (url) contentFrame.setAttribute('src', url); - + // Semesterplan var semesterplan=document.getElementById('tabpanels-main'); var panelIndex=semesterplan.getAttribute("selectedIndex"); @@ -400,8 +402,9 @@ function onFachbereichSelect(event) if (url) contentFrame.setAttribute('src', url); } - + var order = LehrstundeGetSortOrder(); + LVAFilterReset(); // LVAs var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung'); vboxLehrveranstalungPlanung.setAttribute('datasources','../rdf/lehreinheit-lvplan.rdf.php?'+"type=fachbereich&fachbereich_kurzbz="+kurzbz+"&order="+order+"&"+gettimestamp()); @@ -424,7 +427,7 @@ function onFachbereichSelect(event) } catch(e) {} - + while(oldDatasources.hasMoreElements()) { treeLV.database.RemoveDataSource(oldDatasources.getNext()); @@ -444,4 +447,3 @@ function onFachbereichSelect(event) debug(e); } } - diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php index 5f3b3272d..c6c1c0228 100644 --- a/include/lehreinheit.class.php +++ b/include/lehreinheit.class.php @@ -802,6 +802,9 @@ class lehreinheit extends basis_db $this->lehreinheiten[$row->unr]->lehrverband[]=$row->gruppe_kurzbz; else $this->lehreinheiten[$row->unr]->lehrverband[]=$lvb; + $this->lehreinheiten[$row->unr]->lem[]=array( + 'lehreinheit_id' => $row->lehreinheit_id, + 'mitarbeiter_uid' => $row->lektor_uid); } return true; } diff --git a/include/vertrag.class.php b/include/vertrag.class.php index 4116904ca..b67dd425d 100644 --- a/include/vertrag.class.php +++ b/include/vertrag.class.php @@ -529,7 +529,7 @@ class vertrag extends basis_db FROM lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_vertrag USING (vertrag_id) + JOIN lehre.tbl_vertrag USING (vertrag_id) WHERE vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER)." UNION @@ -728,9 +728,10 @@ class vertrag extends basis_db } /** - * Laedt alle Stati eines Vertrags + * Laedt den letzten Status eines Vertrags * * @param $vertrag_id + * @param $status optional * @return boolean */ public function getStatus($vertrag_id, $status=NULL) @@ -745,32 +746,32 @@ class vertrag extends basis_db if(!is_null($status)) { - $qry .= " AND tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz=".$this->db_add_param($status); + $qry .= " AND tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz=".$this->db_add_param($status); } $qry .= " ORDER BY datum DESC;"; if($result = $this->db_query($qry)) { - if($row = $this->db_fetch_object($result)) - { - $this->vertrag_id = $row->vertrag_id; - $this->vertragsstatus_kurzbz = $row->vertragsstatus_kurzbz; - $this->vertragsstatus_bezeichnung = $row->bezeichnung; - $this->datum = $row->datum; - $this->uid = $row->uid; - $this->insertvon = $row->insertvon; - $this->insertamum = $row->insertamum; - $this->updatevon = $row->updatevon; - $this->updateamum = $row->updateamum; - $this->new=false; - return true; - } - else - { - $this->errormsg = 'Eintrag wurde nicht gefunden'; - return false; - } + if($row = $this->db_fetch_object($result)) + { + $this->vertrag_id = $row->vertrag_id; + $this->vertragsstatus_kurzbz = $row->vertragsstatus_kurzbz; + $this->vertragsstatus_bezeichnung = $row->bezeichnung; + $this->datum = $row->datum; + $this->uid = $row->uid; + $this->insertvon = $row->insertvon; + $this->insertamum = $row->insertamum; + $this->updatevon = $row->updatevon; + $this->updateamum = $row->updateamum; + $this->new=false; + return true; + } + else + { + $this->errormsg = 'Eintrag wurde nicht gefunden'; + return false; + } } else { @@ -1041,7 +1042,7 @@ class vertrag extends basis_db $qry = " UPDATE lehre.tbl_lehreinheitmitarbeiter SET vertrag_id=null WHERE vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER)."; UPDATE lehre.tbl_projektbetreuer SET vertrag_id=null WHERE vertrag_id=".$this->db_add_param($vertrag_id, FHC_INTEGER)."; - INSERT INTO lehre.tbl_vertrag_vertragsstatus(vertragsstatus_kurzbz, vertrag_id, uid, datum, insertamum, insertvon) + INSERT INTO lehre.tbl_vertrag_vertragsstatus(vertragsstatus_kurzbz, vertrag_id, uid, datum, insertamum, insertvon) VALUES(". $this->db_qoute('storno'). ", ". $this->db_add_param($vertrag_id, FHC_INTEGER). ", ". @@ -1123,7 +1124,7 @@ class vertrag extends basis_db */ public function getFalscheBetraege($studiensemester_kurzbz) { - $qry = "SELECT * FROM + $qry = "SELECT * FROM ( SELECT tbl_vertrag.*, tbl_lehreinheitmitarbeiter.mitarbeiter_uid, tbl_lehreinheitmitarbeiter.lehreinheit_id, @@ -1136,7 +1137,7 @@ class vertrag extends basis_db WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." )x - WHERE + WHERE x.semesterstunden * x.stundensatz != x.betrag"; if($result = $this->db_query($qry)) diff --git a/rdf/lehreinheit-lvplan.rdf.php b/rdf/lehreinheit-lvplan.rdf.php index 948e2327b..a7c89ac98 100644 --- a/rdf/lehreinheit-lvplan.rdf.php +++ b/rdf/lehreinheit-lvplan.rdf.php @@ -38,6 +38,8 @@ require_once('../include/lehreinheit.class.php'); require_once('../include/notiz.class.php'); require_once('../include/mitarbeiter.class.php'); require_once('../include/zeitaufzeichnung_gd.class.php'); +require_once('../include/lehreinheitmitarbeiter.class.php'); +require_once('../include/vertrag.class.php'); $uid=get_uid(); $error_msg=''; @@ -90,6 +92,10 @@ if (isset($_GET['orgform'])) $orgform=$_GET['orgform']; else $orgform=null; +if (isset($_GET['vertrag'])) + $vertrag=$_GET['vertrag']; +else + $vertrag=null; //Sortierreihenfolge if(isset($_GET['order'])) @@ -304,6 +310,59 @@ if ($anz>0) else $fixangestellt_info = 'EXT'; + $vertragsstatus_arr = array(); + $vertragsstatus_kurzbz_arr = array(); + // Lehrauftragsstatus ermitteln + foreach ($l->lem as $row_lem) + { + $lem_obj = new lehreinheitmitarbeiter(); + if ($lem_obj->load($row_lem['lehreinheit_id'], $row_lem['mitarbeiter_uid'])) + { + if ($lem_obj->vertrag_id != '') + { + $vertrag_obj = new vertrag(); + if($vertrag_obj->getStatus($lem_obj->vertrag_id)) + { + $vertragsstatus_arr[] = $vertrag_obj->vertragsstatus_bezeichnung; + $vertragsstatus_kurzbz_arr[] = $vertrag_obj->vertragsstatus_kurzbz; + } + } + else + { + $vertragsstatus_arr[] = 'Neu'; + } + } + } + $vertragsstatus = implode(',', array_unique($vertragsstatus_arr)); + + if (!is_null($vertrag) && $vertrag != '') + { + switch($vertrag) + { + // Alle ab Status erteilt herausfiltern + // der rest wird verworfen + case 'erteilt': + if (!in_array('erteilt', $vertragsstatus_kurzbz_arr) + && !in_array('akzeptiert', $vertragsstatus_kurzbz_arr)) + { + continue 2; + } + break; + + // Alle ab Status bestellt herausfiltern + // der rest wird verworfen + case 'bestellt': + if (!in_array('bestellt', $vertragsstatus_kurzbz_arr) + && !in_array('erteilt', $vertragsstatus_kurzbz_arr) + && !in_array('akzeptiert', $vertragsstatus_kurzbz_arr)) + { + continue 2; + } + break; + default: + break; + } + } echo' '.$lvnr.' @@ -335,6 +394,7 @@ if ($anz>0) '.$lehrverband.' '.$anzahl_notizen.' '.$l->lehreinheit_id[0].' + '.$vertragsstatus.' '; } diff --git a/skin/tempus.css b/skin/tempus.css index e70e002d5..f064ccb8c 100644 --- a/skin/tempus.css +++ b/skin/tempus.css @@ -10,6 +10,16 @@ label.tempus_lektor_fix_info font-size: x-small } +label.tempus_vertrag_info +{ + border-top: 1px solid black; + border-bottom: 1px solid black; + font-weight: bold; + padding-left:2px; + padding-right:2px; + font-size: x-small +} + label.kalenderwoche { font-size: medium; @@ -209,3 +219,8 @@ treechildren::-moz-tree-row(makeItMarked) { background-color: #ceffb0; } + +.timetablefilter-vertrag .toolbarbutton-icon { + width: 25px; + height:25px; +}