Kalender - Wochentagname in einem Feld via eTemplate

Hallo,

erstmal Danke für die großartig gelungene groupware.
Infolog, Adressbuch, Dateiverwaltung und Kalender machen das Leben doch sehr viel leichter im Alltag!

Hier meine Frage:
Ich habe den Kalender via eTemplate ein wenig angepaßt. (neue Spalten (KFZ, Technische Leitung, Sonstiges) hinzugefügt)
Wird auch in die DB geschrieben und gelesen - alles super.
Nun versuche ich aus der Listenansicht einen “Arbeitsplan” zu machen, der nur bestimmte Spalten enthält. Das habe ich auch soweit alles schon gemacht.
In der ersten Spalte steht das Start- und das Enddatum, allerdings hätte ich gerne noch eine Spalte davor, in der nur der Wochentag (Montag, Dienstag, etc.) erscheint.
Ich hab herusgefunden, dass eine Spalte vom Typ “Datum” mit “${row}[start]” als Name und “,16” als “Option” das Datum mit dem Wochentag davor ausgibt.
Wie aber kann ich nur den Wochentagnamen bekommen? Gibt es dafür auch eine Option?
Und wenn ja, gibt es dazu noch eine Möglichkeit die Samstage und Sonntage farblich anders zu gestalten als den Rest der Woche?

Freue mich über jede hilfreiche Antwort

Gruß
Shorty

P.S.:Gibt es eine Dokumentation über die Optionen die “übergeben” werden können?
(wie z.B.: ,noPrint ,noShow ,noWrap etc.)

Hi,

ShortD schrieb:

Hallo,

erstmal Danke für die großartig gelungene groupware.
Infolog, Adressbuch, Dateiverwaltung und Kalender machen das Leben doch sehr
viel leichter im Alltag!

:slight_smile:

Hier meine Frage:
Ich habe den Kalender via eTemplate ein wenig angepaßt. (neue Spalten (KFZ,
Technische Leitung, Sonstiges) hinzugefügt)
Wird auch in die DB geschrieben und gelesen - alles super.
Nun versuche ich aus der Listenansicht einen “Arbeitsplan” zu machen, der
nur bestimmte Spalten enthält. Das habe ich auch soweit alles schon gemacht.
In der ersten Spalte steht das Start- und das Enddatum, allerdings hätte ich
gerne noch eine Spalte davor, in der nur der Wochentag (Montag, Dienstag,
etc.) erscheint.
Ich hab herusgefunden, dass eine Spalte vom Typ “Datum” mit "${row}[start]"
als Name und “,16” als “Option” das Datum mit dem Wochentag davor ausgibt.
Wie aber kann ich nur den Wochentagnamen bekommen? Gibt es dafür auch eine
Option?

Nein, bisher nicht.

Du mußt den dow (day of week) Wert in der get_rows Methode zB. mittels
date() berechnen und in die entsprechende Zeile schreiben. Dann kannst
du ein readonly Wochentagsauswahl benutzen um es anzuzeigen.

Und wenn ja, gibt es dazu noch eine Möglichkeit die Samstage und Sonntage
farblich anders zu gestalten als den Rest der Woche?

Geht so ähnlich: Du trägst die für jede Zeile in der get_rows Methode,
abhänig vom Wochentag eine css Klasse ein. Die verwendest du dann im
Template statt der dort eingetragen “row” (2 Farben abwechselned).

Freue mich über jede hilfreiche Antwort

Gruß
Shorty

P.S.:Gibt es eine Dokumentation über die Optionen die “übergeben” werden
können?
(wie z.B.: ,noPrint ,noShow ,noWrap etc.)

Das sind einfache CSS Klassen aus calendar/templates/default/app.css

Ralf

Ralf Becker
eGroupWare Training & Support ==> http://www.egroupware-support.de
Outdoor Unlimited Training GmbH [www.outdoor-training.de]
Handelsregister HRB Kaiserslautern 3587
Geschäftsführer Birgit und Ralf Becker
Leibnizstr. 17, 67663 Kaiserslautern, Germany
Telefon +49 (0)631 31657-0


This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/


egroupware-german mailing list
egroupware-german@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/egroupware-german

Hi,

Danke für die schnelle Antwort.

Das mit einem readonly Wochentagsauswahlfeld zu machen hatte ich mir schon gedacht, und es ehrlich gesagt schon (natürlich) ohne Erfolg versucht, da ich den dow wohl erst selbst “herausfinden” muß.

Hab mich mit einigen Programmiersprachen schon auseinandergesetzt, allerdings noch nicht so wirklich mit php.
Habe das gesamte egroupware-Verzeichnis nach einer get_rows-Methode durchsucht, allerdings taucht dieser Begriff nur in der eTemplate Dokumentation auf.
Hast Du vielleicht noch einen weiteren Hinweis wie ich die Berechnung genau machen kann?
Ändere ich etwas im Code, oder geht es von eTemplate aus?
get_rows im Feld “Name” oder “Optionen”!?!
Eine neue Funktion schreiben und via eTemplate aufrufen!?!

Auf der suche nach der get_rows-Methode… :slight_smile:

THX

Shorty

Hallo,

ich hab’s denn doch gefunden…

habe in der class.uilist.inc.php folgenden code hinzugefügt:

$mweek = array(“Sonntag”,“Montag”,“Dienstag”,“Mittwoch”,“Donnerstag”,“Freitag”,“Samstag”);
$dow = date(“w”, $event[‘start’]);
$event[‘mdow’] = “$mweek[$dow]”;

Das Feld ist kein Wochentag-Auswahlfeld mit Schreibschutz, sondern ein einfaches Textfeld.

Wenn ich das Wochentagfeld eingesetzt habe, bekam ich zwei Tage angezeigt, von denen keiner der gesuchte Wochentag war.

Jetzt brauche ich “nur” noch die Lösung des CSS finden.

Gruß

Shorty

Hi,

Ich habe versucht das zu tun, was du beschrieben hast, aber leider ohne Erfolg…
Ralf Becker-3 wrote:

Geht so ähnlich: Du trägst die für jede Zeile in der get_rows Methode,
abhänig vom Wochentag eine css Klasse ein. Die verwendest du dann im
Template statt der dort eingetragen “row” (2 Farben abwechselned).

Ich habe in eTemplate unter “Attribute der Tabellenzeile” “mW” (für ‘myWeek’) als “Class” eingetragen.

Allerdings verstehe ich nicht ganz wie ich jedem Tag eine andere Klasse zuweisen kann.

in “app.css” habe ich Folgendes hinzugefügt: (angelehnt an calTimeRowOff)

.mW{
/* background-color: silver; */
background-color: #FFFFFF;
}

.mW,.mWE{
background-color: #FF0000;
}

Eine Abfrage ist ja eigentlich auch nicht so schwierig:
Da ich den $dow ja schon habe (siehe vorheriges Posting) nutze ich einfach switch um…tja…wie die Klasse zuzuweisen?
Da ich im Template als Class “mW” eingetragen habe, werden alle Reihen in Stil “mW” (also weiß) dargestellt.
Wenn der $dow nun 0 oder 6 (Sonntag oder Samstag) ist, würde ich gerne die “mWE” (myWeekEnd) zuweisen. Aber wie?

switch ($dow) {
case 0:
…
break;
case 6:
…
break;
}

Danke im Vorraus für einen Tipp

Shorty

Tach,

Habe es nach unzähligen Versuchen hinbekommen und der Vollständigkeit halber (gibt nichts schlimmeres als "Danke ich hab’s selbst herausgefunden’ in einem Forumals letzten Post) hier meine Lösung.

Habe im app.css Folgende Teile hinzugefügt:

.Monday{
background-color: #FFFFFF;
}
.Tuesday{
background-color: #FFFFFF;
}
.Wednesday{
background-color: #FFFFFF;
}
.Thursday{
background-color: #FFFFFF;
}
.Friday{
background-color: #FFFFFF;
}
.Saturday{
background-color: #DDDDDD;
}
.Sunday{
background-color: #CCCCCC;

Im Template habe ich als “Class” folgendes eingetragen:

$row_cont[mdow]

Damit geht es denn nun endlich.

In Abänderung zu meinem vorigen Post, habe ich für die Wochentagberechnung das Array mit den englischen Wochentagnamen gefüllt, da sie ja von egroupware übersetzt werden.
Sieht also so aus:

$mweek = array(“Sunday”,“Monday”,“Tuesday”,“Wednesday”,“Thursday”,“Friday”,“Saturday”);
$dow = date(“w”, $event[‘start’]);
$event[‘mdow’] = “$mweek[$dow]”;

Falls es jemand ebenfalls ändern möchte, die drei Zeilen habe ich in class.uilist.inc.php (im Verzeichnis /calendar/inc) ab Zeile 290 eingefügt.

Weiß nicht, ob es die eleganteste Lösung ist, aber sie funktioniert.

Gruß
Shorty