Termine eines Monats anzeigen als Liste aber ohne Kalendermodul aber mit Tagen ohne Termin

am 30.10.2009 - 18:02 Uhr in
Hallo zusammen,
ich verzweifle gerade etwas, ich soll eine Terminübersicht für eine Teilnehmerliste basteln, die nicht mit dem Standard Calendar-Modul umzusetzen ist (glaube ich jedenfalls, hab mich auch schon dran versucht).
Es sollen sich User für 1 bis n Tage eintragen können, das ganze auch noch auf bestimmte Stunden voreingestellt und für einen bestimmten Ort.
Beispiel: User A möchte vom 1. Nov. 2009 ab 5 Uhr bis zum 2. Nov. 2009 bis 21 Uhr im Ort Pusemuckel teilnehmen
Es gibt 3 feste Orte und drei feste Zeiten (5-13, 13-21 und 21-5) und genau so soll nacher die Tabelle aussehen
Kalenderwoche | Wochentag | (Ort A) Zeit1 | Zeit2 | Zeit3 | (Ort B) Zeit1 | Teit2 | Zeit3 | (Ort C) ... |
Der Name des Users würde dann jetzt beim betreffenden Ort und der betreffenden Zeit stehen. Und zwar für den Zeitraum wie er sich eingetragen hat.
Ich könnte jetzt fragen "wie macht man das?" ;)) aber ein bissel will ich ja noch selbst tun.
Für den Anfang wäre mir schon geholfen, wenn es eine Möglichkeit gäbe, für einen Zeitraum den der User im Frontend auswählen kann (also per hervorgehobenem Filter), eine Liste mit Tagen zu generieren (untereinander laufend), wo nur der Tag je Zeile stehen würde (zB 1. November, 2. usw) und dort, wo es einen Node gibt, wird dann der Username eingetragen. Bis jetzt werden nur Daten ausgegeben, wo es auch Nodes zu gibt, aber eben keine leeren Einträge.
Kann man das mit Views anlegen?
Im Prinzip ist es ja das Calendar Modul, aber die Ansicht die ich brauchen könnte (Monat) lässt sich dank Tabellendesign nicht so einfach umschreiben, da müsste ich dann in die theme.inc und ich bin leider kein Profi in php und noch Beginner in drupal.
Bin für jede Hilfe dankbar.
- Anmelden oder Registrieren um Kommentare zu schreiben
ich würde mit CCK 2 Felder
am 03.11.2009 - 14:50 Uhr
ich würde mit CCK 2 Felder definieren. Eins für die Orte und eins für die Zeiten. Beide sind ja von Dir fest vorgegeben.
Dann kannst Du jeweils die einzelnen Kombinationen in Views abfragen. Bei der genauen Organisation der Tabelle könnte dann ein entsprechend gebasteltes template oder CSS helfen.
Kalender-Woche und
am 03.11.2009 - 15:06 Uhr
Kalender-Woche und Wochen-Tag könnte man mit Hilfe des Date-Moduls und CCK und der entspechenden Datumsformatierung lösen. Gibt vielleicht noch die ein oder andere Frage, deren Antwort die Gesamtlösung verkomplizieren könnte, z. Bsp. ob sich die Benutzer an einem Tag von mehrere Zeiträume eintragen können und sowas.
danke für Eure Antworten,
am 03.11.2009 - 19:21 Uhr
danke für Eure Antworten, ich musste mir leider ganz anders helfen.
Wenn es nicht so ein dirty-hacking und spezieller Anwendungsfall wäre, würde es sich auch lohnen es hier zu veröffentlichen, aber es ist mir zu peinlich ;)
Kurzgesagt habe ich die template.inc vom Calendar "gehackt" und mir die Monatsausgabe so umgebogen, dass das rauskommt was ich brauche und musste dann "nur noch" das Template vom Monat ganz fies umstricken, dass es genauso aussieht wie die Vorlage, die ich als Worddatei bekommen habe, es sieht also gar nicht mehr aus wie ein Kalender ;) und hätte ich nur mehr Ahnung von der drupal-Programmierung hätte ich mir glaube ich den Schritt über den Kalender geklemmt.
Wenn ich die Muße haben und mich mit der Programmierung von drupal weiter beschäftigen sollte, schreibe ich vielleicht mal ein Modul dazu, wäre dann so eine Art Zeitreservierung ...
och immer her damit, als
am 03.11.2009 - 21:39 Uhr
och immer her damit, als Anfänger kann man selbst aus Deinem "dirty-hacking" noch was lernen und wer weiß vielleicht spendiert ja einer der Profis hier noch den entscheidenden Tip.
Spezial-Kalender-Formate
am 03.11.2009 - 23:24 Uhr
Ich bin mal relativ weit mit "views" gekommen, damit gehen tatsächlich erstaunlich flexible Formatierungen. Ist aber ein Geduldsspiel, wenn man noch nicht drin steckt. Es lohnt sich, dazu die views/date/calender-Videos anzusehen.
Das was Du "andeutest", geht beim nächsten Versionssprung vermutlich flöten; mit views hat man mehr Chancen auf einen Upgrade-Pfad denke ich.
Gut wenn Du schnell einen "Workaround" hast, aber besser Du suchst jetzt noch (in aller Ruhe) eine zukunftssicherere Lösung.
--
http://amazonas.the-dot.de
ok, wenn ich "durch bin",
am 04.11.2009 - 11:27 Uhr
ok, wenn ich "durch bin", werd ich das was ich habe hier veröffentlichen.
Ich habe das Date-Modul und das Calendar-Modul zusätzlich zu CCK und Views installiert (und noch Prepopulate und Auto Title, u.a.). Nur die Ansichten die mir das Calender-Modul gibt sind so starr, d.h. man hat eine fixe Jahresansicht, Monatsansicht, Tagesansicht und kann dort maximal die Farben, Schriften usw. ändern, aber zB nicht die Reihenfolge der Felder.
Im Moment sieht mein überarbeitetes Template so aus (ich glaube nicht, dass sich noch etwas garvierendes ändern wird):

Und was das "in aller Ruhe" angeht: geht leider nicht, ich habe eh schon mit der Zeit überzogen die geplant war, da kann ich jetzt leider nicht mehr schauen, ob ich es noch kompatibler hinbekomme (wäre mir ja auch lieber, wenn ich es universeller hinbekommen hätte).
Allerdings soll die Geschichte eh in einem geschlossenen Umfeld ablaufen, das man nur mit Zugangsdaten erreichen können und das zu keiner Zeit öffentlich angezeigt werden soll. D.h. ich werde dort auch keine Updates einspielen etc, wenn es einmal installiert ist und läuft, dann fass ich es nicht mehr an ;) (es sei denn der Kunde wünscht Erweiterungen und zahlt dann auch erneut dafür).
Hier meine Modifikationen
am 04.11.2009 - 13:16 Uhr
ok, hier das noobige Gehackte ;) Bitte nicht lachen ;) Man kann sicherlich an 100-Stellen vereinfachen/verbessern ... wer sich die Arbeit machen will, gerne ;)
Als Inhaltstyp hab ich den Datum-Typ ergänzt um das Feld Kreis (Text als Auswahl) und eine Start- und ein Ende-Feld für die Zeiten (ebenfalls Text als Auswahl, Gruppiert unter Uhrzeiten).
Installierte Module: cck, views, calendar, prepopulate, automatic nodetitles, date (hoffe ich habe nichts notwendiges vergessen)
In der Datei: /calendar/theme/theme.inc
habe ich folgende Funktion umgeschrieben/ergänzt: template_preprocess_calendar_month
die folgende Zeile habe ich auskommentiert, weil ich keine leeren Zellen wollte
//$data .= $cell['empty'];
den else-Block hab ich komplett meinen Bedürfnissen angepasst
if ($view->date_info->mini) {
$month_rows[$weekno][$day]['data'] = $data;
}
else {
// wenn Inhalt vorhanden
if ($data) {
// doppelte Leerzeichen, Tags entfernen
$data=strip_tags($data);
$data=utf8_decode($data);
$data=preg_replace('%[^a-z0-9öäüß-]%siU',' ',$data);
$data=utf8_encode($data);
$data=ltrim($data);
$data=rtrim($data);
$data=ereg_replace(" +"," ",$data);
$month_rows[$weekno][$day]['data'] = $data;
}
// leere Felder nicht ausgeben
else { $month_rows[$weekno][$day]['data'] = ''; }
}
was passiert nun: die Daten aus dem theme.inc werden jetzt als SPACE-separierte Daten geliefert und landen in "data", anhand des Styles "class" wo dann week oder has-events drin steht, wird dann weiterverarbeitet, d.h. alle nodes werden daraus ausgelesen und die einzelnen Daten an bestimmten Stellen abgefragt (ich würde Wochen brauchen, um jeden Schritt zu erläutern ;))
Eine Zeile könnte zB so aussehen:
[data] => 1 user-admin 01 11 2009 - 02 11 2009 13-21h 21-05h Südkreis 9 user-Jens 01 10 2009 - 10 11 2009 21-05h 05-13h Nordkreis 12
wird dann an den "user-"-Markern getrennt und weiterverarbeitet. Hier gäbe es jetzt 2 User in 2 Kreisen zu verschiedenen Zeiten.
Beispielaufbau nach dem Trennen der User
[0] => admin (User)
[1] => 01 (Starttag)
[2] => 10 (Startmonat)
[3] => 2009 (Startjahr)
[4] => - (Datum Trenner, wenn mehr als 1 Tag)
[5] => 10 (Endtag)
[6] => 11 (Endmonat)
[7] => 2009 (Endjahr)
[8] => 21-05h (Startzeit
[9] => 05-13h (Endzeit)
[10] => Nordkreis (Kreis)
[11] => 13 Node
Jedenfalls wird in jeder Zelle überprüft ob ein oder mehr User sich zu dem Zeitraum eingetragen haben oder nicht und entweder wird der Name ausgegeben oder ein + jeweils verlinkt mit Neu-Erstellen und Bearbeiten.
Im Prinzip sind die Abfragen in den Zellen doppelt-gemoppelt, man könnte wahrscheinlich eine schöne Funktion schreiben um den Quelltext etwas zu reduzieren und nur an einer Stelle zu werkeln, aber wie gesagt, ich hab eigentlich schon keine Zeit mehr für das Projekt.
Es ist mir auch klar, dass man das Ganze besser in der theme.inc oder anderswo, jedenfalls nicht in der Templatedatei geschrieben hätte, aber wie gesagt keine Zeit und keinen großen Plan von drupal/php-Programmierung.
hier das Template dazu
calendar-month.tpl.txt (.txt später in .php umbenennen)
und die view
date-view.txt
Ich übernehme keine Garantie, dass es woanders genauso funktioniert wie bei mir ;) Testen auf eigene Gefahr.