The earlier gadget projects I developed have utilized third-party web services from a variety of sources:
- Google Maps for geographic data
- Google Docs spreadsheet as XML datasource
- IP-Geolocation (IP address->Country) service from HostIP.Info
- User profile and gaming statistics as XML feeds from Xfire.
Given the constraints of a space-restricted, remotely-hosted, javascript-only application, gadgets primarily rely on web services to provide richer data content without the attendant complexity. However, javascript is beset by
cross-domain restrictions that even impact
xmlHttpRequest, the very underpinnings of Ajax. Since Google gadgets are javascript apps, the same-origin security policy prevents it from making requests outside the domain it is running on.
Although Google addressed this problem by providing the
_IG_FetchXMLContent function, it lacks support for https, SOAP and POST. It looks like the newer
gadget.io.makeRequest function is intended to address these deficiencies. However, the availability of the gadget.io.* functions in Google's production servers is yet forthcoming.
I decided not to hold my breath..
KT-Gadget is a widget front-end to
KnowledgeTree - an open-source document management system. To access KnowledgeTree's
SOAP services, I had to deploy another application to receive the requests from Google's _IG_FetchXMLContent calls, make the corresponding SOAP requests, and generate the appropriate XML output. Two basic functions are implemented: login and get_folder_contents. The functions are based on
PHP, the same language that was used to develop KnowlegeTree.
After pushing the login button, the gadget will indicate the progress of the subsequent operations:
- Logging in
- Fetching Documents
- Sorting Documents
In its current state, the gadget is useful as a watcher of some sort of inbox for workflow-enabled documents like incoming faxes needing disposition or requisitions requiring approval. Sit around and watch your work pile up...
I plan to implement two more functions: download_document and perform_document_workflow_transition. We don't want work to pile up, do we? Other nice-to-have features: watch all accessible folders and sub-folders; show number of documents per folder; folder and document colors based on certain thresholds like document count, age, metadata contents (priority, etc); automatic refresh.
But don't hold your breath...