Anzeigen, bearbeiten und löschen von LV-Angeboten im FAS implementiert

This commit is contained in:
Nikolaus Krondraf
2014-11-26 12:36:56 +00:00
parent 02cb171661
commit a53b1ec7a9
4 changed files with 373 additions and 6 deletions
+24 -1
View File
@@ -1101,12 +1101,22 @@ if(!$error)
}
elseif(isset($_POST['type']) && $_POST['type']=='lvangebot-gruppe-save')
{
isset($_POST['lvangebot_id']) ? $lvangebot_id = $_POST['lvangebot_id'] : $lvangebot_id = null;
$datum_obj = new datum();
$lvangebot = new lvangebot();
$lvangebot->new = true;
$lvangebot->insertamum = date('Y-m-d H:i:s');
$lvangebot->insertvon = $user;
if($lvangebot_id)
{
$lvangebot->load($lvangebot_id);
$lvangebot->new = false;
}
else
{
$lvangebot->new = true;
}
$lehrveranstaltung_obj = new lehrveranstaltung();
if(!$lehrveranstaltung_obj->load($_POST['lehrveranstaltung_id']))
$errormsg = 'Fehler beim Laden der Lehrveranstaltung';
@@ -1167,6 +1177,19 @@ if(!$error)
$return = true;
}
}
elseif(isset($_POST['type']) && $_POST['type']=='lvangebot_gruppe_del')
{
$lvangebot = new lvangebot();
if(!$lvangebot->delete($_POST['lvangebot_id']))
{
$errormsg = $this->errormsg;
$return = false;
}
else
{
$return = true;
}
}
else
{
$return = false;
@@ -404,8 +404,63 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<!-- *************************** LV-ANGEBOT ************************* -->
<vbox id="lehrveranstaltung-lvangebot" style="margin:0px;" >
<hbox>
<groupbox orientation="horizontal" flex="1">
<hbox style="padding: 10px;">
<vbox width="600">
<hbox flex="1">
<tree id="lehrveranstaltung-lvangebot-tree-gruppen" seltype="single" hidecolumnpicker="false" flex="1"
datasources="rdf:null"
ref="http://www.technikum-wien.at/lvangebot/liste"
onselect="LvAngebotGruppeAuswahl();" flags="dont-build-content"
style="border: 1px solid black;"
context="lehrveranstaltung-lektor-tree-popup"
onkeypress="LvAngebotTreeKeyPress(event)"
>
<treecols>
<treecol id="lehrveranstaltung-lvangebot-treecol-lvangebot_id" label="Lvangebot_id" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lvangebot/rdf#lvangebot_id"/>
<splitter class="tree-splitter"/>
<treecol id="lehrveranstaltung-lvangebot-treecol-gruppe" label="Gruppe" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lvangebot/rdf#gruppe_kurzbz"/>
<splitter class="tree-splitter"/>
<treecol id="lehrveranstaltung-lvangebot-treecol-plaetze_inc" label="Plätze Incoming" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lvangebot/rdf#plaetze_inc"/>
<splitter class="tree-splitter"/>
<treecol id="lehrveranstaltung-lvangebot-treecol-plaetze_gesamt" label="Plätze gesamt" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lvangebot/rdf#plaetze_gesamt"/>
<splitter class="tree-splitter"/>
<treecol id="lehrveranstaltung-lvangebot-treecol-anmeldefenster_start" label="Anmeldefenster Start" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lvangebot/rdf#anmeldefenster_start"/>
<treecol id="lehrveranstaltung-lvangebot-treecol-anmeldefenster_ende" label="Anmeldefenster Ende" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/lvangebot/rdf#anmeldefenster_ende"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.technikum-wien.at/lvangebot/rdf#lvangebot_id"/>
<treecell label="rdf:http://www.technikum-wien.at/lvangebot/rdf#gruppe_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/lvangebot/rdf#plaetze_inc"/>
<treecell label="rdf:http://www.technikum-wien.at/lvangebot/rdf#plaetze_gesamt"/>
<treecell label="rdf:http://www.technikum-wien.at/lvangebot/rdf#anmeldefenster_start"/>
<treecell label="rdf:http://www.technikum-wien.at/lvangebot/rdf#anmeldefenster_ende"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
<spacer />
</hbox>
</vbox>
<groupbox orientation="horizontal">
<caption id="lehrveranstaltung-lvangebot-groupbox-caption" label="LV-Angebot" />
<hbox flex="1">
<grid>
@@ -30,6 +30,7 @@ var LeDetailLehrfach_id; //Lehrfach_id die nach dem Laden markiert werden soll
var LeDetailLehrfach_label; //Bezeichnung des Lehrfachs das markiert werden soll
var LeDetailGruppeDatasource; //Datasource fuer Gruppen DropDown
var LeDetailLektorDatasource; //Datasource fuer Lektren DropDown
var LvAngebotGruppenDatasource; //Datasource fuer LV-Angebot Gruppen
var LvSelectLehreinheit_id; //Lehreinheit_id die nach dem Rebuild des Trees markiert werden soll
var LvOpenLehrveranstaltung_id; //Lehrveranstaltung_id der Lehreinheit die gerade gespeichert wurde. Diese LV muss vor dem Select im Tree geoeffnet werden
var leDetailLektorUid; // UID der Lektorzuordnung die nach dem Rebuild markiert werden soll
@@ -96,6 +97,18 @@ var LvLektorTreeListener =
}
};
// ****
// * Nach dem Rebuild wird die LV-Angebot Gruppe
// * wieder markiert
// ****
var LvAngebotTreeListener =
{
willRebuild : function(builder) { },
didRebuild : function(builder)
{
window.setTimeout(LvAngebotTreeSelectGruppe,10);
}
};
// ****
// * Observer fuer Lehrfachdropdown
@@ -255,6 +268,17 @@ function LvDetailMitarbeiterTreeKeyPress(event)
LeMitarbeiterDel();
}
// ****
// * Wird ausgefuehrt wenn eine Taste gedrueckt wird und der Focus
// * im LV-Angebot-tree ist
// * Beim Druecken von ENTF wird die markierte Gruppe geloescht
// ****
function LvAngebotTreeKeyPress(event)
{
if(event.keyCode==46) //Entf
LvAngebotGruppeDel();
}
// ****
// * Erstellt den Lehrauftrag fuer
// * einen Mitarbeiter
@@ -367,6 +391,7 @@ function LeNeu()
//Defaultwert fuer Anmerkung
document.getElementById('lehrveranstaltung-detail-textbox-anmerkung').value='<?php echo str_replace("'","\'",LEHREINHEIT_ANMERKUNG_DEFAULT);?>';
}
// ****
// * Selectiert die Lektorzuordnung nachdem der Tree
// * rebuildet wurde.
@@ -401,6 +426,15 @@ function LeLektorTreeSelectLektor()
}
}
// ****
// * Selectiert die LV-Angebot Gruppe nachdem der Tree
// * rebuildet wurde.
// ****
function LvAngebotTreeSelectGruppe()
{
}
// ****
// * Selectiert die Lehreinheit nachdem der Tree
// * rebuildet wurde.
@@ -716,8 +750,9 @@ function LeAuswahl()
//Notizen Tab ausblenden
//document.getElementById('lehrveranstaltung-tab-notizen').collapsed=true;
//LV-Angebot Tab einblenden
//LV-Angebot Tab einblenden und Gruppen laden
document.getElementById('lehrveranstaltung-tab-lvangebot').collapsed=false;
LvAngebotLoad(lehrveranstaltung_id);
LeDetailDisableFields(true);
//Details zuruecksetzen
@@ -883,7 +918,7 @@ function LeAuswahl()
{
debug(e);
}
//Lehreinheitgruppe tree setzen
url='<?php echo APP_ROOT; ?>rdf/lehreinheitgruppe.rdf.php?lehreinheit_id='+lehreinheit_id+"&"+gettimestamp();
@@ -1977,6 +2012,17 @@ function LvAngebotGruppeSave()
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
//Wenn ein Angebot gewaehlt wurde dann ID fuer Update ermitteln
tree = document.getElementById('lehrveranstaltung-lvangebot-tree-gruppen');
var idx;
if(tree.currentIndex >= 0)
{
idx = tree.currentIndex;
var col = tree.columns ? tree.columns["lehrveranstaltung-lvangebot-treecol-lvangebot_id"] : "lehrveranstaltung-lvangebot-treecol-lvangebot_id";
var lvangebot_id = tree.view.getCellText(idx,col);
req.add('lvangebot_id', lvangebot_id);
}
req.add('type', 'lvangebot-gruppe-save');
req.add('neue_gruppe', neue_gruppe);
req.add('gruppe', gruppe);
@@ -2002,6 +2048,176 @@ function LvAngebotGruppeSave()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
SetStatusBarText('Daten wurden gespeichert');
LvAngebotGruppeTreeRefresh();
LvAngebotReset();
}
}
// ****
// * Laedt alle Gruppen fuer die LV
// ****
function LvAngebotLoad(lehrveranstaltung_id)
{
url='<?php echo APP_ROOT;?>rdf/lvangebot.rdf.php?lehrveranstaltung_id='+lehrveranstaltung_id+"&"+gettimestamp();
try
{
lvangebottree = document.getElementById('lehrveranstaltung-lvangebot-tree-gruppen');
try
{
lvangebottree.builder.removeListener(LvAngebotTreeListener);
}
catch(e)
{}
//Alte DS entfernen
var oldDatasources = lvangebottree.database.GetDataSources();
while(oldDatasources.hasMoreElements())
{
lvangebottree.database.RemoveDataSource(oldDatasources.getNext());
}
//Refresh damit die entfernten DS auch wirklich entfernt werden
lvangebottree.builder.rebuild();
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
LvAngebotGruppenDatasource = rdfService.GetDataSource(url);
LvAngebotGruppenDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
LvAngebotGruppenDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
lvangebottree.database.AddDataSource(LvAngebotGruppenDatasource);
lvangebottree.builder.addListener(LvAngebotTreeListener);
//Eingefelder leeren
LvAngebotReset();
}
catch(e)
{
debug(e);
}
}
// ****
// * Loescht die Gruppe
// ****
function LvAngebotGruppeDel()
{
tree = document.getElementById('lehrveranstaltung-lvangebot-tree-gruppen');
//Nachsehen ob Gruppe markiert wurde
var idx;
if(tree.currentIndex>=0)
idx = tree.currentIndex;
else
{
alert('Bitte zuerst eine Gruppe markieren');
return false;
}
try
{
//ID holen
var col = tree.columns ? tree.columns["lehrveranstaltung-lvangebot-treecol-lvangebot_id"] : "lehrveranstaltung-lvangebot-treecol-lvangebot_id";
var lvangebot_id = tree.view.getCellText(idx,col);
}
catch(e)
{
alert(e);
return false;
}
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
req.add('type', 'lvangebot_gruppe_del');
req.add('lvangebot_id', lvangebot_id);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
alert(val.dbdml_errormsg)
}
else
{
//Refresh des Trees
LvAngebotGruppeTreeRefresh();
}
}
// ****
// * Refresht den LV-Angebot Gruppen Tree
// ****
function LvAngebotGruppeTreeRefresh()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
try
{
LvAngebotGruppenDatasource.Refresh(true); //Blocking
lvangebottree = document.getElementById('lehrveranstaltung-lvangebot-tree-gruppen');
lvangebottree.builder.rebuild();
}
catch(e)
{
debug(e);
}
}
// ****
// * Bei Auswaehlen einer Gruppe werden Eingabefelder
// * zum Bearbeiten befuellt
// ****
function LvAngebotGruppeAuswahl()
{
tree = document.getElementById('lehrveranstaltung-lvangebot-tree-gruppen');
//Falls kein Eintrag gewaehlt wurde, den ersten auswaehlen
var idx;
if(tree.currentIndex>=0)
idx = tree.currentIndex;
else
idx = 0;
try
{
//Daten holen
var col = tree.columns ? tree.columns["lehrveranstaltung-lvangebot-treecol-gruppe"] : "lehrveranstaltung-lvangebot-treecol-gruppe";
var gruppe = tree.view.getCellText(idx,col);
var col = tree.columns ? tree.columns["lehrveranstaltung-lvangebot-treecol-plaetze_inc"] : "lehrveranstaltung-lvangebot-treecol-plaetze_inc";
var plaetze_inc = tree.view.getCellText(idx,col);
var col = tree.columns ? tree.columns["lehrveranstaltung-lvangebot-treecol-plaetze_gesamt"] : "lehrveranstaltung-lvangebot-treecol-plaetze_gesamt";
var plaetze_gesamt = tree.view.getCellText(idx,col);
var col = tree.columns ? tree.columns["lehrveranstaltung-lvangebot-treecol-anmeldefenster_start"] : "lehrveranstaltung-lvangebot-treecol-anmeldefenster_start";
var anmeldefenster_start = tree.view.getCellText(idx,col);
var col = tree.columns ? tree.columns["lehrveranstaltung-lvangebot-treecol-anmeldefenster_ende"] : "lehrveranstaltung-lvangebot-treecol-anmeldefenster_ende";
var anmeldefenster_ende = tree.view.getCellText(idx,col);
}
catch(e)
{
return false;
}
//Felder befuellen
document.getElementById('lehrveranstaltung-lvangebot-textbox-gruppe').value = gruppe;
document.getElementById('lehrveranstaltung-lvangebot-textbox-incoming').value = plaetze_inc;
document.getElementById('lehrveranstaltung-lvangebot-textbox-gesamt').value = plaetze_gesamt;
document.getElementById('lehrveranstaltung-lvangebot-textbox-start').value = anmeldefenster_start;
document.getElementById('lehrveranstaltung-lvangebot-textbox-ende').value = anmeldefenster_ende;
//Felder deaktivieren
document.getElementById('lehrveranstaltung-lvangebot-textbox-gruppe').disabled = true;
document.getElementById('lehrveranstaltung-lvangebot-checkbox-gruppe').disabled = true;
document.getElementById('lehrveranstaltung-lvangebot-checkbox-gruppe').checked = false;
}
// ****
// * Setzt alle Eingebfelder zurueck
// ****
function LvAngebotReset()
{
document.getElementById('lehrveranstaltung-lvangebot-textbox-gruppe').value = '';
document.getElementById('lehrveranstaltung-lvangebot-textbox-gruppe').disabled = false;
document.getElementById('lehrveranstaltung-lvangebot-checkbox-gruppe').disabled = false;
document.getElementById('lehrveranstaltung-lvangebot-checkbox-gruppe').checked = false;
document.getElementById('lehrveranstaltung-lvangebot-textbox-incoming').value = '';
document.getElementById('lehrveranstaltung-lvangebot-textbox-gesamt').value = '';
document.getElementById('lehrveranstaltung-lvangebot-textbox-start').value = '';
document.getElementById('lehrveranstaltung-lvangebot-textbox-ende').value = '';
}
+73
View File
@@ -0,0 +1,73 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Nikolaus Krondraf <nikolaus.krondraf@technikum-wien.at>
*/
if(isset($_GET['lehrveranstaltung_id']))
$lv_id = $_GET['lehrveranstaltung_id'];
else
die('lehrveranstaltung_id muss uebergeben werden');
// header für no cache
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/xhtml+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
require_once('../config/vilesci.config.inc.php');
require_once('../include/basis_db.class.php');
require_once('../include/datum.class.php');
require_once('../include/lvangebot.class.php');
$datum_obj = new datum();
$rdf_url = 'http://www.technikum-wien.at/lvangebot';
echo '
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:GRP="'.$rdf_url.'/rdf#"
>
<RDF:Seq about="'.$rdf_url.'/liste">
';
// Vorhandene Eintraege anzeigen
$lvangebotliste = new lvangebot();
$lvangebotliste->getAllFromLvId($lv_id);
foreach($lvangebotliste->result as $lvang)
{
echo '
<RDF:li>
<RDF:Description id="'.$lvang->lvangebot_id.'" about="'.$rdf_url.'/'.$lvang->lvangebot_id.'" >
<GRP:lvangebot_id><![CDATA['.$lvang->lvangebot_id.']]></GRP:lvangebot_id>
<GRP:gruppe_kurzbz><![CDATA['.$lvang->gruppe_kurzbz.']]></GRP:gruppe_kurzbz>
<GRP:plaetze_inc><![CDATA['.$lvang->incomingplaetze.']]></GRP:plaetze_inc>
<GRP:plaetze_gesamt><![CDATA['.$lvang->gesamtplaetze.']]></GRP:plaetze_gesamt>
<GRP:anmeldefenster_start><![CDATA['.$datum_obj->formatDatum($lvang->anmeldefenster_start,'d.m.Y').']]></GRP:anmeldefenster_start>
<GRP:anmeldefenster_ende><![CDATA['.$datum_obj->formatDatum($lvang->anmeldefenster_ende,'d.m.Y').']]></GRP:anmeldefenster_ende>
</RDF:Description>
</RDF:li>
';
}
?>
</RDF:Seq>
</RDF:RDF>