- Drag und Drop Lektoren zu einem Studiengang möglich

This commit is contained in:
Andreas Österreicher
2007-03-20 17:00:16 +00:00
parent 749e49bc46
commit dab267d74c
10 changed files with 369 additions and 84 deletions
+3 -1
View File
@@ -351,7 +351,9 @@ var nsDragAndDrop =
this.mDragSession = this.mDragService.getCurrentSession();
if (!this.mDragSession)
return false;
this.mDragSession.canDrop = this.mDragSession.sourceNode != aEvent.target;
//oesi - Auskommentiert um das DragnDrop innerhalb des selben Trees zu ermoeglichen
//this.mDragSession.canDrop = this.mDragSession.sourceNode != aEvent.target;
this.mDragSession.canDrop = true;
if ("canDrop" in aDragDropObserver)
this.mDragSession.canDrop &= aDragDropObserver.canDrop(aEvent, this.mDragSession);
return true;
+81
View File
@@ -84,6 +84,7 @@ var lvbgrpDDObserver=
}
};
// ****
// * Observer fuer den Gruppen Tree im Lehreinheiten-Modul
// ****
@@ -193,6 +194,86 @@ var mitarbeiterDDObserver=
}
};
// ****
// * Observer fuer Drop eines Lektors auf einen Studiengang
// ****
var LektorFunktionDDObserver=
{
getSupportedFlavours : function ()
{
var flavours = new FlavourSet();
flavours.appendFlavour("application/tempus-mitarbeiter");
return flavours;
},
onDragEnter: function (evt,flavour,session)
{
},
onDragExit: function (evt,flavour,session)
{
},
onDragOver: function(evt,flavour,session)
{
},
onDrop: function (evt,dropdata,session)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try
{
dragservice_ds = Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
}
catch (e)
{
debug('treeDragDrop: e');
}
var ds = dragservice_ds;
var tree = document.getElementById('tree-lektor')
var row = { }
var col = { }
var child = { }
//Index der Quell-Row ermitteln
tree.treeBoxObject.getCellAt(evt.pageX, evt.pageY, row, col, child)
//Beim Scrollen soll kein DnD gemacht werden
if(col.value==null)
return false;
//Daten ermitteln
col = tree.columns ? tree.columns["studiengang_kz"] : "studiengang_kz";
var stg=tree.view.getCellText(row.value,col);
if(stg!=0)
{
uid=dropdata.data;
var req = new phpRequest('tempusDBDML.php','','');
req.add('type', 'addFunktionToMitarbeiter');
req.add('uid', uid);
req.add('studiengang_kz', stg);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
alert(val.dbdml_errormsg)
}
else
{
//Tree Refreshen
//keine Ahnung warum ich da ein setTimeout brauche
//aber wenns nicht da ist dann stuerzt Mozilla ab?!
//mit seamonkey funktionierts auch ohne!
window.setTimeout(RefreshLektorTree,10);
}
}
}
};
// ****
// * Observer fuer Lektor-Tree bei Lehreinheit-Modul
// * Bei OnDrop eines mitarbeiters wird dieser der
+20 -19
View File
@@ -24,14 +24,14 @@ if(!$benutzer->loadVariables($uid))
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
?>
<!--
<!DOCTYPE window [
<?php require("../locale/de-AT/tempus.dtd"); ?>
]>
]>-->
<window
id="tempus"
title="&window.title; &window.version;"
id="fas"
title="FAS 0.1"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
orient="vertical"
@@ -44,6 +44,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/tempus.js.php" />
<script type="application/x-javascript" src="chrome://global/content/nsTransferable.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/functions.js.php"/>
<commandset id="maincommands">
<command id="menu-file-close:command" oncommand="closeWindow();"/>
@@ -55,26 +56,26 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
<keyset id="mainkeys">
<key
id = "menu-file-close:key"
key = "&menu-file-close:key;"
key = "§menu-file-close:key;"
observes = "menu-file-close:command"
modifiers = "accel" />
</keyset>
<toolbox id="main-toolbox">
<menubar id="menu" >
<menu id="menu-file" label="&menu-file:label;" accesskey="&menu-file:accesskey;">
<menu id="menu-file" label="§menu-file:label;" accesskey="§menu-file:accesskey;">
<menupopup id="menu-file-popup">
<menuitem
id = "menu-file-close"
key = "menu-file-close:key"
label = "&menu-file-close:label;"
label = "§menu-file-close:label;"
command = "menu-file-close:command"
accesskey = "&menu-file-close:accesskey;"/>
accesskey = "§menu-file-close:accesskey;"/>
</menupopup>
</menu>
<menu id="menu-edit" label="&menu-edit:label;" accesskey="&menu-edit:accesskey;" onclick="loadUndoList();">
<menu id="menu-edit" label="§menu-edit:label;" accesskey="§menu-edit:accesskey;" onclick="loadUndoList();">
<menupopup id="menu-edit-popup" onpopupshowing="debug('wooosaar');">
<menu id="menu-edit-undo" label="&menu-edit-undo:label;"
<menu id="menu-edit-undo" label="§menu-edit-undo:label;"
datasources="rdf:null"
ref="http://www.technikum-wien.at/undo/liste"
>
@@ -90,24 +91,24 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
</menu>
</menupopup>
</menu>
<menu id="menu-prefs" label="&menu-prefs:label;" accesskey="&menu-prefs:accesskey;">
<menu id="menu-prefs" label="§menu-prefs:label;" accesskey="§menu-prefs:accesskey;">
<menupopup id="menu-prefs-popup">
<menu id="menu-prefs-stpltable" label="&menu-prefs-stpltable:label;" accesskey="&menu-prefs-stpltable:accesskey;">
<menu id="menu-prefs-stpltable" label="§menu-prefs-stpltable:label;" accesskey="§menu-prefs-stpltable:accesskey;">
<menupopup id="menu-prefs-stpltable-popup">
<menuitem
id ="menu-prefs-stpltable-stundenplan"
type ="radio"
key ="menu-prefs-stpltable-stundenplan:key"
label ="&menu-prefs-stpltable-stundenplan:label;"
label ="§menu-prefs-stpltable-stundenplan:label;"
command ="menu-prefs-stpltable-stundenplan:command"
accesskey ="&menu-prefs-stpltable-stundenplan:accesskey;"/>
accesskey ="§menu-prefs-stpltable-stundenplan:accesskey;"/>
<menuitem
id ="menu-prefs-stpltable-stundenplandev"
type ="radio"
key ="menu-prefs-stpltable-stundenplandev:key"
label ="&menu-prefs-stpltable-stundenplandev:label;"
label ="§menu-prefs-stpltable-stundenplandev:label;"
command ="menu-prefs-stpltable-stundenplandev:command"
accesskey ="&menu-prefs-stpltable-stundenplandev:accesskey;"/>
accesskey ="§menu-prefs-stpltable-stundenplandev:accesskey;"/>
</menupopup>
</menu>
<menu
@@ -132,14 +133,14 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
</menu>
</menupopup>
</menu>
<menu id="menu-help" label="&menu-help:label;" accesskey="&menu-help:accesskey;">
<menu id="menu-help" label="§menu-help:label;" accesskey="§menu-help:accesskey;">
<menupopup id="menu-about-popup">
<menuitem
id = "menu-help-close"
key = "menu-help-close:key"
label = "&menu-help-close:label;"
label = "§menu-help-close:label;"
command = "menu-help-close:command"
accesskey = "&menu-help-close:accesskey;"/>
accesskey = "§menu-help-close:accesskey;"/>
</menupopup>
</menu>
</menubar>
+59 -1
View File
@@ -4,6 +4,60 @@ include('../vilesci/config.inc.php');
var currentAuswahl=new auswahlValues();
var LvTreeDatasource;
var LektorTreeDatasource;
//Lektor-Tree initialisieren
//window.setTimeout(initLektorTree,300);
// ****
// * initialisiert den Lektor Tree
// ****
function initLektorTree()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try
{
url = '<?php echo APP_ROOT; ?>rdf/mitarbeiter.rdf.php?user=true&'+gettimestamp();
var LektorTree=document.getElementById('tree-lektor');
//Alte DS entfernen
var oldDatasources = LektorTree.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
LektorTree.database.RemoveDataSource(oldDatasources.getNext());
}
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
LektorTreeDatasource = rdfService.GetDataSource(url);
LektorTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
LektorTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
LektorTree.database.AddDataSource(LektorTreeDatasource);
//LektorTreeDatasource.addXMLSinkObserver(LektorTreeSinkObserver);
//LektorTree.builder.addListener(LektorTreeListener);
}
catch(e)
{
debug(e);
}
}
// ****
// * Refresht den Lektor Tree
// ****
function RefreshLektorTree()
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
LektorTreeDatasource.Refresh(true);
//Crash on Mozilla
document.getElementById('tree-lektor').builder.rebuild();
}
catch(e)
{
alert(e);
}
}
function auswahlValues()
{
@@ -121,9 +175,12 @@ function onOrtSelect()
function onLektorSelect()
{
/*
var contentFrame=document.getElementById('iframeTimeTableWeek');
var treeLektor=document.getElementById('tree-lektor');
if(treeLektor.currentIndex==-1)
return;
var uid=treeLektor.view.getCellText(treeLektor.currentIndex,"uid");
if(uid=='')
return;
@@ -140,6 +197,7 @@ function onLektorSelect()
// LVAs
var vboxLehrveranstalungPlanung=document.getElementById('vboxLehrveranstalungPlanung');
vboxLehrveranstalungPlanung.setAttribute('datasources','../rdf/lehreinheit-lvplan.rdf.php?'+"type=lektor&lektor="+uid);
*/
}
function loadURL(event)
+9 -34
View File
@@ -98,11 +98,15 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';*/
</template>
</tree>
<tree id="tree-lektor" onselect="onLektorSelect();"
<tree id="tree-lektor" onmouseup="onLektorSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
enableColumnDrag="true"
ondraggesture="nsDragAndDrop.startDrag(event,mitarbeiterDDObserver);"
datasources="../rdf/mitarbeiter.rdf.php" ref="http://www.technikum-wien.at/mitarbeiter/alle">
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">
<treecols>
<treecol id="kurzbz" label="Kuerzel" flex="2" primary="true" />
<splitter class="tree-splitter"/>
@@ -113,6 +117,8 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';*/
<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"/>
</treecols>
<template>
@@ -125,38 +131,7 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';*/
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#vornamen"/>
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#titelpre"/>
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#uid"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<!-- testing - Verschachtelte Mitarbeiter Ansicht-->
<tree id="tree-lektor_verschachtelt" onselect="onLektorSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
enableColumnDrag="true"
ondraggesture="nsDragAndDrop.startDrag(event,mitarbeiterDDObserver);"
datasources="../rdf/mitarbeiter_verschachtelt.rdf.php" ref="http://www.technikum-wien.at/ma/liste">
<treecols>
<treecol id="bezeichnung" 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="Vornamen" flex="2" hidden="true"/>
<splitter class="tree-splitter"/>
<treecol id="uid" label="UID" flex="1" hidden="true"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/ma/rdf#bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/ma/rdf#nachname"/>
<treecell label="rdf:http://www.technikum-wien.at/ma/rdf#vorname"/>
<treecell label="rdf:http://www.technikum-wien.at/ma/rdf#uid"/>
<treecell label="rdf:http://www.technikum-wien.at/mitarbeiter/rdf#studiengang_kz"/>
</treerow>
</treeitem>
</treechildren>
+1 -1
View File
@@ -10,7 +10,7 @@ function closeWindow()
function onLoad()
{
//window.close();
initLektorTree();
}
function loadRightFrame()
+38 -8
View File
@@ -15,7 +15,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <[email protected]>,
* Authors: Christian Paminger <[email protected]>,
* Andreas Oesterreicher <[email protected]> and
* Rudolf Hangl <[email protected]>.
*/
@@ -23,7 +23,7 @@
// ****************************************
// * Insert/Update/Delete
// * der Lehreinheiten
// *
// *
// * Script sorgt fuer den Datenbanzugriff
// * fuer das XUL - Lehreinheiten-Modul
// *
@@ -37,13 +37,14 @@ require_once('../vilesci/config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/log.class.php');
require_once('../include/benutzerfunktion.class.php');
$user = get_uid();
error_reporting(0);
// Datenbank Verbindung
if (!$conn = pg_pconnect(CONN_STRING))
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$return = false;
@@ -67,7 +68,7 @@ if(!$error)
if(isset($_POST['type']) && $_POST['type']=='undo')
{
//UNDO Befehl ausfuehren
if (!isset($_POST['log_id']))
{
$return = false;
@@ -75,23 +76,52 @@ if(!$error)
$data = '';
$error = true;
}
if(!$error)
{
$log = new log($conn, null, null, true);
if($log->undo($log_id))
{
$return = true;
}
else
else
{
$return = false;
$errormsg = 'Fehler bei UnDo:'.$log->errormsg;
}
}
}
else
elseif (isset($_POST['type']) && $_POST['type']=='addFunktionToMitarbeiter')
{
if(isset($_POST['uid']))
{
$obj = new benutzerfunktion($conn);
$obj->uid = $_POST['uid'];
$obj->studiengang_kz = $_POST['studiengang_kz'];
$obj->funktion_kurzbz = 'lkt';
$obj->updateamum = date('Y-m-d H:i:s');
$obj->updatevon = $user;
$obj->insertamum = date('Y-m-d H:i:s');
$obj->insertvon = $user;
if($obj->save(true))
{
$return = true;
}
else
{
$return = false;
$errormsg = $obj->errormsg;
}
}
else
{
$return = false;
$errormsg = 'Uid wurde nicht angegeben';
}
}
else
{
$return = false;
$errormsg = 'Unkown type';