Zum Hauptinhalt springen

Datenserialisierung in XML, JSON, iCal

Vorbereitungen

Um solche Funktionalität zu aktivieren, aktiviere die serialize-Erweiterung.

scheduler.plugins({
serialize: true
});

Export nach XML

Um Scheduler-Daten in einen XML-String zu serialisieren, verwenden Sie die toXML Methode:

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

Scheduler-Ereignisse serialisieren

Export nach JSON

Um Scheduler-Daten in einen JSON-String zu serialisieren, verwenden Sie die toJSON Methode:

const json_string = scheduler.toJSON(); //json string
Hinweis

Hinweis, die Methode gibt einen JSON-String zurück, kein Objekt. Wenn Sie ein JSON-Objekt benötigen - verwenden Sie die getEvents Methode.

Scheduler-Ereignisse serialisieren

Export nach iCal

Um Scheduler-Daten in einen ICal-String zu serialisieren, verwenden Sie die toICal Methode:

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

Außerdem gibt es ein externes Skript für iCal-Import-Export-Operationen

Scheduler-Ereignisse serialisieren

Attribute in der Serialisierung

Hinweis

Die folgende Technik gilt nicht für das iCal-Format.

Standardmäßig enthält der Export nur Standardattribute (Eigenschaften):

  1. id
  2. text
  3. start_date (Format der Serialisierung wird durch die date_format Eigenschaft definiert)
  4. end_date

Wenn Sie einige benutzerdefinierte Attribute einbeziehen müssen, können Sie die data_attributes-Methode neu definieren. Im einfachsten Fall sieht es wie folgt aus:

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

Im Wesentlichen definiert die Methode eine Liste von Attributnamen.

Aber Sie können die Formatierungsfunktion definieren, die beschreibt, wie Attributdaten vor der Serialisierung verarbeitet werden müssen.

Es kann nützlich sein für Datumsangaben, die vor der Platzierung in XML konvertiert werden müssen

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

Serialisierung von wiederkehrenden Ereignissen

Hinweis

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

Wenn Sie die Erweiterung "recurring" verwenden, müssen Sie zusätzliche Attribute definieren, die von wiederkehrenden Ereignissen verwendet werden:

scheduler.data_attributes = function(){
const 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 Ihnen, eine einfache Routine zum Speichern von Daten zu implementieren, die keine DB benötigt – die Daten werden in einer XML-Datei gespeichert.

  • Zunächst aktivieren Sie die serialize-Erweiterung:
scheduler.plugins({
serialize: true
});
  • Platzieren Sie anschließend ein verstecktes Formular zum Speichern der Daten auf der Seite:
<form id="xml_form" action="xml_writer.php" method="post" target="hidden_frame" >
<input type="hidden" name="data" value="" id="data"/>
</form>
  • Platzieren Sie den "Save"-Button auf der Seite
<input type="button" name="save" value="save" onclick="save()" />

function save(){
let form = document.getElementById("xml_form");
form.elements.data.value = scheduler.toXML();
form.submit();
}
  • Auf der Serverseite schreiben Sie die Daten in eine vorhandene Datei. xml_writer.php könnte wie folgt aussehen:
<?php
file_put_contents("./data.xml",$_POST["data"]);
?>

Die leere data.xml lautet:

<data></data>

Så ist alles erledigt, jetzt kann der Scheduler aus data.xml geladen werden, der Klick auf den "save"-Button serialisiert den aktuellen Zustand des Schedulers nach XML und speichert ihn zurück in die Datei.

Beim nächsten Laden werden die zuvor gespeicherten Ereignisse geladen.

Fehlerbehebung

Wenn beim Speichern der Daten unerwünschte Escaping auftreten, stellen Sie sicher, dass in der PHP-Konfiguration magic_quotes deaktiviert ist.

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.