Erweiterungen für UnDo

This commit is contained in:
Andreas Österreicher
2007-03-16 14:18:12 +00:00
parent 1129507952
commit c8dc9b05b8
10 changed files with 321 additions and 10 deletions
+1
View File
@@ -39,6 +39,7 @@ require_once('../include/lehreinheit.class.php');
require_once('../include/lehreinheitmitarbeiter.class.php');
require_once('../include/lehreinheitgruppe.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/log.class.php');
$user = get_uid();
@@ -352,7 +352,7 @@ echo "<?xml-stylesheet href=\"".APP_ROOT."content/lehrveranstaltung.css\" type=\
</row>
<row>
<label control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" value="Anmerkung: "/>
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" disabled="true" maxlength="256" flex="1" oncommand="LeMitarbeiterValueChanged();"/>
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" disabled="true" maxlength="256" flex="1" oninput="LeMitarbeiterValueChanged();"/>
<label control="lehrveranstaltung-lehreinheitmitarbeiter-checkbox-bismelden" value="BIS-Melden: "/>
<checkbox id="lehrveranstaltung-lehreinheitmitarbeiter-checkbox-bismelden" disabled="true" flex="1" oncommand="LeMitarbeiterValueChanged();"/>
</row>
+34
View File
@@ -98,3 +98,37 @@ function studiensemesterChange()
return true;
}
function loadUndoList()
{
menu = document.getElementById('menu-edit-undo');
var url = '<?php echo APP_ROOT; ?>rdf/undo.rdf.php?'+gettimestamp();
menu.setAttribute('datasources', url);
debug('load:'+url);
return true;
}
function UnDo(log_id, bezeichnung)
{
if(confirm('Wollen Sie folgenden Befehl wirklich Rueckgaengig machen: '+bezeichnung))
{
//Request absetzen
var req = new phpRequest('tempusDBDML.php','','');
req.add('type','undo');
req.add('log_id',log_id);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
alert(val.dbdml_errormsg)
}
else
{
LvTreeRefresh();
}
}
}
+19 -2
View File
@@ -61,7 +61,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/tempusoverlay.xul.php"?>';
</keyset>
<toolbox id="main-toolbox">
<menubar id="menu">
<menubar id="menu" >
<menu id="menu-file" label="&menu-file:label;" accesskey="&menu-file:accesskey;">
<menupopup id="menu-file-popup">
<menuitem
@@ -72,6 +72,24 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/tempusoverlay.xul.php"?>';
accesskey = "&menu-file-close:accesskey;"/>
</menupopup>
</menu>
<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;"
datasources="rdf:null"
ref="http://www.technikum-wien.at/undo/liste"
>
<template>
<rule>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.technikum-wien.at/undo/rdf#beschreibung"
value="rdf:http://www.technikum-wien.at/undo/rdf#log_id"
onclick="UnDo(this.value, this.label);"/>
</menupopup>
</rule>
</template>
</menu>
</menupopup>
</menu>
<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;">
@@ -126,7 +144,6 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/tempusoverlay.xul.php"?>';
</menu>
</menubar>
</toolbox>
<hbox flex="1">
<tabbox id="tabbox-left" orient="vertical" flex="1">
<tabs orient="horizontal">
+117
View File
@@ -0,0 +1,117 @@
<?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: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
// ****************************************
// * Insert/Update/Delete
// * der Lehreinheiten
// *
// * Script sorgt fuer den Datenbanzugriff
// * fuer das XUL - Lehreinheiten-Modul
// *
// * Derzeitige Funktionen:
// * - Lehreinheitmitarbeiter Zuteilung hinzufuegen/bearbeiten/loeschen
// * - Lehreinheitgruppe Zutelung hinzufuegen/loeschen
// * - Lehreinheit anlegen/bearbeiten/loeschen
// ****************************************
require_once('../vilesci/config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/log.class.php');
$user = get_uid();
error_reporting(0);
// Datenbank Verbindung
if (!$conn = @pg_pconnect(CONN_STRING))
$error_msg='Es konnte keine Verbindung zum Server aufgebaut werden!';
$return = false;
$errormsg = 'unknown';
$data = '';
$error = false;
//Berechtigungen laden
$rechte = new benutzerberechtigung($conn);
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('admin'))
{
$return = false;
$errormsg = 'Keine Berechtigung';
$data = '';
$error = true;
}
if(!$error)
{
if(isset($_POST['type']) && $_POST['type']=='undo')
{
//UNDO Befehl ausfuehren
if (!isset($_POST['log_id']))
{
$return = false;
$errormsg = 'Fehlerhafte Parameteruebergabe';
$data = '';
$error = true;
}
if(!$error)
{
$log = new log($conn, null, null, true);
if($log->undo($log_id))
{
$return = true;
}
else
{
$return = false;
$errormsg = 'Fehler bei UnDo:'.$log->errormsg;
}
}
}
else
{
$return = false;
$errormsg = 'Unkown type';
$data = '';
}
}
?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:DBDML="http://www.technikum-wien.at/dbdml/rdf#"
>
<RDF:Seq RDF:about="http://www.technikum-wien.at/dbdml/msg">
<RDF:li>
<RDF:Description RDF:about="http://www.technikum-wien.at/dbdml/0" >
<DBDML:return><?php echo ($return?'true':'false'); ?></DBDML:return>
<DBDML:errormsg><![CDATA[<?php echo $errormsg; ?>]]></DBDML:errormsg>
<DBDML:data><![CDATA[<?php echo $data ?>]]></DBDML:data>
</RDF:Description>
</RDF:li>
</RDF:Seq>
</RDF:RDF>
+2
View File
@@ -19,6 +19,8 @@ function onVerbandSelect()
{
var contentFrame=document.getElementById('iframeTimeTableWeek');
var tree=document.getElementById('tree-verband');
if(tree.currentIndex==-1)
return;
var stg_kz=tree.view.getCellText(tree.currentIndex,"stg_kz");
var sem=tree.view.getCellText(tree.currentIndex,"sem");
var ver=tree.view.getCellText(tree.currentIndex,"ver");
+1 -1
View File
@@ -25,7 +25,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/stpl-semester-overlay.xul.php"?>';
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/DragAndDrop.js"/>
<script type="application/x-javascript" src="<?php echo APP_ROOT; ?>content/dragboard.js.php"/>
<tree id="tree-verband" onselect="onVerbandSelect();"
<tree id="tree-verband" onmouseup="onVerbandSelect();"
seltype="single" hidecolumnpicker="false" flex="1"
enableColumnDrag="true"
ondraggesture="nsDragAndDrop.startDrag(event,lvbgrpDDObserver);"
+74 -5
View File
@@ -167,6 +167,32 @@ class lehreinheitmitarbeiter
// *******************************************
function validate()
{
if($this->stundensatz!='' && !is_numeric($this->stundensatz))
{
$this->errormsg = 'Stundensatz muss eine gueltige Zahl sein';
return false;
}
if($this->planstunden!='' && !is_numeric($this->planstunden))
{
$this->errormsg = 'Planstunden muss eine gueltige Zahl sein';
return false;
}
if($this->semesterstunden!='' && !is_numeric($this->semesterstunden))
{
$this->errormsg = 'Semesterstunden muss eine gueltige Zahl sein';
return false;
}
if($this->faktor!='' && !is_numeric($this->faktor))
{
$this->errormsg = 'Faktor muss eine gueltige Zahl sein';
return false;
}
if(strlen($this->anmerkung)>255)
{
$this->errormsg = 'Anmerkung darf nicht laenger als 255 Zeichen sein.';
return false;
}
return true;
}
@@ -289,13 +315,56 @@ class lehreinheitmitarbeiter
$this->errormsg = 'Lehreinheit_id ist ungueltig';
return false;
}
$qry = "DELETE FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id' AND mitarbeiter_uid='".addslashes($mitarbeiter_uid)."'";
if(pg_query($this->conn, $qry))
return true;
$qry_del = "DELETE FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id' AND mitarbeiter_uid='".addslashes($mitarbeiter_uid)."'";
$qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id='$lehreinheit_id' AND mitarbeiter_uid='".addslashes($mitarbeiter_uid)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$undo = 'INSERT INTO lehre.tbl_lehreinheitmitarbeiter (lehreinheit_id, mitarbeiter_uid, semesterstunden, planstunden, '.
' stundensatz, faktor, anmerkung, lehrfunktion_kurzbz, ext_id, insertamum, insertvon)'.
' VALUES('.$this->addslashes($row->lehreinheit_id).','.
$this->addslashes($row->mitarbeiter_uid).','.
$this->addslashes($row->semesterstunden).','.
$this->addslashes($row->planstunden).','.
$this->addslashes($row->stundensatz).','.
$this->addslashes($row->faktor).','.
$this->addslashes($row->anmerkung).','.
$this->addslashes($row->lehrfunktion_kurzbz).','.
$this->addslashes($row->ext_id).','.
$this->addslashes($row->insertamum).','.
$this->addslashes($row->insertvon).');';
$log = new log($this->conn, null, null);
$log->sqlundo = $undo;
$log->sql = $qry_del;
$log->mitarbeiter_uid = get_uid();
$log->beschreibung = "Lektorzuteilung loeschen $mitarbeiter_uid - $lehreinheit_id";
if($log->save(true))
{
if(pg_query($this->conn, $qry_del))
return true;
else
{
$this->errormsg = 'Fehler beim Loeschen der Zuteilung';
return false;
}
}
else
{
$this->errormsg = 'UNDO Eintrag konnte nicht erstellt werden';
return false;
}
}
else
{
$this->errormsg = 'Datensatz wurde nicht gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Loeschen der Zuteilung';
$this->errormsg = 'Fehler beim lesen der Daten';
return false;
}
}
+66 -1
View File
@@ -111,7 +111,7 @@ class log
// ********************************************
function load_undo($uid)
{
$qry = "SELECT * FROM public.tbl_log WHERE mitarbeiter_uid='".addslashes($uid)."' AND sqlundo is not null LIMIT 10";
$qry = "SELECT * FROM public.tbl_log WHERE mitarbeiter_uid='".addslashes($uid)."' AND sqlundo is not null ORDER BY executetime DESC LIMIT 10";
if($result=pg_query($this->conn, $qry))
{
@@ -227,5 +227,70 @@ class log
return false;
}
}
// ************************************
// * Fuehrt einen UnDo Befehl aus und
// * loescht anschliessend den Eintrag
// * aus dem Log
// * @param $log_id
// * @return true wenn ok, sonst false
// ************************************
function undo($log_id)
{
if(!is_numeric($log_id))
{
$this->errormsg = 'Log_id ist ungueltig';
return false;
}
pg_query($this->conn, 'BEGIN;');
//Undo Befehl aus Log holen
$qry = "SELECT * FROM public.tbl_log WHERE log_id='$log_id'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
if($row->sqlundo!='')
{
//UnDo Befehl ausfuehren
if(pg_query($this->conn, $row->sqlundo))
{
//Log Eintrag aus Log entfernen
$qry = "DELETE FROM public.tbl_log WHERE log_id='$log_id';";
if(pg_query($this->conn, $qry))
{
pg_query($this->conn, 'COMMIT;');
return true;
}
else
{
pg_query($this->conn, 'ROLLBACK;');
$this->errormsg = 'UnDo Eintrag konnte nicht entfernt werden';
return false;
}
}
else
{
$this->errormsg ='UnDo Befehl konnte nicht durchgefuehrt werden';
return false;
}
}
else
{
$this->errormsg = 'Ungueltiger UnDo Befehl';
return false;
}
}
else
{
$this->errormsg = 'UnDo Befehl konnte nicht durchgefuehrt werden';
return false;
}
}
else
{
$this->errormsg = 'UnDo Befehl konnte nicht durchgefuehrt werden';
return false;
}
}
}
?>
+6
View File
@@ -17,6 +17,12 @@
<!ENTITY menu-help-close:label "Ueber">
<!ENTITY menu-help-close:accesskey "U">
<!ENTITY menu-edit:label "Bearbeiten">
<!ENTITY menu-edit:accesskey "B">
<!ENTITY menu-edit-undo:key "">
<!ENTITY menu-edit-undo:label "Undo">
<!ENTITY menu-edit-undo:accesskey "">
<!ENTITY menu-prefs:label "Einstellungen">
<!ENTITY menu-prefs:accesskey "E">