Чтобы включить эту функциональность, просто активируйте расширение serialize.
scheduler.plugins({
serialize: true
});
Чтобы преобразовать данные планировщика в XML-строку, используйте метод toXML:
var xml = scheduler.toXML(); //xml string
Related sample: Serialize scheduler events
Чтобы преобразовать данные планировщика в JSON-строку, используйте метод toJSON:
var json_string = scheduler.toJSON(); //json string
Имейте в виду, что этот метод возвращает JSON-строку, а не JavaScript-объект. Если вам нужен JSON-объект, используйте метод getEvents.
Related sample: Serialize scheduler events
Чтобы преобразовать данные планировщика в iCal-строку, используйте метод toICal:
var ical_string = scheduler.toICal(); //ical string
Также существует внешний скрипт для операций импорта-экспорта iCal
Related sample: Serialize scheduler events
Этот подход не применяется к формату iCal.
По умолчанию в экспорт включаются только стандартные атрибуты (свойства):
Чтобы включить пользовательские атрибуты, можно переопределить метод data_attributes. Простой пример:
scheduler.data_attributes = function(){
return [
["id"],["text"],["date_start"],["date_end"],
["custom_attribute"]
];
};
По сути, этот метод возвращает список имён атрибутов.
Также можно указать функцию форматирования для обработки данных атрибута перед сериализацией.
Это удобно для обработки дат, которые требуют форматирования перед добавлением в XML.
scheduler.data_attributes = function(){
return [
["id"],
["text"],
["start_date",scheduler.templates.format_date],
["end_date",scheduler.templates.format_date]];
}
Этот способ не применим для формата iCal.
Если используется расширение "recurring", необходимо определить дополнительные атрибуты, связанные с повторяющимися событиями:
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]];
}
Сериализация позволяет сохранять данные, просто помещая их в XML-файл, без необходимости использования базы данных.
scheduler.plugins({
serialize: true
});
<form id="xml_form" action="xml_writer.php" method="post" target="hidden_frame" >
<input type="hidden" name="data" value="" id="data">
</form>
<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();
}
<?php
file_put_contents("./data.xml",$_POST["data"]);
?>
Пустой файл data.xml выглядит так:
<data></data>
С такой настройкой планировщик сможет загружать события из data.xml, а при нажатии кнопки "save" будет сериализовать текущее состояние планировщика в XML и сохранять его обратно в файл.
Таким образом, при следующей загрузке планировщика будут отображаться ранее сохранённые события.
Если вы замечаете нежелательное экранирование данных при сохранении, убедитесь, что в вашей конфигурации PHP отключена опция "magic_quotes".
Наверх