Merge branch 'TempusLektorFilter'

This commit is contained in:
Manfred Kindl
2019-10-25 19:55:52 +02:00
7 changed files with 141 additions and 66 deletions
+16 -16
View File
@@ -103,24 +103,24 @@ var LektorTreeListener =
function LektorTreeSelectMitarbeiter()
{
var tree=document.getElementById('tree-lektor');
var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
if(LektorTreeOpenStudiengang!=null)
if (tree.view != null)
{
for(var i=0;i<items;i++)
{
//Lehreinheit_id der row holen
col = tree.columns ? tree.columns["studiengang_kz"] : "studiengang_kz";
var studiengang_kz=tree.view.getCellText(i,col);
if(studiengang_kz == LektorTreeOpenStudiengang)
{
tree.view.toggleOpenState(i);
break;
var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln
if (LektorTreeOpenStudiengang != null) {
for (var i = 0; i < items; i++) {
//Lehreinheit_id der row holen
col = tree.columns ? tree.columns["studiengang_kz"] : "studiengang_kz";
var studiengang_kz = tree.view.getCellText(i, col);
if (studiengang_kz == LektorTreeOpenStudiengang) {
tree.view.toggleOpenState(i);
break;
}
}
}
//nach dem laden der daten wieder ganz oben im tree positionieren da es sonst vorkommt, dass
//der scrollbalken unterhalb aller eintraege rutscht und dann nichts mehr im tree sichtbar ist.
//(funktioniert anscheinend auch nur mit setTimeout)
window.setTimeout("document.getElementById('tree-lektor').treeBoxObject.scrollToRow(0)",10);
//nach dem laden der daten wieder ganz oben im tree positionieren da es sonst vorkommt, dass
//der scrollbalken unterhalb aller eintraege rutscht und dann nichts mehr im tree sichtbar ist.
//(funktioniert anscheinend auch nur mit setTimeout)
window.setTimeout("document.getElementById('tree-lektor').treeBoxObject.scrollToRow(0)", 10);
}
}
}
@@ -63,6 +63,59 @@ function onLVAFilter()
vboxLehrveranstalungPlanung.setAttribute('datasources',datasources);
}
// LVA-Panel aktualisieren
function onLektorRefresh()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var treeLektorenTree=document.getElementById('tree-lektor');
// Input-Feld leeren
document.getElementById('tempus-lektor-filter').value = '';
//var datasources=vboxLehrveranstalungPlanung.getAttribute('datasources');
var url = '<?php echo APP_ROOT; ?>rdf/mitarbeiter.rdf.php?user=user&'+gettimestamp();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
var datasource = rdfService.GetDataSource(url);
var oldDatasources = treeLektorenTree.database.GetDataSources();
datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
treeLektorenTree.database.RemoveDataSource(oldDatasources.getNext());
treeLektorenTree.database.AddDataSource(datasource);
treeLektorenTree.builder.rebuild();
}
// Lektorenliste filtern
function onLektorFilter()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var filter=document.getElementById('tempus-lektor-filter').value;
var treeLektorenTree=document.getElementById('tree-lektor');
if(filter.length>2)
{
var url = '<?php echo APP_ROOT; ?>rdf/mitarbeiter.rdf.php?filter='+encodeURIComponent(filter)+'&'+gettimestamp();
var oldDatasources = treeLektorenTree.database.GetDataSources();
//Refresh damit die entfernten DS auch wirklich entfernt werden
treeLektorenTree.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
if(typeof(filter)=='undefined')
var datasource = rdfService.GetDataSource(url);
else
var datasource = rdfService.GetDataSourceBlocking(url);
datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
treeLektorenTree.database.RemoveDataSource(oldDatasources.getNext());
treeLektorenTree.database.AddDataSource(datasource);
if(typeof(filter)!='undefined')
treeLektorenTree.builder.rebuild();
}
}
// Liefert die Sortierreihenfolge der Lehrstunden
function LehrstundeGetSortOrder()
{
+1 -1
View File
@@ -301,7 +301,7 @@ echo '<?xml-stylesheet href="datepicker/datepicker.css" type="text/css"?>';
<tree id="tree-verband" />
<tree id="tree-ort" />
<vbox id="vbox-fachbereich" />
<tree id="tree-lektor" />
<vbox id="vbox-lektor" />
</tabpanels>
</tabbox>
<splitter collapse="before" persist="state">
+4 -1
View File
@@ -282,7 +282,10 @@ function onLektorSelect(event)
var stg_idx = tree.view.getParentIndex(tree.currentIndex);
var col = tree.columns ? tree.columns["studiengang_kz"] : "studiengang_kz";
var stg_kz=tree.view.getCellText(stg_idx,col);
if (stg_idx != -1)
var stg_kz=tree.view.getCellText(stg_idx,col);
else
var stg_kz = 0;
document.getElementById('LehrveranstaltungEditor').setAttribute('stg_kz',stg_kz);
document.getElementById('LehrveranstaltungEditor').setAttribute('uid',uid);
+62 -45
View File
@@ -119,52 +119,69 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-semester-overlay.xu
</rule>
</template>
</tree>
<tree id="tree-lektor" onmouseup="onLektorSelect(event);"
seltype="multi" hidecolumnpicker="false" flex="1"
enableColumnDrag="true"
ondraggesture="nsDragAndDrop.startDrag(event,mitarbeiterDDObserver);"
ondrop="nsDragAndDrop.drop(event,LektorFunktionDDObserver)"
ondragdrop="nsDragAndDrop.drop(event,LektorFunktionDDObserver)"
ondragover="nsDragAndDrop.dragOver(event,LektorFunktionDDObserver)"
ondragenter="nsDragAndDrop.dragEnter(event,LektorFunktionDDObserver)"
ondragexit="nsDragAndDrop.dragExit(event,LektorFunktionDDObserver)"
datasources="rdf:null" ref="http://www.technikum-wien.at/mitarbeiter/liste"
context="fasoverlay-lektor-tree-popup"
>
<treecols>
<treecol id="kurzbz" label="Kuerzel" flex="2" primary="true" />
<splitter class="tree-splitter"/>
<treecol id="nachname" label="Nachname" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="vorname" label="Vorname" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="titel" label="Titel" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="uid" label="UID" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="studiengang_kz" label="Studiengangkz" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="tree-lektor-fixangestellt" label="Fixangestellt" flex="1" hidden="true"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#kurzbz"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpre"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#studiengang_kz"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#fixangestellt"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<vbox id="vbox-lektor">
<hbox>
<!-- <spacer flex="1" />-->
<toolbox>
<toolbar id="toolbarLektorTreeFilter" tbautostretch="always" persist="collapsed">
<toolbarbutton id="toolbarbuttonLektorTreeRefresh"
image="../skin/images/refresh.png"
oncommand="onLektorRefresh();"
tooltiptext="Neu laden"
/>
<textbox id="tempus-lektor-filter" size="30" oninput="onLektorFilter()" flex="1"/>
</toolbar>
</toolbox>
<!-- <spacer flex="1" />-->
</hbox>
<tree id="tree-lektor" onmouseup="onLektorSelect(event);"
seltype="multi" hidecolumnpicker="false" flex="1"
enableColumnDrag="true"
ondraggesture="nsDragAndDrop.startDrag(event,mitarbeiterDDObserver);"
ondrop="nsDragAndDrop.drop(event,LektorFunktionDDObserver)"
ondragdrop="nsDragAndDrop.drop(event,LektorFunktionDDObserver)"
ondragover="nsDragAndDrop.dragOver(event,LektorFunktionDDObserver)"
ondragenter="nsDragAndDrop.dragEnter(event,LektorFunktionDDObserver)"
ondragexit="nsDragAndDrop.dragExit(event,LektorFunktionDDObserver)"
datasources="rdf:null" ref="http://www.technikum-wien.at/mitarbeiter/liste"
context="fasoverlay-lektor-tree-popup"
>
<treecols>
<treecol id="kurzbz" label="Kuerzel" flex="2" primary="true" />
<splitter class="tree-splitter"/>
<treecol id="nachname" label="Nachname" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="vorname" label="Vorname" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="titel" label="Titel" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="uid" label="UID" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="studiengang_kz" label="Studiengangkz" flex="1" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="tree-lektor-fixangestellt" label="Fixangestellt" flex="1" hidden="true"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#kurzbz"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#nachname"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vorname"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpre"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#studiengang_kz"/>
<treecell properties="Lektor_rdf:http://www.technikum-wien.at/mitarbeiter/rdf#aktiv" label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#fixangestellt"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
</vbox>
<vbox id="vbox-main">
<popupset>
+4 -2
View File
@@ -404,7 +404,7 @@ class mitarbeiter extends benutzer
*/
public function getMitarbeiterStg($lektor=true,$fixangestellt, $stge, $fkt_kurzbz, $order='studiengang_kz, nachname, vorname, kurzbz', $datum_von='', $datum_bis='')
{
$sql_query='SELECT DISTINCT campus.vw_mitarbeiter.*, studiengang_kz FROM campus.vw_mitarbeiter
$sql_query='SELECT DISTINCT campus.vw_mitarbeiter.*, studiengang_kz, tbl_studiengang.typ, tbl_studiengang.kurzbz AS stg_kurzbz FROM campus.vw_mitarbeiter
JOIN public.tbl_benutzerfunktion USING (uid) JOIN public.tbl_studiengang USING(oe_kurzbz)
WHERE true';
if(!is_null($lektor))
@@ -833,7 +833,9 @@ class mitarbeiter extends benutzer
*/
public function getMitarbeiterFilter($filter)
{
$qry = "SELECT * FROM campus.vw_mitarbeiter WHERE lower(nachname) ~* lower(".$this->db_add_param($filter).") OR uid ~* ".$this->db_add_param($filter).';';
$qry = "SELECT * FROM campus.vw_mitarbeiter WHERE lower(nachname) ~* lower(".$this->db_add_param($filter).") OR uid ~* ".$this->db_add_param($filter);
$qry .= " ORDER BY nachname, vorname, kurzbz;";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
+1 -1
View File
@@ -166,7 +166,7 @@ if($lehrveranstaltung_id==null && $filter==null && $mitarbeiter_uid==null)
{
$stge=$bb->getStgKz('admin');
$stge=array_merge($stge, $bb->getStgKz('assistenz'));
$ma=$mitarbeiter->getMitarbeiterStg($lektor,$fixangestellt,$stge, 'lkt');
$ma=$mitarbeiter->getMitarbeiterStg($lektor,$fixangestellt,$stge, 'lkt', 'typ, stg_kurzbz, nachname, vorname, vw_mitarbeiter.kurzbz');
$laststg=-1;
if(count($ma)>0)
{