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, 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
Die folgende Technik gilt nicht für das iCal-Format.
Standardmäßig enthält der Export nur Standardattribute (Eigenschaften):
- id
- text
- start_date (Format der Serialisierung wird durch die date_format Eigenschaft definiert)
- 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
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.