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;
+ }
+ }
}
?>