Widget-Entwicklung für Dashboard: Speichern und Laden von XML/Text-Daten
Im Gegensatz zur API-Dokumentation zur Yahoo!-Widget-Engine, ist die Dashboard-Referenz zum Erstellen von Dashboard-Widgets außerst knapp gehalten. Zu einigen wichtigen Themen wird nur kurz oder gar nicht eingegangen. Dann hilft nur geduldiges Suchen in der Apple Mailinglist "dashboard-dev".
Ein Beispiel ist das Speichern und Laden von XML- und Textdaten im Dateisystem. Hierfür gibt es zwei Wege:
- Die Verwendung der "Widget Preferences"
- Die Nutzung von Systemkommandos zum gespeichert und das XMLHTTPRequest-Objekt zum Laden von Textdaten.
Die "Widget Preferences" eigenen sich zum Speichern von Einstellungsdaten eines Widgets. Ein kleines Beispiel wie man ein JSON-Objekt als Zeichenkette speichern kann.
var rssFeed = "{name: 'Heise Online', url: 'http://www.heise.de/newsticker/heise.rdf'}";
widget.setPreferenceForKey("selectedRSS",String(rssFeed));
Über den Schlüssel selectedRSS können die Daten wieder geladen werden.
var selectedFeed = widget.preferenceForKey("selectedRSS");
selectedFeedObj = eval("("+selectedFeed+")");
feedName = selectedFeedObj.name;
feedURL = selectedFeedObj.url;
Möchte man umfangreichere Daten wie eine XML-Struktur speichern kann man auf die Systemkommandos zurückgreifen. Dabei muss darauf geachtet werden, dass Anführungszeichen maskiert werden.
var selectedFeed = var xml = "<feed><name>Heise Online</name>heise.de/newsticker/heise.rdf</url></feed>";
widget.system ("/bin/echo " + xml+ " > /tmp/feedinfo.xml", callback);
function callback (){ widget.openURL ("file:///tmp/feedinfo.xml"); }
Um die Datei wieder in ein Widget zu laden kann sowohl widget.system oder das XMLHTTPRequest-Objekt verwendet werden.
var req = new XMLHttpRequest();
req.open("GET","localeRSS.xml",false); req.send(null);
var xml = req.responseXML;
