# Handbuch zu &konsolekalendar;

## Einleitung

&konsolekalendar; ist eine Kommandozeilenschnittstelle für &kde;-Kalender. Mit seiner Hilfe kann man Termine über die Kommandozeile oder eine Skriptsprache ansehen, einfügen, löschen oder verändern. Weiterhin kann &konsolekalendar; einen neuen &kde;-Kalender erstellen, ihn in einer ganzen Anzahl Formate exportieren und andere &kde;-Kalender importieren.

Standardmäßig zeigt &konsolekalendar; die Terminliste des Standardkalenders für den heutigen Tag (von 7:00 bis 17:00 Uhr) an.

Die Hauptfunktionen von &konsolekalendar;:

- Anzeigen von Kalendereinträgen mit Startzeitpunkt und Endzeitpunkt

- Einfügen (add) von Kalendereinträgen

- Entfernen (delete) von Kalendereinträgen

- Ändern (modify) von Kalendereinträgen

- Erstellen eines neuen Kalenders

- Exportieren eines Kalender in fremde Dateiformate

- Importieren eines &kde;-Kalenders

Bei &konsolekalendar; handelte es sich nicht um eine weitere grafische Benutzeroberfläche eines &kde;-Kalenders (also &korganizer;). Stattdessen kommt &konsolekalendar; genau dann zum Einsatz, wenn eine grafische Oberfläche nicht gewünscht oder nicht nutzbar ist.

&konsolekalendar; bietet weder eine vollständige Programmiersprache zur Abfrage von Kalendern noch ist es die Absicht der Autoren, solch eine Programmiersprache jemals zu erstellen. Mit einfachen Kommandozeilenparametern kann eine Liste von Terminen bearbeitet werden.

## Merkmale

Dieses Kapitel erläutert die Funktionen von &konsolekalendar; und deren Kontrolle über Kommandozeilenparameter (wiederum: &konsolekalendar; ist keine grafische Benutzeroberfläche, sondern lediglich ein Kommandozeilenprogramm).

Das Einfügen, Entfernen und Verändern von Terminen und der Export in andere Dateiformate wird erläutert. Weiterhin wird die Erzeugung und der Import eines &kde;-Kalenders erklärt.

### Termine anzeigen lassen

Der Standardmodus entspricht dem Parameter `--view` und zeigt alle Termine in einem angegebenen Zeitrahmen an.

Alle heutigen Termine zwischen 7:00 Uhr und 17:00 Uhr:

    % konsolekalendar

Das folgende Beispiel zeigt alle Termine der Woche vom 18. - 22. August an:

    % konsolekalendar --view --date 2003-08-18  --end-date 2003-08-22

### Termine einfügen

Das Einfügen von Terminen in &konsolekalendar; wird über den Parameter `--add` vorgenommen.

Das folgende Beispiel fügt einen Termin für den 4. Juni 2003 um 10:00 Uhr ein, der um 12:00 Uhr ende. Der Termin mit dem Titel "Arztbesuch" wird im Standardkalender des Benutzers eingefügt:

    % konsolekalendar --add --date 2003-06-04 --time 10:00 \
    --end-time 12:00 --summary "Arztbesuch"

Das folgende Beispiel fügt den eigenen Geburtstag in den Standardkalender ein:

    % konsolekalendar --add --date 2003-06-06 --summary "Mein Geburtstag" \
    --description "Feier"

Freie Termine können in dieser Version von &konsolekalendar; noch nicht eingefügt werden (freie Termine sind Termine, deren Zeit nicht als beschäftigt markiert wird). Solche Termine sind z.B. Geburtstage, Ferien und Feiertage. Diese Funktion soll in der nächsten Version von &konsolekalendar; ergänzt werden.

Eine Woche `Urlaub` wird in einen gemeinsam genutzten Kalender eingefügt:

    % konsolekalendar --add --file vacation.ics --date 2003-08-01 \
    --end-date 2003-08-07 --summary "Urlaub" --description "Ich löse mich in Luft auf!"

### Einträge entfernen

Einträge werden durch den Parameter `--delete` von &konsolekalendar; aus der Kalenderdatei oder anderen Ressourcen entfernt. Dazu muss die eindeutige Kennung (UID) über den Parameter `--uid` angegeben werden. Diese UID findet man, indem man den Termin zunächst über den Parameter `--view` anzeigen lässt.

Ein Fehler kann nicht rückgängi gemacht werden. Ein entfernter Eintrag ist und bleibt entfernt.

Im folgenden Beispiel wird der Termin mit der UID `&konsolekalendar;-1887551750.196` entfernt:

    % konsolekalendar --delete --uid &konsolekalendar;-1887551750.196

### Einträge ändern

Der Parameter zum Ändern von Einträgen in &konsolekalendar; lautet `--change`. Auch hier muss der Termin über die eindeutige Kennung (UID) mit dem Parameter `--uid` identifiziert werden. Die UID kann man ermitteln, indem man sich den Termin mit `--view` anzeigen lässt.

Es können die gleichen Parameter verwendet werden wie beim Einfügen von Terminen: Startzeitpunkt, Endzeitpunkt, Beschreibung und Zusammenfassung.

Beispiel: Die Zusammenfassung (summary) und Beschreibung (description) eines Termins mit der UID `&konsolekalendar;-1887551750.196` wird verändert.

`%```konsolekalendar` `--change` `--uid `&konsolekalendar;-1887551750.196`` `--summary `"Untersuchung"`` `--description `"Termin beim Nervenarzt."```

### Einen neuen Kalender erzeugen

Mit &konsolekalendar; kann man auch eine neue &kde;-Kalenderdatei erzeugen. Bevor man Einträge in den neuen Kalender einfügen kann, muss er zunächst mit Hilfe von `--create` und `--file` erzeugt werden.

Die Kalenderdatei ``/data/share/calendars/vacation.ics`` wird erzeugt:

    % konsolekalendar --create --file /data/share/calendars/vacation.ics

### Kalender in andere Formate exportieren

Mit &konsolekalendar; können &kde;-Kalender in einige gängige Formate exportiert werden. Dabei handelt es sich um eine besondere Form der Anzeige. Standardmäßig werden Termine im Format &konsolekalendar;-Text angezeigt. Ein davon abweichendes Format stellt man über den Parameter `--export-type` ein.

Eine vollständige Liste aller unterstützten Exportformate erhält man durch den Parameter `--export-list`:

    % konsolekalendar --export-list

### Exportformate

Einige der wichtigsten Exportformate werden im folgenden Abschnitt beschrieben.

#### &konsolekalendar;-Textformat

Das &konsolekalendar;-Textformat ist das Standardformat von &konsolekalendar; und dazu gedacht, einfach lesbar und für nachfolgende Skripte verarbeitbar zu sein.

Das &konsolekalendar;-Textformat lautet:

    Datum- und Zeitinformationen:
    1. Zeile Date:        DD.MM.YYYY
    2. Zeile                 HH:MM - HH:MM
    Zusammenfassung:
    3. Zeile Summary:
    4. Zeile                Zusammenfassungstext
    Beschreibung:
    5. Zeile Description:
    6. Zeile                Beschreibungstext
    Kennung:
    7. Zeile UID:
    8. Zeile                 UID

    Date:   01.11.2003
            8:00 - 9:00
    Summary:
            Besprechung
    Description:
            Die gesamte Abteilung trifft sich im großen Konferenzraum.
    UID:
            &konsolekalendar;-1128954167.1013

#### durch Kommas getrennte Werte ("CSV"-Format)

Die Informationen des Termins werden in der gleichen Reihenfolge wie im &konsolekalendar;-Textformat angezeigt. Der einzige Unterschied ist, alle Informationen befinden sich in einer Zeile in einer durch Kommas getrennten Liste. Dieses Format kann z.B. von Tabellenkalkulationsprogrammen wie &kspread;, OpenOffice.org und &Microsoft; Excel gelesen werden. Das CSV-Format eignet sich auch gut zur Weiterverarbeitung durch Skripte.

Das CSV-Format lautet:

    YYYY-MM-DD,HH:MM,YYYY-MM-DD,HH:MM,Zusammenfassung,Beschreibung,Kennung

    2003-11-01,08:00,2003-11-01,09:00,Besprechung,Die gesamte Abteilung trifft sich \
    im großen Konferenzraum.,&konsolekalendar;-1128954167.1013

#### HTML-Format

Der HTML-Export erzeugt eine gültige HTML-Datei zur Veröffentlichung im WWW. Das Format ist nicht geeignet zur Verarbeitung durch Skripte aber zur einfachen Veröffentlichung.

TODO: Bildschirmphoto einfügen

### Kalender importieren

&konsolekalendar; kann ICS-Kalenderdateien in das &kde;-Kalenderformat importieren. Alle Termine, auch identische Termine, werden eingefügt. Dieser letzte Punkt soll in der nächsten Version von &konsolekalendar; bereinigt werden.

Folgendermaßen wird die Kalenderdatei ``irgendein_Name.ics`` in den Kalender ``current.ics`` übernommen:

    % konsolekalendar --import irgendein_Name.ics --file current.ics

## Kommandozeilenparameter

Folgende Optionen versteht &konsolekalendar;:

Option | Beschreibung
`--help, --help-all` | Zeigt Hilfetexte zu den Optionen an.
`--author` | Zeigt Informationen über die Programmautoren.
`-v, --version` | Zeigt die Versionsnummer des Programms an.
`--license` | Zeigt Informationen zu den Lizenzbestimmungen.
`--verbose` | Gibt nützliche Laufzeitmeldungen aus.
`--dryrun` | Es wird ausgegeben, was getan würde, die Aktionen werden aber nicht wirklich durchgeführt (eignet sich gut für Testzwecke).
`--file` `Kalenderdatei` | Legt die zu benutzende Kalenderdatei fest. Ansonsten wird die Standardeinstellung von &korganizer; verwendet.
Hauptarbeitsmodi:
`--view` | Gibt Termine im angegebenen Ausgabeformat aus.
`--add` | Fügt einen Termin in den Kalender ein.
`--change` | Ändert die Daten eines bestehenden Termins.
`--delete` | Entfernt einen bestehenden Termin.
`--create` | Erstellt eine neue Kalenderdatei, falls noch keine existiert.
`--import` `Dateiname` | Importiert diesen Kalender in den Hauptkalender.
Parameter für die Operationen:
`--all` | Zeigt alle Kalendereinträge an.
`--uid` `Kennung` | Der Termin mit dieser Kennung wird angezeigt, entfernt oder geändert.
`--date` `Datum` | Beginnt mit dem angegebenen Tag [JJJJ-MM-DD]. Der Standardwert ist heute.
`--time` | Beginnt mit der angegebenen Zeit [HH:MM]. Der Standardwert ist 07:00.
`--end-date` `Datum` | Endet am angegebenen Tag [JJJJ-MM-DD]. Der Standardwert ist der unter `--date` angegebene Tag.
`--end-time` `Zeitpunkt` | Endet zu dieser Zeit [HH:MM]. Der Standardwert ist 17:00.
`--epoch-start` `Zeit` | Beginnt zu dieser Zeit [Sekunden seit epoch].
`--epoch-end` `Zeit` | Endet zu dieser Zeit [Sekunden seit epoch].
`--summary` `Zusammenfassung` | Fügt eine Zusammenfassung zum Termin hinzu (bei "add" und "change").
`--description` `Beschreibung` | Fügt eine Beschreibung zum Termin hinzu (bei "add" und "change").
Exportparameter:
`--export-type` `Typ` | Export zum angegebenen Typ. Der Standardtyp ist Text.
`--export-file` `Dateiname` | Export in die angegebene Datei. Standardmäßig wird der Export zur Standardausgabe durchgeführt.
`--export-list` | Zeigt eine Liste der unterstützten Exportformate an.

## Fragen und Antworten

&reporting.bugs; &updating.documentation;

Welche Konfigurationsdateien verwendet &konsolekalendar;?

Keine.

Wie lauten die Namen von &konsolekalendar;?

Der Name von &konsolekalendar; ist konsolekalendar.

In welchem Format müssen Datumsangaben gemacht werden?

erfordert die Eingabe von Datumsangaben nach dem ISO-8601-Standard, also: JJJJ-MM-DD. Dabei bedeutet JJJJ die Jahresangabe mit vier Ziffern (z.B. 2003), MM die Monatsangabe mit zwei Ziffern (01,02,...,12) und DD die Tagesangabe mit zwei Ziffern (01,02,...,31). &konsolekalendar;

&konsolekalendar; exportiert Datumsangaben immer nach dem ISO-8601-Format.

In welchem Format müssen Zeitangaben gemacht werden?

Zeitangaben für &konsolekalendar; müssen unbedingt in Übereinstimmung mit dem ISO-8601-Standard eingegeben werden, also HH:MM:SS. Dabei bedeutet HH die Stunde zweiziffrig (01,02,...,24), MM die Minuten zweiziffrig (01,02,...,60), und SS die Sekunden ebenfalls zweiziffrig (01,02,...,60).

&konsolekalendar; exportiert Zeitangaben immer entsprechend dem ISO-8601-Standard.

Fügt &konsolekalendar; bei übereinstimmenden Zeiten einen neuen Termin ein, der identisch zu einem bereits vorhandenen ist?

Nein. Sie nächste Frage.

Wie stellt &konsolekalendar; fest, ob ein Termin identisch zu einem bereits im Kalender vorhandenen ist?

&konsolekalendar; vergleicht Startzeitpunkt, Endzeitpunkt und Zusammenfassung mit allen im Kalender vorhandenen Terminen. Falls alle drei Angaben übereinstimmen, sind die Termine identisch.

Wie kann ich eine Frage zu den FAQ hinzufügen?

Senden Sie eine E-Mail an illuusio@lycos.com.

## Mitwirkende und Lizenz

&konsolekalendar; ProgrammCopyright 2002,2003:

- Tuukka Pasanen illuusio@mailcity.com

- Allen Winter awinterz@users.sourceforge.net

Dokumentation Copyright 2003:

- Allen Winter awinterz@users.sourceforge.net

- Tuukka Pasanenilluusio@mailcity.com

Noch niemand

&underFDL; &underGPL;

## Installation

### Wie bekomme ich &konsolekalendar;?

&install.intro.documentation;

ist in &kde;3 enthalten und nicht separat erhältlich. &konsolekalendar;

### Voraussetzungen

Für &konsolekalendar; müssen die &kde;-Standardbibliotheken (also das `kdelibs`-Paket) installiert sein. Zur Kompilierung wird außerdem &Qt; und das Entwicklerpaket zu `kdelibs` benötigt.

Ein Liste von Änderungen finden Sie in der Datei `ChangeLog`.

### Kompilierung und Installation

Dieser Abschnitt gibt dazu einen kurzen Überblick. Weitere Hinweise sind unter &kde; 3.2.x kompilieren zu finden.

Falls Sie kein geeignetes Binärpaket finden können, müssen Sie &konsolekalendar; aus den Quelltexten selbst kompilieren. Dazu müssen Sie die Datei `kdepim-x.x.tar.bz2` herunterladen. Durch den Befehl ``tar` `xvfj`kdepim-x.x.tar.bz2``` wird das Paket in einen Ordner ausgepackt. Wechseln Sie in diesen Ordner.

&install.compile.documentation;

Falls Sie mehr als eine Version von &kde; installiert haben (also z.B. &kde;2 und &kde;3), besteht die Gefahr, dass &konsolekalendar; in den falschen Ordner installiert wird. Sie können gegebenenfalls den &kde;-Ordner als Parameter beim Befehl ``./configure`` mit angeben. Falls sich die gewünschte &kde;-Version in `/opt/kde3` befindet:

``./configure` --prefix=`/opt/kde3``

### Einrichtung

Zur Verwendung von &konsolekalendar; mit der &kde;-Arbeitsoberfläche sind keine weiteren Konfigurationen notwendig.

&documentation.index;