Daten-Serialisierung nach XML, JSON, iCal

Vorbereitungen

Um diese Funktionalität zu aktivieren, müssen Sie lediglich die serialize-Erweiterung aktivieren.

scheduler.plugins({
    serialize: true
});

Export nach XML

Um die Daten des Schedulers in einen XML-String zu konvertieren, verwenden Sie die Methode toXML:

var xml = scheduler.toXML(); //xml string

Related sample:  Serialize scheduler events

Export nach JSON

Um die Daten des Schedulers in einen JSON-String zu konvertieren, verwenden Sie die Methode toJSON:

var json_string = scheduler.toJSON(); //json string

Beachten Sie, dass diese Methode einen JSON-String und kein JavaScript-Objekt zurückgibt. Wenn Sie ein JSON-Objekt benötigen, verwenden Sie stattdessen die Methode getEvents.

Related sample:  Serialize scheduler events

Export nach iCal

Um die Daten des Schedulers in einen iCal-String zu konvertieren, verwenden Sie die Methode toICal:

var ical_string = scheduler.toICal(); //ical string

Zusätzlich gibt es ein externes Skript für iCal Import-Export-Operationen

Related sample:  Serialize scheduler events

Attribute bei der Serialisierung

Dieser Ansatz gilt nicht für das iCal-Format.

Standardmäßig werden beim Export nur die Standardattribute (Eigenschaften) berücksichtigt:

  1. id
  2. text
  3. start_date (das Serialisierungsformat wird durch die Eigenschaft date_format gesteuert)
  4. end_date

Um benutzerdefinierte Attribute einzubeziehen, können Sie die Methode data_attributes überschreiben. Ein einfaches Beispiel sieht so aus:

scheduler.data_attributes = function(){
    return [
        ["id"],["text"],["date_start"],["date_end"],
        ["custom_attribute"]
    ];
};

Im Wesentlichen gibt diese Methode eine Liste von Attributnamen zurück.

Sie können auch eine Formatierungsfunktion angeben, um Attributdaten vor der Serialisierung zu verarbeiten.

Dies ist nützlich, um Datumsangaben vor dem Hinzufügen zu XML zu formatieren.

scheduler.data_attributes = function(){
    return [
        ["id"],
        ["text"],
        ["start_date",scheduler.templates.format_date],
        ["end_date",scheduler.templates.format_date]];
}

Serialisierung von wiederkehrenden Ereignissen

Diese Technik ist für das iCal-Format nicht anwendbar.

Wenn die "recurring"-Erweiterung verwendet wird, müssen zusätzliche Attribute für wiederkehrende Ereignisse definiert werden:

scheduler.data_attributes = function(){
    var empty = function(a){ return a||""; }
    return [["id"],
        ["text"],
        ["start_date",scheduler.templates.xml_format],
        ["end_date",scheduler.templates.xml_format],
        ["rec_type",empty],
        ["event_length",empty],
        ["event_pid",empty]];
}

Speichern von Daten in einer XML-Datei

Die Serialisierung ermöglicht es, Daten einfach durch Speichern in einer XML-Datei zu sichern, ohne dass eine Datenbank erforderlich ist.

  • Aktivieren Sie zunächst die serialize-Erweiterung:
scheduler.plugins({
    serialize: true
});
  • Fügen Sie als Nächstes ein verstecktes Formular zur Seite hinzu, um die Daten zu speichern:
<form id="xml_form" action="xml_writer.php" method="post" target="hidden_frame" >
    <input type="hidden" name="data" value="" id="data">
</form>
  • Fügen Sie eine "Speichern"-Schaltfläche auf der Seite hinzu
<input type="button" name="save" value="save" onclick="save()" >
function save(){
    var form = document.getElementById("xml_form");
    form.elements.data.value = scheduler.toXML();
    form.submit();
}
  • Schreiben Sie serverseitig die Daten in eine bestehende Datei. Die xml_writer.php könnte folgendermaßen aussehen:
<?php
    file_put_contents("./data.xml",$_POST["data"]);
?>

Eine leere data.xml-Datei sieht so aus:

<data></data>

Mit dieser Konfiguration kann der Scheduler Ereignisse aus data.xml laden, und durch Drücken der "save"-Schaltfläche wird der aktuelle Zustand des Schedulers serialisiert und in der Datei gespeichert.

So werden beim nächsten Laden des Schedulers die zuvor gespeicherten Ereignisse angezeigt.

Fehlerbehebung

Wenn Sie beim Speichern unerwünschtes Escaping der Daten bemerken, stellen Sie sicher, dass "magic_quotes" in Ihrer PHP-Konfiguration deaktiviert ist.

Nach oben