From 754868da90e0ca612282ffda5576828fa4603ebd Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 25 Oct 2019 19:42:27 +0200 Subject: [PATCH] Usability-Verbesserungen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - GUI-Überarbeitung - vorläufige Terminzusagen als ical abonnierbar - --- cis/public/coodle.php | 1198 ++++++++++++++++++++++----------------- locale/de-AT/coodle.php | 2 +- locale/en-US/coodle.php | 2 +- 3 files changed, 667 insertions(+), 535 deletions(-) diff --git a/cis/public/coodle.php b/cis/public/coodle.php index 2ad68c48f..da557217b 100644 --- a/cis/public/coodle.php +++ b/cis/public/coodle.php @@ -19,22 +19,26 @@ * Authors: Karl Burkhart , * Andreas Österreicher */ -require_once ('../../config/cis.config.inc.php'); -require_once ('../../include/phrasen.class.php'); -require_once ('../../include/functions.inc.php'); -require_once ('../../include/coodle.class.php'); -require_once ('../../include/datum.class.php'); -require_once ('../../include/mail.class.php'); -require_once ('../../include/benutzer.class.php'); -require_once ('../../include/reservierung.class.php'); -require_once ('../../include/stunde.class.php'); -require_once ('../../include/stundenplan.class.php'); -require_once ('../../include/mitarbeiter.class.php'); +require_once('../../config/cis.config.inc.php'); +require_once('../../include/phrasen.class.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/coodle.class.php'); +require_once('../../include/datum.class.php'); +require_once('../../include/mail.class.php'); +require_once('../../include/benutzer.class.php'); +require_once('../../include/reservierung.class.php'); +require_once('../../include/stunde.class.php'); +require_once('../../include/stundenplan.class.php'); +require_once('../../include/mitarbeiter.class.php'); +require_once('../../include/globals.inc.php'); header("Content-Type: text/html; charset=utf-8"); $sprache = getSprache(); $p = new phrasen($sprache); +$sprache_obj = new sprache(); +$sprache_obj->load($sprache); +$sprache_index = $sprache_obj->index; $datum_obj = new datum(); $message = ''; $mailMessage = ''; @@ -45,27 +49,27 @@ $abgeschlossen = false; $coodle_id = (isset($_GET['coodle_id']) ? $_GET['coodle_id'] : ''); $coodle = new coodle(); -if (! $coodle->load($coodle_id)) +if (!$coodle->load($coodle_id)) die($coodle->errormsg); // Überprüfen ob Coodle Status laufend oder abgeschlossen hat -if (! $coodle->checkStatus($coodle_id)) +if (!$coodle->checkStatus($coodle_id)) die($p->t('coodle/umfrageNichtGueltig')); // authentifizierung -if (! isset($_GET['zugangscode'])) +if (!isset($_GET['zugangscode'])) { $uid = get_uid(); - if (! $coodle->checkBerechtigung($coodle_id, $uid)) + if (!$coodle->checkBerechtigung($coodle_id, $uid)) die($p->t('coodle/keineBerechtigung')); - + // überprüfen ob ersteller gleich uid ist if ($coodle->ersteller_uid == $uid) $ersteller = true; } else { - if (! $coodle->checkBerechtigung($coodle_id, '', $_GET['zugangscode'])) + if (!$coodle->checkBerechtigung($coodle_id, '', $_GET['zugangscode'])) die($p->t('coodle/keineBerechtigung')); } @@ -75,7 +79,7 @@ if (isset($_POST['save'])) $coodle_help = new coodle(); $error = false; $teilnehmer_uid = ''; - + // Ressource ID von Zugangscode oder UID holen und Beiträge löschen if (isset($_GET['zugangscode'])) { @@ -93,7 +97,7 @@ if (isset($_POST['save'])) $teilnehmer_uid = $coodle_help->coodle_ressource_id; } } - + // Einträge speichern foreach ($_POST as $key => $value) { @@ -102,28 +106,30 @@ if (isset($_POST['save'])) $termin = explode('_', $key); $ressource_id = $termin[1]; $termin_id = $termin[2]; - + $coodle_ressource_termin = new coodle(); $coodle_ressource_termin->coodle_ressource_id = $ressource_id; $coodle_ressource_termin->coodle_termin_id = $termin_id; $coodle_ressource_termin->new = true; - - if (! $coodle_ressource_termin->saveRessourceTermin()) + + if (!$coodle_ressource_termin->saveRessourceTermin()) $error = true; } } - + if ($error) { - $message .= "" . $p->t('global/fehlerBeimSpeichernDerDaten') . "
"; + $message .= '
+ Error! '.$p->t('global/fehlerBeimSpeichernDerDaten').' +
'; } else { $coodle_help->load($coodle_id); // email an ersteller senden wenn option aktiviert - if ($coodle_help->mailversand && (! isset($_POST['auswahl_termin']))) + if ($coodle_help->mailversand && (!isset($_POST['auswahl_termin']))) sendBenachrichtigung($coodle_id, $teilnehmer_uid); - + $saveOk = true; } } @@ -140,43 +146,47 @@ if (isset($_POST['auswahl_termin'])) $coodle_help = new coodle(); $coodle_help->loadTermin($auswahl); $coodle_help->auswahl = true; - + // alle termine der coodle_id auf false setzen - if (! $coodle_help->setTerminFalse($coodle_id)) + if (!$coodle_help->setTerminFalse($coodle_id)) exit('Fehler beim Update aufgetreten'); - - if (! $coodle_help->saveTermin(false)) - $message .= "" . $p->t('global/fehlerBeimSpeichernDerDaten') . "
"; + + if (!$coodle_help->saveTermin(false)) + { + $message .= '
+ Error! '.$p->t('global/fehlerBeimSpeichernDerDaten').' +
'; + } else $saveOk = true; - + $coodle_status = new coodle(); $coodle_status->load($coodle_id); $coodle_status->coodle_status_kurzbz = 'abgeschlossen'; $coodle_status->new = false; $coodle_status->save(); - + sendEmail($coodle_id); - + if ($coodle_help->datum < RES_TAGE_LEKTOR_BIS) { // Raum reservieren $coodle_raum = new coodle(); $coodle_raum->getRaumeFromId($coodle_id); - + // Ende Uhrzeit berechnen - $date = new DateTime($coodle_help->datum . ' ' . $coodle_help->uhrzeit); - $interval = new DateInterval('PT' . $coodle->dauer . 'M'); + $date = new DateTime($coodle_help->datum.' '.$coodle_help->uhrzeit); + $interval = new DateInterval('PT'.$coodle->dauer.'M'); $date->add($interval); $uhrzeit_ende = $date->format('H:i:s'); - + foreach ($coodle_raum->result as $raum) { $stunde = new stunde(); $stunden = $stunde->getStunden($coodle_help->uhrzeit, $uhrzeit_ende); - + // Pruefen ob der Raum frei ist - if (! RaumBelegt($raum->ort_kurzbz, $coodle_help->datum, $stunden)) + if (!RaumBelegt($raum->ort_kurzbz, $coodle_help->datum, $stunden)) { $reservierung_error = false; // Stunden reservieren @@ -192,33 +202,37 @@ if (isset($_POST['auswahl_termin'])) $raum_reservierung->beschreibung = mb_substr($coodle->titel, 0, 32); $raum_reservierung->insertamum = date('Y-m-d H:i:s'); $raum_reservierung->insertvon = $uid; - + // $message.= "Reserviere $raum->ort_kurzbz Stunde $stunde:"; - if (! $raum_reservierung->save(true)) + if (!$raum_reservierung->save(true)) $reservierung_error = true; } - $message .= $p->t('coodle/raumErfolgreichReserviert', array( - $raum->ort_kurzbz - )) . '
'; + $message .= '
+ '.$p->t('coodle/raumErfolgreichReserviert', array($raum->ort_kurzbz)).' +
'; } else { - $message .= '' . $p->t('coodle/raumBelegt', array( - $raum->ort_kurzbz - )) . '
'; + $message .= '
+ '.$p->t('coodle/raumBelegt', array($raum->ort_kurzbz)).' +
'; } } } else { - $message .= '' . $p->t('coodle/raumNichtReserviert', array( - $datum_obj->formatDatum(RES_TAGE_LEKTOR_BIS, 'd.m.Y') - )) . '
'; + $message .= '
+ '.$p->t('coodle/raumNichtReserviert', array($datum_obj->formatDatum(RES_TAGE_LEKTOR_BIS, 'd.m.Y'))).' +
'; } } } else - $message .= '' . $p - t('global/keineBerechtigung') . ''; + { + $message .= '
+ '.$p->t('global/keineBerechtigung').' +
'; + } } $coodle->load($coodle_id); @@ -238,463 +252,564 @@ if (isset($_GET['resend'])) - + - <?php echo $p->t('coodle/terminauswahl');?> + + <?php echo $p->t('coodle/terminauswahl'); ?> - -' . $p->t('coodle/coodle') . ''; +
+
+ '.$p->t('coodle/coodle').''; -if (! isset($_GET['zugangscode'])) - echo "<< " . $p->t('coodle/zurueckZurUebersicht') . ""; -echo '

'; -echo '
'; + if (!isset($_GET['zugangscode'])) + { + echo "<< ".$p->t('coodle/zurueckZurUebersicht').""; + echo '

'; + } + echo '
'; -$coodle_help = new coodle(); -$coodle_help->load($coodle_id); + $coodle_help = new coodle(); + $coodle_help->load($coodle_id); -$alt = strtotime($coodle_help->insertamum); + $alt = strtotime($coodle_help->insertamum); -$differenz = time() - $alt; -$differenz = $differenz / 86400; -$benutzer = new benutzer(); -$benutzer->load($coodle->ersteller_uid); -// $ersteller_name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); -$ersteller_name = trim($benutzer->vorname . ' ' . $benutzer->nachname); -echo '

' . $coodle->titel . '

'; -$erstellt = array( - $ersteller_name, - round($differenz) -); -echo '' . $p->t('coodle/erstelltVon', $erstellt) . '
'; -echo '' . $p->t('coodle/dauer') . ': ' . $coodle->dauer . ' min.

'; + $differenz = time() - $alt; + $differenz = $differenz / 86400; + $benutzer = new benutzer(); + $benutzer->load($coodle->ersteller_uid); + // $ersteller_name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); + $ersteller_name = trim($benutzer->vorname.' '.$benutzer->nachname); + echo '

'.$coodle->titel.'

'; + $erstellt = array( + $ersteller_name, + round($differenz) + ); + echo ''.$p->t('coodle/erstelltVon', $erstellt).'
'; + echo ''.$p->t('coodle/dauer').': '.$coodle->dauer.' min.

'; -echo $coodle->beschreibung; + echo $coodle->beschreibung; -echo '
'; + echo '
'; -if ($abgeschlossen) -{ - $datum = new datum(); - $coodle_abgeschlossen = new coodle(); - $termin_id = $coodle_abgeschlossen->getTerminAuswahl($coodle_id); - $coodle_abgeschlossen->loadTermin($termin_id); - echo '

' . $p->t('coodle/umfrageAbgeschlossen', array( - $datum->formatDatum($coodle_abgeschlossen->datum, 'd.m.Y') . ' ' . $coodle_abgeschlossen->uhrzeit - )) . '
'; -} + if ($abgeschlossen) + { + $datum = new datum(); + $coodle_abgeschlossen = new coodle(); + $termin_id = $coodle_abgeschlossen->getTerminAuswahl($coodle_id); + $coodle_abgeschlossen->loadTermin($termin_id); + echo '
'.$p->t('coodle/umfrageAbgeschlossen', array( + substr($tagbez[$sprache_index][$datum->formatDatum($coodle_abgeschlossen->datum, 'N')], 0, 2).', '. + $datum->formatDatum($coodle_abgeschlossen->datum, 'd.m.Y').' '. + $datum->formatDatum($coodle_abgeschlossen->uhrzeit, 'H:i') + )).'
'; + } -echo '

+ echo '
'; -$coodle_ressourcen = new coodle(); -$coodle_ressourcen->getRessourcen($coodle_id); + $coodle_ressourcen = new coodle(); + $coodle_ressourcen->getRessourcen($coodle_id); + $mailadressen = '?subject=Coodle%20Umfrage%20'.htmlspecialchars($coodle->titel).'&bcc='; -// alle termine der coodle umfrage holen -$coodle_termine = new coodle(); -$coodle_termine->getTermine($coodle_id); + foreach ($coodle_ressourcen->result as $ressource) + { + $name = ''; + $benutzer = new benutzer(); -$datum = new datum(); -$datum_colspan = ''; -$mailadressen = '?subject=Coodle%20Umfrage%20' . htmlspecialchars($coodle->titel) . '&bcc='; + // wenn uid gesetzt ist nimm uid + if ($ressource->uid != '') + { + $benutzer->load($ressource->uid); + // $name .= ($benutzer->titelpre!='')?$benutzer->titelpre.' ':''; + $name .= $benutzer->vorname.' '; + $name .= $benutzer->nachname.' '; + // $name .= $benutzer->titelpost; -echo "
+ $mailadressen .= $ressource->uid.'@'.DOMAIN.';'; + + $ressource->anzeigename = $name; + $ressource->vorname = $benutzer->vorname; + $ressource->nachname = $benutzer->nachname; + } + + // wenn uid nicht gesetzt ist nimm zugangscode + if ($ressource->zugangscode != '' && $ressource->uid == '') + { + $name = $ressource->name; + $ressource->anzeigename = $name; + $ressource->vorname = $name; + $ressource->nachname = $name; + + $mailadressen .= ';'.$ressource->email; + } + } + + // alle termine der coodle umfrage holen + $coodle_termine = new coodle(); + $coodle_termine->getTermine($coodle_id); + + $datum = new datum(); + $datum_colspan = ''; + + echo "
- +
"; -// Für Colspan bei Datum -$max_colspan = array(); -foreach ($coodle_termine->result as $termin) -{ - $max_colspan[] .= $termin->datum; -} - -foreach ($coodle_termine->result as $termin) -{ - $class_auswahl = 'normal'; - $time = strtotime($termin->uhrzeit); - $coodle_auswahl = new coodle(); - - // Falls es schon eine Auswahl gibt - hervorheben - if ($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) - $class_auswahl = 'auswahl'; - - // Colspan für Datum berechnen - $count = array_count_values($max_colspan); - $colspan = $count[$termin->datum]; - - if ($datum_colspan != $termin->datum && $termin->datum != '1900-01-01') - echo ""; - - $datum_colspan = $termin->datum; -} -if ($ersteller) - echo ''; -echo ""; - -foreach ($coodle_termine->result as $termin) -{ - $class_auswahl = 'normal_uhrzeit'; - $time = strtotime($termin->uhrzeit); - // Endzeit berechnen - $ende = $time + ($coodle->dauer * 60); - - $coodle_auswahl = new coodle(); - - // Falls es schon eine Auswahl gibt - hervorheben - if ($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) - $class_auswahl = 'auswahl_uhrzeit'; - - if ($termin->datum != '1900-01-01') - echo ""; - else - echo ''; -} -echo ""; - -foreach ($coodle_ressourcen->result as $ressource) -{ - $name = ''; - $benutzer = new benutzer(); - - // wenn uid gesetzt ist nimm uid - if ($ressource->uid != '') - { - $benutzer->load($ressource->uid); - // $name .= ($benutzer->titelpre!='')?$benutzer->titelpre.' ':''; - $name .= $benutzer->vorname . ' '; - $name .= $benutzer->nachname . ' '; - // $name .= $benutzer->titelpost; - - $mailadressen .= $ressource->uid . '@' . DOMAIN . ';'; - - $ressource->anzeigename = $name; - $ressource->vorname = $benutzer->vorname; - $ressource->nachname = $benutzer->nachname; - } - - // wenn uid nicht gesetzt ist nimm zugangscode - if ($ressource->zugangscode != '' && $ressource->uid == '') - { - $name = $ressource->name; - $ressource->anzeigename = $name; - $ressource->vorname = $name; - $ressource->nachname = $name; - - $mailadressen .= ';' . $ressource->email; - } -} - -// Sortiert die Ressourcen alphabetisch nach anzeigename -function sortRessourcen($a, $b) -{ - return strcmp($a->nachname . '' . $a->vorname, $b->nachname . '' . $b->vorname); -} -usort($coodle_ressourcen->result, "sortRessourcen"); - -$owner = false; -// ressourcen durchlaufen -foreach ($coodle_ressourcen->result as $ressource) -{ - $owner = false; - // Ist der User ident mit einer Ressource - if (isset($_GET['zugangscode']) && $_GET['zugangscode'] == $ressource->zugangscode) - $owner = true; - if (! isset($_GET['zugangscode']) && $ressource->uid == $uid) - $owner = true; - - if ($coodle_help->teilnehmer_anonym && ! $owner) - continue; - else - { - - // Ort-Ressourcen ueberspringen - if ($ressource->ort_kurzbz != '') - continue; - - $class = 'normal'; - // eigene Reihe farbig hervorheben - if ($owner) - $class = 'owner'; - // Bei anonymen TeilnehmerInnen entfaellt das Hervorheben - if ($coodle_help->teilnehmer_anonym) - $class = 'normal'; - - echo ""; - - $termin_datum = ''; - $disabled = false; - $checked = false; - - $coodle_ressource = new coodle(); - if (isset($_GET['zugangscode'])) - { - $coodle_ressource->getRessourceFromUser($coodle_id, '', $_GET['zugangscode']); - if ($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) - $disabled = true; - } - else - { - $coodle_ressource->getRessourceFromUser($coodle_id, $uid); - if ($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) - $disabled = true; - } - - if ($abgeschlossen) - $disabled = true; - - // termine zu ressourcen anzeigen + // Für Colspan bei Datum + $max_colspan = array(); foreach ($coodle_termine->result as $termin) { - $checked = false; - $style = ''; - if ($coodle_termine->checkTermin($termin->coodle_termin_id, $ressource->coodle_ressource_id)) - $checked = true; - - if ($termin_datum != '' && $termin_datum != $termin->datum) - $style = 'style="border-left: 1px solid #DCDDDF;"'; - - if ($coodle_help->termine_anonym && ! $owner && ! $ersteller) - echo ""; + $max_colspan[] .= $termin->datum; + } + + foreach ($coodle_termine->result as $termin) + { + $class_auswahl = 'normal'; + $time = strtotime($termin->uhrzeit); + $coodle_auswahl = new coodle(); + + // Falls es schon eine Auswahl gibt - hervorheben + if ($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) + $class_auswahl = 'auswahl'; + + // Colspan für Datum berechnen + $count = array_count_values($max_colspan); + $colspan = $count[$termin->datum]; + + if ($datum_colspan != $termin->datum && $termin->datum != '1900-01-01') + echo ""; + + $datum_colspan = $termin->datum; + } + if ($ersteller) + echo ''; + echo ""; + echo ''; + + foreach ($coodle_termine->result as $termin) + { + $class_auswahl = 'normal_uhrzeit'; + $time = strtotime($termin->uhrzeit); + // Endzeit berechnen + $ende = $time + ($coodle->dauer * 60); + + $coodle_auswahl = new coodle(); + + // Falls es schon eine Auswahl gibt - hervorheben + if ($coodle_auswahl->checkTerminAuswahl($coodle_id, $termin->coodle_termin_id)) + $class_auswahl = 'auswahl_uhrzeit'; + + if ($termin->datum != '1900-01-01') + echo ""; + else + echo ''; + } + echo ""; + + // Sortiert die Ressourcen alphabetisch nach anzeigename + function sortRessourcen($a, $b) + { + return strcmp($a->nachname.''.$a->vorname, $b->nachname.''.$b->vorname); + } + + usort($coodle_ressourcen->result, "sortRessourcen"); + + $owner = false; + // ressourcen durchlaufen + foreach ($coodle_ressourcen->result as $ressource) + { + $owner = false; + // Ist der User ident mit einer Ressource + if (isset($_GET['zugangscode']) && $_GET['zugangscode'] == $ressource->zugangscode) + $owner = true; + if (!isset($_GET['zugangscode']) && $ressource->uid == $uid) + $owner = true; + + if ($coodle_help->teilnehmer_anonym && !$owner) + continue; else { - if ($disabled) + + // Ort-Ressourcen ueberspringen + if ($ressource->ort_kurzbz != '') + continue; + + $class = 'normal'; + // eigene Reihe farbig hervorheben + if ($owner) + $class = 'owner'; + // Bei anonymen TeilnehmerInnen entfaellt das Hervorheben + if ($coodle_help->teilnehmer_anonym) + $class = 'normal'; + + echo ""; + + $termin_datum = ''; + $disabled = false; + $checked = false; + + $coodle_ressource = new coodle(); + if (isset($_GET['zugangscode'])) { - if ($checked) - echo ''; - else - echo ''; + $coodle_ressource->getRessourceFromUser($coodle_id, '', $_GET['zugangscode']); + if ($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) + $disabled = true; } else { - // Der 01.01.1900 wird fuer "Keine Auswahl" verwendet. Beim anklicken der Checkbox werden alle anderen Checkboxen deaktiviert - echo ''; + $coodle_ressource->getRessourceFromUser($coodle_id, $uid); + if ($ressource->coodle_ressource_id != $coodle_ressource->coodle_ressource_id) + $disabled = true; } + + if ($abgeschlossen) + $disabled = true; + + // termine zu ressourcen anzeigen + foreach ($coodle_termine->result as $termin) + { + $checked = false; + $style = ''; + if ($coodle_termine->checkTermin($termin->coodle_termin_id, $ressource->coodle_ressource_id)) + $checked = true; + + if ($termin_datum != '' && $termin_datum != $termin->datum) + $style = 'style="border-left: 1px solid #DCDDDF;"'; + + if ($coodle_help->termine_anonym && !$owner && !$ersteller) + echo ""; + else + { + if ($disabled) + { + if ($checked) + echo ''; + else + echo ''; + } + else + { + // Der 01.01.1900 wird fuer "Keine Auswahl" verwendet. Beim anklicken der Checkbox werden alle anderen Checkboxen deaktiviert + echo ' '; + } + } + + $termin_datum = $termin->datum; + } + if ($ersteller) + echo ""; + echo ''; } - - $termin_datum = $termin->datum; + } + + $disabled = $abgeschlossen ? 'disabled' : ''; + + // Counter fuer Anzahl der Auswahlen pro Termin + $counter_arr = array(); + foreach ($coodle_termine->result as $termin) + { + $countTermine = new coodle(); + $countTermine->countTermin($termin->coodle_termin_id); + + $counter_arr[] = $countTermine->anzahl; + } + if ($coodle_help->teilnehmer_anonym) + echo ''; + elseif ($coodle_help->termine_anonym) + echo ''; + + echo ''; + foreach ($coodle_termine->result as $termin) + { + $countTermine = new coodle(); + $countTermine->countTermin($termin->coodle_termin_id); + + if ($countTermine->anzahl == max($counter_arr)) + echo ''; + else + echo ''; } if ($ersteller) - echo ""; - echo ''; - } -} + echo ''; + echo ""; -$disabled = $abgeschlossen ? 'disabled' : ''; + if ($ersteller) + { + // buttons für auswahl des endgültigen termins + echo ''; + foreach ($coodle_termine->result as $termin) + { + $checked = ($termin->auswahl) ? 'checked' : ''; + if ($termin->datum != '1900-01-01') + echo ''; + else + echo ''; + } + echo ''; + echo ""; + } -// Counter fuer Anzahl der Auswahlen pro Termin -$counter_arr = array(); -foreach ($coodle_termine->result as $termin) -{ - $countTermine = new coodle(); - $countTermine->countTermin($termin->coodle_termin_id); - - $counter_arr[] = $countTermine->anzahl; -} -if ($coodle_help->teilnehmer_anonym) - echo ''; -elseif ($coodle_help->termine_anonym) - echo ''; + echo ' '; + echo ' +
" . $datum->formatDatum($termin->datum, 'd.m.Y') . "
" . date('H:i', $time) . " -
" . date('H:i', $ende) . "  
' . $p->t('coodle/keinTerminMoeglich') . '
" . $ressource->anzeigename . " + ".substr($monatsname[$sprache_index][$datum->formatDatum($termin->datum, 'n') - 1], 0, 3)."
+ ".$datum->formatDatum($termin->datum, 'd')."
+ ".substr($tagbez[$sprache_index][$datum->formatDatum($termin->datum, 'N')], 0, 2)." +
'; + if ($ersteller && $abgeschlossen) + { + echo ''; + } + echo '".date('H:i', $time)." -
".date('H:i', $ende)."  
'.$p->t('coodle/keinTerminMoeglich').'
".$ressource->anzeigename." - datum == '1900-01-01' ? 'id="disableCheckboxes"' : '') . ' - name="check_' . $ressource->coodle_ressource_id . '_' . $termin->coodle_termin_id . '"> - +
+ +
+
Die TeilnehmerInnen dieser Umfrage sind anonym
Die Terminwahl dieser Umfrage erfolgt anonym
Summe der Einträge
'.$p->t('coodle/keineAuswahl').'
'.$p->t('coodle/auswahlEndtermin').'
Die TeilnehmerInnen dieser Umfrage sind anonym
Die Terminwahl dieser Umfrage erfolgt anonym
'; + echo '
'; -echo 'Summe der Einträge'; -foreach ($coodle_termine->result as $termin) -{ - $countTermine = new coodle(); - $countTermine->countTermin($termin->coodle_termin_id); - - if ($countTermine->anzahl == max($counter_arr)) - echo '' . $countTermine->anzahl . ''; - else - echo '' . $countTermine->anzahl . ''; -} -if ($ersteller) - echo '' . $p->t('coodle/keineAuswahl') . ''; -echo ""; + // Benutzer mit CIS-Account können die Terminzusagen als iCal importieren + if (isset($uid) && $uid != '') + { + echo '

+ + Sie können ihre vorläufigen Terminzusagen in ihr Kalendersystem einbinden.
+ Importieren Sie dazu die .ics-Datei aus folgendem Link in ihren Kalender:
+ + '.APP_ROOT.'cis/public/ical_coodle.php/'.$uid.' + +

+ Die Datei enthält ihre Terminzusagen aus allen laufenden Umfragen in anonymisierter Form. +
'; + } -if ($ersteller) -{ - // buttons für auswahl des endgültigen termins - echo '' . $p->t('coodle/auswahlEndtermin') . ''; - foreach ($coodle_termine->result as $termin) - { - $checked = ($termin->auswahl) ? 'checked' : ''; - if ($termin->datum != '1900-01-01') - echo ''; - else - echo ''; - } - echo ''; - echo ""; -} -if ($ersteller && $abgeschlossen) - echo ' Mail an alle schicken'; -echo ' ' . $p->t('coodle/auswahlHinweis') . ' - '; + if ($ersteller && $abgeschlossen) + echo '  '; + if ($saveOk === true) + echo '
+ '.$p->t('global/erfolgreichgespeichert').' +
'; + echo '
'; + + echo '
'.$message; + + echo $mailMessage; -if ($ersteller && $abgeschlossen) - echo ''; -if ($saveOk === true) - echo '
- ' . $p->t('global/erfolgreichgespeichert') . ' -
'; -echo " - -
" . $message . '
' . $mailMessage; - ?>
- +
@@ -702,7 +817,7 @@ echo " /** * Sendet eine Email an den Ersteller der Umfrage - * + * * @param type $ersteller */ function sendBenachrichtigung($coodle_id, $teilnehmer_id) @@ -710,16 +825,16 @@ function sendBenachrichtigung($coodle_id, $teilnehmer_id) global $uid; global $coodle; $coodle_send = new coodle(); - - if (! $coodle_send->load($coodle_id)) + + if (!$coodle_send->load($coodle_id)) { die("Fehler beim senden aufgetreten"); } - + $mitarbeiter = new mitarbeiter(); $person = new person(); $teilnehmer = new coodle(); - + $teilnehmer->getRessourceFromId($teilnehmer_id); if ($teilnehmer->zugangscode != '') $tn = $teilnehmer->name; @@ -727,50 +842,50 @@ function sendBenachrichtigung($coodle_id, $teilnehmer_id) { $mitarbeiter->load($teilnehmer->uid); $person->load($mitarbeiter->person_id); - $tn = $person->vorname . " " . $person->nachname; + $tn = $person->vorname." ".$person->nachname; } $mitarbeiter->load($coodle_send->ersteller_uid); $person->load($mitarbeiter->person_id); - + $email = ''; - + $name = ''; - $name .= ($person->titelpre != '') ? $person->titelpre . ' ' : ''; - $name .= $person->vorname . ' ' . $person->nachname; - $name .= ($person->titelpost != '') ? ' ' . $person->titelpost : ''; - + $name .= ($person->titelpre != '') ? $person->titelpre.' ' : ''; + $name .= $person->vorname.' '.$person->nachname; + $name .= ($person->titelpost != '') ? ' '.$person->titelpost : ''; + if ($person->geschlecht == 'w') - $email .= 'Sehr geehrte Frau ' . $name . "!

"; + $email .= 'Sehr geehrte Frau '.$name."!

"; else - $email .= "Sehr geehrter Herr " . $name . "!

"; - - $link = APP_ROOT . 'cis/public/coodle.php?coodle_id=' . urlencode($coodle_id) . '&uid=' . urlencode($uid); - $email .= $tn . ' hat einen Termin zu Ihrer Coodle-Umfrage mit dem Thema "' . $coodle->titel . '" ausgewählt.
Link zu Ihrer Coodle Umfrage

Mit freundlichen Grüßen

+ $email .= "Sehr geehrter Herr ".$name."!

"; + + $link = APP_ROOT.'cis/public/coodle.php?coodle_id='.urlencode($coodle_id).'&uid='.urlencode($uid); + $email .= $tn.' hat einen Termin zu Ihrer Coodle-Umfrage mit dem Thema "'.$coodle->titel.'" ausgewählt.
Link zu Ihrer Coodle Umfrage

Mit freundlichen Grüßen

Fachhochschule Technikum Wien
Höchstädtplatz 6
1200 Wien'; - - $mail = new mail($coodle_send->ersteller_uid . '@' . DOMAIN, 'no-reply', 'Feedback zu Ihrer Coodle Umfrage "' . $coodle->titel . '"', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'); + + $mail = new mail($coodle_send->ersteller_uid.'@'.DOMAIN, 'no-reply', 'Feedback zu Ihrer Coodle Umfrage "'.$coodle->titel.'"', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'); $mail->setHTMLContent($email); - if (! $mail->send()) + if (!$mail->send()) die("Fehler beim senden des Mails aufgetreten"); } /** * Funktion sendet den ausgewählten Termin an alle Ressourcen aus der übergebenen Coodleumfrage - * - * @global phrasen $p + * * @param type $coodle_id * @param type $auswahl + * @global phrasen $p */ function sendEmail($coodle_id) { - global $mailMessage; + global $mailMessage, $tagbez, $sprache_index; global $p; $coodle_help = new coodle(); $termin_id = $coodle_help->getTerminAuswahl($coodle_id); $coodle_help->loadTermin($termin_id); - + $coodle_ressource = new coodle(); $coodle_ressource->getRessourcen($coodle_id); $coodle = new coodle(); @@ -791,8 +906,8 @@ function sendEmail($coodle_id) { $benutzer = new benutzer(); $benutzer->load($row->uid); - $name = trim($benutzer->titelpre . ' ' . $benutzer->vorname . ' ' . $benutzer->nachname . ' ' . $benutzer->titelpost); - $mail = $row->uid . '@' . DOMAIN; + $name = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); + $mail = $row->uid.'@'.DOMAIN; } else { @@ -805,23 +920,23 @@ function sendEmail($coodle_id) $partstat = 'ACCEPTED'; else $partstat = 'TENTATIVE'; - - $teilnehmer .= 'ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=' . $partstat . ';CN=' . $name . "\n :MAILTO:" . $mail . "\n"; + + $teilnehmer .= 'ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT='.$partstat.';CN='.$name."\n :MAILTO:".$mail."\n"; } } - $date = new DateTime($coodle_help->datum . ' ' . $coodle_help->uhrzeit); + $date = new DateTime($coodle_help->datum.' '.$coodle_help->uhrzeit); // Datum des Termins ins richtige Format bringen $dtstart = $date->format('Ymd\THis'); - + // Ende Datum berechnen - $interval = new DateInterval('PT' . $coodle->dauer . 'M'); + $interval = new DateInterval('PT'.$coodle->dauer.'M'); $date->add($interval); $dtend = $date->format('Ymd\THis'); $date = new DateTime(); $dtstamp = $date->format('Ymd\THis'); $benutzer = new benutzer(); $benutzer->load($coodle->ersteller_uid); - $erstellername = trim($benutzer->titelpre . ' ' . $benutzer->vorname . ' ' . $benutzer->nachname . ' ' . $benutzer->titelpost); + $erstellername = trim($benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost); // Ical File erstellen $ical = "BEGIN:VCALENDAR PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN @@ -845,50 +960,52 @@ TZOFFSETTO:+0100 END:STANDARD END:VTIMEZONE BEGIN:VEVENT -ORGANIZER:MAILTO:" . $erstellername . " <" . $coodle->ersteller_uid . "@" . DOMAIN . " -" . $teilnehmer . " -DTSTART;TZID=Europe/Vienna:" . $dtstart . " -DTEND;TZID=Europe/Vienna:" . $dtend . " -LOCATION:" . $ort . " +ORGANIZER:MAILTO:".$erstellername." <".$coodle->ersteller_uid."@".DOMAIN." +".$teilnehmer." +DTSTART;TZID=Europe/Vienna:".$dtstart." +DTEND;TZID=Europe/Vienna:".$dtend." +LOCATION:".$ort." TRANSP:OPAQUE SEQUENCE:0 -UID:FHCompleteCoodle" . $coodle_id . " -DTSTAMP;TZID=Europe/Vienna:" . $dtstamp . " -DESCRIPTION:" . strip_tags(html_entity_decode($coodle->beschreibung, ENT_QUOTES, 'UTF-8')) . " -SUMMARY:" . strip_tags($coodle->titel) . " +UID:FHCompleteCoodle".$coodle_id." +DTSTAMP;TZID=Europe/Vienna:".$dtstamp." +DESCRIPTION:".strip_tags(html_entity_decode($coodle->beschreibung, ENT_QUOTES, 'UTF-8'))." +SUMMARY:".strip_tags($coodle->titel)." PRIORITY:5 CLASS:PUBLIC END:VEVENT END:VCALENDAR"; - + if (count($coodle_ressource->result) > 0) { + $mailMessageError = ''; + $mailMessageSuccess = '
'; foreach ($coodle_ressource->result as $row) { if ($row->uid != '') { $benutzer = new benutzer(); - if (! $benutzer->load($row->uid)) + if (!$benutzer->load($row->uid)) { - $mailMessage .= "Fehler beim Laden des Benutzers " . $coodle_ressource->convert_html_chars($row->uid); + $mailMessageError .= "Fehler beim Laden des Benutzers ".$coodle_ressource->convert_html_chars($row->uid); continue; } - + if ($benutzer->geschlecht == 'w') $anrede = "Sehr geehrte Frau "; else $anrede = "Sehr geehrter Herr "; - - $anrede .= $benutzer->titelpre . ' ' . $benutzer->vorname . ' ' . $benutzer->nachname . ' ' . $benutzer->titelpost; - + + $anrede .= $benutzer->titelpre.' '.$benutzer->vorname.' '.$benutzer->nachname.' '.$benutzer->titelpost; + // Interner Teilnehmer - $email = $row->uid . '@' . DOMAIN; + $email = $row->uid.'@'.DOMAIN; } elseif ($row->email != '') { // Externe Teilnehmer $email = $row->email; - $anrede = 'Sehr geehrte(r) Herr/Frau ' . $row->name; + $anrede = 'Sehr geehrte(r) Herr/Frau '.$row->name; } else { @@ -897,30 +1014,44 @@ END:VCALENDAR"; } $anrede = trim($anrede); $sign = $p->t('mail/signatur'); - + $datum = new datum(); - - $html = $anrede . '!

- Die Terminumfrage zum Thema "' . $coodle_ressource->convert_html_chars($coodle->titel) . '" ist beendet. + + $html = $anrede.'!

+ Die Terminumfrage zum Thema "'.$coodle_ressource->convert_html_chars($coodle->titel).'" ist beendet.
- Der Termin wurde auf den ' . $datum->formatDatum($coodle_help->datum, 'd.m.Y') . ' ' . $coodle_help->uhrzeit . ' festgelegt. -

' . nl2br($sign); - - $text = $anrede . "!\n\nDie Terminumfrage zum Thema \"" . $coodle_help->convert_html_chars($coodle->titel) . '"\" ist beendet.\n - Der Termin wurde auf den ' . $datum->formatDatum($coodle_help->datum, 'd.m.Y') . ' ' . $coodle_help->uhrzeit . " festgelegt\n. + Der Termin wurde auf + '.substr($tagbez[$sprache_index][$datum->formatDatum($coodle_help->datum, 'N')], 0, 2).', '. + $datum->formatDatum($coodle_help->datum, 'd.m.Y').' '. + $datum->formatDatum($coodle_help->uhrzeit, 'H:i').' + festgelegt. +

'.nl2br($sign); + + $text = $anrede."!\n\nDie Terminumfrage zum Thema \"".$coodle_help->convert_html_chars($coodle->titel).'"\" ist beendet.\n + Der Termin wurde auf + '.substr($tagbez[$sprache_index][$datum->formatDatum($coodle_help->datum, 'N')], 0, 2).', '. + $datum->formatDatum($coodle_help->datum, 'd.m.Y').' '. + $datum->formatDatum($coodle_help->uhrzeit, 'H:i')." + festgelegt\n. \n\n$sign"; - - $mail = new mail($email, 'no-reply@' . DOMAIN, 'Terminbestätigung - ' . $coodle->titel, $text); + + $mail = new mail($email, 'no-reply@'.DOMAIN, 'Terminbestätigung - '.$coodle->titel, $text); $mail->setHTMLContent($html); // ICal Termineinladung hinzufuegen $mail->addAttachmentPlain($ical, 'text/calendar', 'meeting.ics'); if ($mail->send()) { - $mailMessage .= $p->t('coodle/mailVersandtAn', array( - $email - )) . "
"; + $mailMessageSuccess .= $p->t('coodle/mailVersandtAn', array( + $email + ))."
"; } } + if ($mailMessageError != '') + { + $mailMessageError = '
'.$mailMessageError.'
'; + } + $mailMessageSuccess .= '
'; + $mailMessage = $mailMessageError.$mailMessageSuccess; } else { @@ -931,7 +1062,7 @@ END:VCALENDAR"; /** * * Prueft ob ein Raum belegt ist - * + * * @param $ort_kurzbz * @param $datum * @param array $stunden @@ -946,14 +1077,14 @@ function RaumBelegt($ort_kurzbz, $datum, $stunden) { return true; } - + // Stundenplan abfragen $stundenplan = new stundenplan('stundenplan'); if ($stundenplan->isBelegt($ort_kurzbz, $datum, $stunde)) { return true; } - + // Stundenplan DEV abfragen $stundenplan = new stundenplan('stundenplandev'); if ($stundenplan->isBelegt($ort_kurzbz, $datum, $stunde)) @@ -963,4 +1094,5 @@ function RaumBelegt($ort_kurzbz, $datum, $stunden) } return false; } + ?> \ No newline at end of file diff --git a/locale/de-AT/coodle.php b/locale/de-AT/coodle.php index 73e7477a6..d847173f3 100644 --- a/locale/de-AT/coodle.php +++ b/locale/de-AT/coodle.php @@ -48,7 +48,7 @@ $this->phrasen['coodle/terminauswahl']='Coodle Terminauswahl'; $this->phrasen['coodle/erstelltVon']='Erstellt von %s (vor %s Tagen)'; $this->phrasen['coodle/zurueckZurUebersicht']='Zurück zur Übersicht'; $this->phrasen['coodle/einladungNeuVerschicken']='Einladungen neu verschicken'; -$this->phrasen['coodle/umfrageAbgeschlossen']='Die Umfrage ist abgeschlossen. Der Termin wurde auf %s festgelegt'; +$this->phrasen['coodle/umfrageAbgeschlossen']='Die Umfrage ist abgeschlossen. Der Termin wurde auf %s festgelegt'; $this->phrasen['coodle/loeschen']='Umfrage stornieren'; $this->phrasen['coodle/zurUmfrage']='Zur Umfrage'; $this->phrasen['coodle/ressource']='Ressource / TeilnehmerIn / Gruppe'; diff --git a/locale/en-US/coodle.php b/locale/en-US/coodle.php index 9dcc907bd..66a98efb8 100644 --- a/locale/en-US/coodle.php +++ b/locale/en-US/coodle.php @@ -43,7 +43,7 @@ $this->phrasen['coodle/keineOderMehrereRäume']='No room or multiple rooms have $this->phrasen['coodle/terminauswahl']='Coodle appointment selection'; $this->phrasen['coodle/erstelltVon']='Created from %s (%s days ago)'; $this->phrasen['coodle/einladungNeuVerschicken']='Send invitations again'; -$this->phrasen['coodle/umfrageAbgeschlossen']='The poll is closed. The date has been scheduled on %s'; +$this->phrasen['coodle/umfrageAbgeschlossen']='The poll is closed. The date has been scheduled on %s'; $this->phrasen['coodle/loeschen']='Cancel poll'; $this->phrasen['coodle/zurUmfrage']='To the poll'; $this->phrasen['coodle/ressource']='Ressource';