From 1eab4042d7d8868e0c8b042248ac5082556130b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 17 Oct 2012 06:16:24 +0000 Subject: [PATCH] Coodle Anlegen von Terminvorschlaegen --- cis/private/coodle/coodle_worker.php | 37 ++++++++++ cis/private/coodle/termin.php | 94 +++++++++++++++++------- include/coodle.class.php | 105 +++++++++++++++++++++++++++ 3 files changed, 209 insertions(+), 27 deletions(-) diff --git a/cis/private/coodle/coodle_worker.php b/cis/private/coodle/coodle_worker.php index 59ac5b298..2f6cca7e0 100644 --- a/cis/private/coodle/coodle_worker.php +++ b/cis/private/coodle/coodle_worker.php @@ -131,6 +131,43 @@ switch($work) echo 'Ressource nicht gefunden'; } break; + + case 'addTermin': + if(isset($_POST['datum'])) + $datum = $_POST['datum']; + else + die('Datum fehlt'); + + if(isset($_POST['uhrzeit'])) + $uhrzeit = $_POST['uhrzeit']; + else + die('Uhrzeit fehlt'); + + if(isset($_POST['coodle_id'])) + $coodle_id = $_POST['coodle_id']; + else + die('CoodleID fehlt'); + + $coodle = new coodle(); + if(!$coodle->load($coodle_id)) + die('Fehler: '.$coodle->errormsg); + + if($coodle->ersteller_uid!=$user) + die('Diese Aktion ist nur durch den Ersteller der Umfrage möglich'); + + $coodletermin = new coodle(); + + $coodletermin->datum = $datum; + $coodletermin->uhrzeit = $uhrzeit; + $coodletermin->coodle_id = $coodle_id; + + if($coodletermin->saveTermin(true)) + echo $coodletermin->coodle_termin_id; + else + echo $this->errormsg; + + break; + default: die('Invalid Work Parameter'); } diff --git a/cis/private/coodle/termin.php b/cis/private/coodle/termin.php index 6e157075d..fd14540d9 100755 --- a/cis/private/coodle/termin.php +++ b/cis/private/coodle/termin.php @@ -30,6 +30,19 @@ $sprache = getSprache(); $p = new phrasen($sprache); $datum_obj = new datum(); +if(!isset($_GET['coodle_id'])) + die($p->t('global/fehlerBeiDerParameteruebergabe')); + +$coodle_id = $_GET['coodle_id']; + +$db = new basis_db(); +$coodle = new coodle(); +if(!$coodle->load($coodle_id)) +{ + die($p->t($coodle->errormsg)); +} +$event_titel = $coodle->titel; + echo ' @@ -209,9 +222,9 @@ echo ' droppable: true, // this allows things to be dropped onto the calendar !!! drop: function(date, allDay) { - // this function is called when something is dropped + // Event wird auf Kalender gezogen - // retrieve the dropped elements stored Event Object + // gedropptes Event holen var originalEventObject = $(this).data("eventObject"); // we need to copy it, so that multiple events dont have a reference to the same object @@ -221,16 +234,35 @@ echo ' copiedEventObject.start = date; copiedEventObject.allDay = allDay; - // render the event on the calendar - // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) - $("#calendar").fullCalendar("renderEvent", copiedEventObject, true); - - // is the "remove after drop" checkbox checked? - //if ($("#drop-remove").is(":checked")) { - // if so, remove the element from the "Draggable Events" list - //$(this).remove(); - //} - + // Datum konvertieren + datum = $.fullCalendar.formatDate(date, "yyyy-MM-dd"); + uhrzeit = $.fullCalendar.formatDate(date, "hh:mm:ss"); + //alert("datum:"+datum+" uhrzeit:"+uhrzeit); + + // Termin Speichern + $.ajax({ + type:"POST", + url:"coodle_worker.php", + data:{ + "work": "addTermin", + "datum": datum, + "uhrzeit": uhrzeit, + "coodle_id": "'.$coodle_id.'" + }, + success: function(data) + { + if(isNaN(data)) + alert("ERROR:"+data) + else + { + copiedEventObject.id=data; + // render the event on the calendar + // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) + $("#calendar").fullCalendar("renderEvent", copiedEventObject, true); + } + }, + error: function() { alert("error"); } + }); }, eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) { @@ -277,18 +309,6 @@ echo '

'.$p->t('coodle/coodle').' - '.$p->t('coodle/termine').'

'; -if(!isset($_GET['coodle_id'])) - die($p->t('global/fehlerBeiDerParameteruebergabe')); - -$coodle_id = $_GET['coodle_id']; - -$db = new basis_db(); -$coodle = new coodle(); -if(!$coodle->load($coodle_id)) -{ - die($p->t($coodle->errormsg)); -} - //echo '

'.$coodle->titel.'

'; //echo $coodle->beschreibung; @@ -455,13 +475,15 @@ echo ' $(item).parent().remove(); }'; +echo ' + $(document).ready(function() + {'; + // Bereits zugeteilte Ressourcen laden if(!$coodle->getRessourcen($coodle_id)) die('Fehler:'.$coodle->errormsg); -echo ' - $(document).ready(function() - {'; + foreach($coodle->result as $row) { echo "\n\t"; @@ -493,6 +515,24 @@ foreach($coodle->result as $row) } echo 'addRessourceToContent("'.$db->convert_html_chars($id).'", "'.$db->convert_html_chars($typ).'", "'.$db->convert_html_chars($bezeichnung).'");'; } + +// Bereits eingetragene Terminvorschlaege laden +$coodletermin = new coodle(); +if(!$coodletermin->getTermine($coodle_id)) + die('Fehler:'.$coodletermin->errormsg); +foreach($coodletermin->result as $row) +{ + echo ' + var eventObject = + { + id: "'.$db->convert_html_chars($row->coodle_termin_id).'", + title: "'.$db->convert_html_chars($event_titel).'", + start: "'.$db->convert_html_chars($row->datum).'T'.$db->convert_html_chars($row->uhrzeit).'", + allDay: false + }; + $("#calendar").fullCalendar("renderEvent", eventObject, true); + '; +} echo ' });'; diff --git a/include/coodle.class.php b/include/coodle.class.php index 4dc6cc226..d8a1ce9a3 100755 --- a/include/coodle.class.php +++ b/include/coodle.class.php @@ -551,5 +551,110 @@ class coodle extends basis_db return false; } } + + /** + * Prueft die Termindaten vor dem Speichern + */ + public function validateTermin() + { + return true; + } + + /** + * Speichert einen Termin + * @param new + * @return boolean + */ + public function saveTermin($new) + { + if(is_null($new)) + $new = $this->new; + + //Variablen pruefen + if(!$this->validateTermin()) + return false; + + if($new) + { + //Neuen Datensatz einfuegen + $qry='BEGIN;INSERT INTO campus.tbl_coodle_termin(coodle_id, datum, uhrzeit, auswahl) VALUES('. + $this->db_add_param($this->coodle_id).', '. + $this->db_add_param($this->datum).', '. + $this->db_add_param($this->uhrzeit).', false);'; + } + else + { + $qry='UPDATE campus.tbl_coodle_termin SET'. + ' datum='.$this->db_add_param($this->datum). + ' uhrzeit='.$this->db_add_param($this->uhrzeit). + ' WHERE coodle_termin_id='.$this->db_add_param($this->coodle_termin_id); + } + + if($this->db_query($qry)) + { + if($new) + { + //naechste ID aus der Sequence holen + $qry="SELECT currval('campus.seq_coodle_termin_coodle_termin_id') as id;"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->coodle_termin_id = $row->id; + $this->db_query('COMMIT'); + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = "Fehler beim Auslesen der Sequence"; + return false; + } + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } + + /** + * Laedt die Terminvorschlaege zu einer Umfrage + * @param $coodle_id + * @return boolean + */ + public function getTermine($coodle_id) + { + $qry = "SELECT * FROM campus.tbl_coodle_termin WHERE coodle_id=".$this->db_add_param($coodle_id); + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new coodle(); + $obj->coodle_termin_id = $row->coodle_termin_id; + $obj->coodle_id = $row->coodle_id; + $obj->datum = $row->datum; + $obj->uhrzeit = $row->uhrzeit; + $obj->auswahl = $this->db_parse_bool($row->auswahl); + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg ='Fehler beim Laden der Daten'; + return false; + } + } } ?>