Apple's Dashboard
- Uses an XML Manifest file to specify data about the "widget" (width, height, thumbnail image, title and version).
- No requirements for markup around widgets.
Dashboard Example (plist)
<code><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AllowNetworkAccess</key>
<true/>
<key>CFBundleDisplayName</key>
<string>AIM Fighter</string>
<key>CFBundleIdentifier</key>
<string>com.aimfight.widget</string>
<key>CFBundleName</key>
<string>AOL Fighter</string>
<key>CFBundleShortVersionString</key>
<string>2.0</string>
<key>CFBundleVersion</key>
<string>2.0</string>
<key>CloseBoxInsetX</key>
<integer>5</integer>
<key>CloseBoxInsetY</key>
<integer>5</integer>
<key>MainHTML</key>
<string>fight.html</string>
</dict>
</plist></code>
AOL's Channel Content Modules - Sports example
- Each module (widget) has a markup envelope and some required elements that make it a module and allow for consistent styles across products.
Example
<div class="module themedList">
<div class="header"><h3>Kevin's List Of Fruit</h3></div>
<div class="body">
<ul>
<li>Apples</li>
<li>Oranges</li>
</ul>
</div>
</div>
Konfabulator
- (need someone else to fill this in, have never built one or taken them apart)
WSRP
- Spec
- SOAP envelopes to transport modules, but there is no specific formatting required for the actual content of the "portlet" (module or widget).
Module Response Example
<urn:getMarkupResponse xmlns:urn="urn:oasis:names:tc:wsrp:v1:types">
<urn:markupContext>
<urn:mimeType>text/html; charset=UTF-8</urn:mimeType>
<urn:markupString><![CDATA[
<form method="post"
action="wsrp_rewrite?wsrp-urlType=blockingAction/wsrp_rewrite"
id="wsrp_rewrite_stockForm">
<table border="0" width="100%">
<tr>
<td>Enter Stock Symbol</td>
<td><input name="symbol"></td>
</tr>
<tr>
<td><input type="submit" value="Submit"></td>
</tr>
</table>
</form>
]]></urn:markupString>
<urn:locale>en-US</urn:locale>
<urn:requiresUrlRewriting>true</urn:requiresUrlRewriting>
<urn:preferredTitle>Portfolio Manager</urn:preferredTitle>
</urn:markupContext>
<urn:sessionContext>
<urn:sessionID>sessionID_1</urn:sessionID>
<urn:expires>300</urn:expires>
</urn:sessionContext>
</urn:getMarkupResponse>