<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="FeedCreator 1.7.2-ppt DokuWiki" --><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
    <channel>
        <title>PHPCow Documentation</title>
        <description />
        <link>http://www.phpcow.com/docs/</link>
        <lastBuildDate>Sun, 15 Nov 2009 08:11:03 -0500</lastBuildDate>
        <generator>FeedCreator 1.7.2-ppt DokuWiki</generator>
        <image>
            <url>http://www.phpcow.com/docs/lib/tpl/default/img/logo.png</url>
            <title>PHPCow Documentation</title>
            <link>http://www.phpcow.com/docs/</link>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PhpcowDocumentation" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>Feed Management</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/TUbTXhJfta8/feed-management</link>
            <description>&lt;h1&gt;&lt;a name="feed-management" id="feed-management"&gt;Feed Management&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

Through our Feed Directory interface, you can easily manage content categories and feeds in one place. No need for jumping between pages, as everything you need is composed as a single page application. With its integrated drag and drop functionality you can easily achieve your goals with minimum effort.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p2.png?id=myweb%3Aacp%3Afeed-management&amp;amp;cache=cache" class="media" title="myweb:acp:p2.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p2.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p3.png?id=myweb%3Aacp%3Afeed-management&amp;amp;cache=cache" class="media" title="myweb:acp:p3.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p3.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=TUbTXhJfta8:y62Y9Ycdg44:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=TUbTXhJfta8:y62Y9Ycdg44:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=TUbTXhJfta8:y62Y9Ycdg44:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=TUbTXhJfta8:y62Y9Ycdg44:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=TUbTXhJfta8:y62Y9Ycdg44:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=TUbTXhJfta8:y62Y9Ycdg44:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=TUbTXhJfta8:y62Y9Ycdg44:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=TUbTXhJfta8:y62Y9Ycdg44:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=TUbTXhJfta8:y62Y9Ycdg44:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=TUbTXhJfta8:y62Y9Ycdg44:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=TUbTXhJfta8:y62Y9Ycdg44:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/TUbTXhJfta8" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:acp</category>
            <pubDate>Wed, 19 Nov 2008 10:40:56 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/acp/feed-management</feedburner:origLink></item>
        <item>
            <title>Language Tools</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/cKLbvhHxht8/language-tools</link>
            <description>&lt;h1&gt;&lt;a name="language-tools" id="language-tools"&gt;Language Tools&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

MyWeb supports i18n and is not limited to only one language; this tool will be your perfect assistant for creating, translating and managing languages to tailor the system to your users needs. You can create one or more languages for each of the countries (for example there are four languages in Switzerland) and easily manage them.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p7.png?id=myweb%3Aacp%3Alanguage-tools&amp;amp;cache=cache" class="media" title="myweb:acp:p7.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p7.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=cKLbvhHxht8:GtC09lXBfyI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=cKLbvhHxht8:GtC09lXBfyI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=cKLbvhHxht8:GtC09lXBfyI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=cKLbvhHxht8:GtC09lXBfyI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=cKLbvhHxht8:GtC09lXBfyI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=cKLbvhHxht8:GtC09lXBfyI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=cKLbvhHxht8:GtC09lXBfyI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=cKLbvhHxht8:GtC09lXBfyI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=cKLbvhHxht8:GtC09lXBfyI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=cKLbvhHxht8:GtC09lXBfyI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=cKLbvhHxht8:GtC09lXBfyI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/cKLbvhHxht8" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:acp</category>
            <pubDate>Wed, 19 Nov 2008 10:41:43 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/acp/language-tools</feedburner:origLink></item>
        <item>
            <title>Local Content</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/4Pwy6hCUaNg/local-content</link>
            <description>&lt;h1&gt;&lt;a name="local-content" id="local-content"&gt;Local Content&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

Through the local content interface, you can choose any country from selected region and create content (logically organize feeds into categories) that is related to the selected country, allowing dashboard users to select content not only by topic but also by their geographical preferences.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p1.png?id=myweb%3Aacp%3Alocal-content&amp;amp;cache=cache" class="media" title="myweb:acp:p1.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p1.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4Pwy6hCUaNg:yQ1wtp-NF-w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4Pwy6hCUaNg:yQ1wtp-NF-w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4Pwy6hCUaNg:yQ1wtp-NF-w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=4Pwy6hCUaNg:yQ1wtp-NF-w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4Pwy6hCUaNg:yQ1wtp-NF-w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4Pwy6hCUaNg:yQ1wtp-NF-w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=4Pwy6hCUaNg:yQ1wtp-NF-w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4Pwy6hCUaNg:yQ1wtp-NF-w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4Pwy6hCUaNg:yQ1wtp-NF-w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=4Pwy6hCUaNg:yQ1wtp-NF-w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4Pwy6hCUaNg:yQ1wtp-NF-w:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/4Pwy6hCUaNg" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:acp</category>
            <pubDate>Wed, 19 Nov 2008 10:41:09 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/acp/local-content</feedburner:origLink></item>
        <item>
            <title>MySql Tools</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/kNkcNdobCkw/mysql-tools</link>
            <description>&lt;h1&gt;&lt;a name="mysql-tools" id="mysql-tools"&gt;MySql Tools&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

MySql Toolbox allows you to manage your database. You can perform necessary database related actions through this easy-to-use interface. With just a few mouse clicks you can: Optimize, Analyze, Check, Repair, Export and even browse a table&amp;#039;s content and its structure.
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p9.png?id=myweb%3Aacp%3Amysql-tools&amp;amp;cache=cache" class="media" title="myweb:acp:p9.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p9.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kNkcNdobCkw:GXfQwP5diMs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kNkcNdobCkw:GXfQwP5diMs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kNkcNdobCkw:GXfQwP5diMs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=kNkcNdobCkw:GXfQwP5diMs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kNkcNdobCkw:GXfQwP5diMs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kNkcNdobCkw:GXfQwP5diMs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=kNkcNdobCkw:GXfQwP5diMs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kNkcNdobCkw:GXfQwP5diMs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kNkcNdobCkw:GXfQwP5diMs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=kNkcNdobCkw:GXfQwP5diMs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kNkcNdobCkw:GXfQwP5diMs:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/kNkcNdobCkw" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:acp</category>
            <pubDate>Wed, 19 Nov 2008 10:39:49 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/acp/mysql-tools</feedburner:origLink></item>
        <item>
            <title>System Logs</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/4zDivBcysu4/system-logs</link>
            <description>&lt;h1&gt;&lt;a name="system-logs" id="system-logs"&gt;System Logs&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

System Logs combines both, CP Login Logs and CP Action logs administrative tools.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "System Logs" [1-110] --&gt;
&lt;h2&gt;&lt;a name="cp-action-logs" id="cp-action-logs"&gt;CP Action Logs&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

Through CP Logs you can monitor all actions of your Control Panel users. You are able to see their activity, as well as search or remove old and unnecessary data.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p10.png?id=myweb%3Aacp%3Asystem-logs&amp;amp;cache=cache" class="media" title="myweb:acp:p10.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p10.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "CP Action Logs" [111-338] --&gt;
&lt;h2&gt;&lt;a name="cp-login-logs" id="cp-login-logs"&gt;CP Login Logs&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

Through this interface you can easily monitor users who have accessed or tried to access your control panel. You can see login status, and examine logged &lt;acronym title="Hyper Text Transfer Protocol"&gt;HTTP&lt;/acronym&gt; data.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p11.png?id=myweb%3Aacp%3Asystem-logs&amp;amp;cache=cache" class="media" title="myweb:acp:p11.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p11.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;
&lt;/p&gt;



&lt;/div&gt;
&lt;!-- SECTION "CP Login Logs" [339-] --&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4zDivBcysu4:Zuk0P8M9QPA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4zDivBcysu4:Zuk0P8M9QPA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4zDivBcysu4:Zuk0P8M9QPA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=4zDivBcysu4:Zuk0P8M9QPA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4zDivBcysu4:Zuk0P8M9QPA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4zDivBcysu4:Zuk0P8M9QPA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=4zDivBcysu4:Zuk0P8M9QPA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4zDivBcysu4:Zuk0P8M9QPA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4zDivBcysu4:Zuk0P8M9QPA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=4zDivBcysu4:Zuk0P8M9QPA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=4zDivBcysu4:Zuk0P8M9QPA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/4zDivBcysu4" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:acp</category>
            <pubDate>Wed, 19 Nov 2008 10:40:26 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/acp/system-logs</feedburner:origLink></item>
        <item>
            <title>User Management</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/Kv53qiRYIX4/user-management</link>
            <description>&lt;h1&gt;&lt;a name="user-management" id="user-management"&gt;User Management&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

User management interface is the main tool for managing all of your users if you are running MyWeb as a standalone service, and using it, you can easily create, edit, activate or disable users.
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p5.png?id=myweb%3Aacp%3Auser-management&amp;amp;cache=cache" class="media" title="myweb:acp:p5.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p5.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=Kv53qiRYIX4:kqVV9a2TAiw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=Kv53qiRYIX4:kqVV9a2TAiw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=Kv53qiRYIX4:kqVV9a2TAiw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=Kv53qiRYIX4:kqVV9a2TAiw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=Kv53qiRYIX4:kqVV9a2TAiw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=Kv53qiRYIX4:kqVV9a2TAiw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=Kv53qiRYIX4:kqVV9a2TAiw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=Kv53qiRYIX4:kqVV9a2TAiw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=Kv53qiRYIX4:kqVV9a2TAiw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=Kv53qiRYIX4:kqVV9a2TAiw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=Kv53qiRYIX4:kqVV9a2TAiw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/Kv53qiRYIX4" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:acp</category>
            <pubDate>Wed, 19 Nov 2008 10:41:31 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/acp/user-management</feedburner:origLink></item>
        <item>
            <title>Widget Management</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/ANxFDGybD6I/widget-management</link>
            <description>&lt;h1&gt;&lt;a name="widget-management" id="widget-management"&gt;Widget Management&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

Through the Widget Management Interface, you can decide which widget will be available for dashboard users. Install/uninstall can be done with just one click. Also you can easily configure widgets through the same interface as some of the widgets require additional configuration parameters (e.g. &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; key, User ID).
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/acp/p4.png?id=myweb%3Aacp%3Awidget-management&amp;amp;cache=cache" class="media" title="myweb:acp:p4.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/acp/p4.png?w=800&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" width="800" /&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=ANxFDGybD6I:S1MEhxu0C9s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=ANxFDGybD6I:S1MEhxu0C9s:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=ANxFDGybD6I:S1MEhxu0C9s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=ANxFDGybD6I:S1MEhxu0C9s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=ANxFDGybD6I:S1MEhxu0C9s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=ANxFDGybD6I:S1MEhxu0C9s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=ANxFDGybD6I:S1MEhxu0C9s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=ANxFDGybD6I:S1MEhxu0C9s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=ANxFDGybD6I:S1MEhxu0C9s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=ANxFDGybD6I:S1MEhxu0C9s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=ANxFDGybD6I:S1MEhxu0C9s:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/ANxFDGybD6I" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:acp</category>
            <pubDate>Wed, 19 Nov 2008 10:41:20 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/acp/widget-management</feedburner:origLink></item>
        <item>
            <title>Advanced Widget Example</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/5XQ7UcuSwow/advanced-widget-example</link>
            <description>&lt;h1&gt;&lt;a name="advanced-widget-example" id="advanced-widget-example"&gt;Advanced Widget Example&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

In this article we will create Google Search Widget based on &lt;strong&gt;Google &lt;acronym title="Asynchronous JavaScript and XML"&gt;AJAX&lt;/acronym&gt; Search &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt;&lt;/strong&gt;. First of all lets look at  &lt;a href="http://code.google.com/apis/ajaxsearch/documentation/#fonje" class="urlextern" title="http://code.google.com/apis/ajaxsearch/documentation/#fonje"&gt;this document&lt;/a&gt; to find out what Google offers. As you can see Google returns JSON response that we will use for implementing Google Search Widget.
&lt;/p&gt;

&lt;p&gt;
Lets begin with creating required files. As you may remember from hello world example there are one required folder and two required files, but for this example we will use additional &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; file. Look at the picture: 
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture9.png?id=myweb%3Awidgets%3Aadvanced-widget-example&amp;amp;cache=cache" class="media" title="myweb:widgets:picture9.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture9.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Now open config.xml file and copy and paste following xml code:
&lt;/p&gt;
&lt;pre class="code xml"&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;encoding&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;widget&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;googlesearch&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;icon&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;google&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;section&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;search&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;title&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Google Search&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/title&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;description&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class="sc2"&gt;&amp;lt;![CDATA[Google Search Widget]]&amp;gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/description&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;tags&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class="sc2"&gt;&amp;lt;![CDATA[google, search]]&amp;gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/tags&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/widget&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;

&lt;div class="note"&gt;
Note that configuration file is not required for development version.
&lt;/div&gt;

&lt;/p&gt;

&lt;p&gt;
Thats it, we are done with configuration. Now we need to define our goals. First of all lets decide what user interface component we need, these are:

&lt;/p&gt;
&lt;ol&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt;  &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt; form with input field and button to submit queries&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt;  Search result area where returned result will be displayed&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt;  Pagination control because returned result can be quite long&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;

Now based on defined requirements lets create widget skeleton and setup it:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kw2"&gt;function&lt;/span&gt; GoogleSearch&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * create initial configuration
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;config&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'googlesearch'&lt;/span&gt;,   &lt;span class="co1"&gt;//widget name&lt;/span&gt;
            title: &lt;span class="st0"&gt;'Google Search'&lt;/span&gt;, &lt;span class="co1"&gt;//widget title&lt;/span&gt;
            iconId: &lt;span class="st0"&gt;'google'&lt;/span&gt;,       &lt;span class="co1"&gt;//icon identifier&lt;/span&gt;
            css: &lt;span class="kw2"&gt;true&lt;/span&gt;               &lt;span class="co1"&gt;//tell widget engine that it needs to load widget's CSS file&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * onload event will be triggered after widget completed loding
         * perform user interface setup here
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="kw3"&gt;onload&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * create HTML form with ascribed input elements and result area
             */&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
                &lt;span class="st0"&gt;'&amp;lt;form method=&amp;quot;post&amp;quot; action=&amp;quot;&amp;quot; class=&amp;quot;google-search-form&amp;quot;&amp;gt;'&lt;/span&gt; +
                    &lt;span class="st0"&gt;'&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;q&amp;quot; /&amp;gt;'&lt;/span&gt; +
                    &lt;span class="st0"&gt;'&amp;lt;input type=&amp;quot;button&amp;quot; name=&amp;quot;search&amp;quot; value=&amp;quot;Search&amp;quot; /&amp;gt;'&lt;/span&gt; +
                &lt;span class="st0"&gt;'&amp;lt;/form&amp;gt;'&lt;/span&gt; +
                &lt;span class="st0"&gt;'&amp;lt;div class=&amp;quot;google-search-results&amp;quot;&amp;gt;Nothing to show...&amp;lt;/div&amp;gt;'&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * setup Pagination UI component
             */&lt;/span&gt;
            &lt;span class="kw2"&gt;var&lt;/span&gt; pagination = UDW.&lt;span class="me1"&gt;Components&lt;/span&gt;.&lt;span class="me1"&gt;Pagination&lt;/span&gt;.&lt;span class="me1"&gt;getComponent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
                &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                    currentPage: &lt;span class="nu0"&gt;1&lt;/span&gt;,            &lt;span class="co1"&gt;//starting page&lt;/span&gt;
                    rowsPerPage: &lt;span class="nu0"&gt;4&lt;/span&gt;,            &lt;span class="co1"&gt;//number of results per page&lt;/span&gt;
                    rowName: &lt;span class="st0"&gt;'results'&lt;/span&gt;,        &lt;span class="co1"&gt;//name of the collection in the result-set&lt;/span&gt;
                    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;rows&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt; &lt;span class="co1"&gt;//callback function to process result-set&lt;/span&gt;
&amp;nbsp;
                        &lt;span class="kw2"&gt;var&lt;/span&gt; html = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
			html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;ul&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
                        &lt;span class="kw1"&gt;for&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; i = &lt;span class="nu0"&gt;0&lt;/span&gt;; i &lt;span class="sy0"&gt;&amp;lt;&lt;/span&gt; rows.&lt;span class="me1"&gt;length&lt;/span&gt;; i++&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;div class=&amp;quot;google-search-link&amp;quot;&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;a href=&amp;quot;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;url&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;title&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;lt;/a&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;div class=&amp;quot;google-search-content&amp;quot;&amp;gt;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;content&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;div class=&amp;quot;google-search-visible-url&amp;quot;&amp;gt;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;visibleUrl&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
                        html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;/ul&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
                        &lt;span class="co1"&gt;//push generated HTML code to search result area&lt;/span&gt;
                        $&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'div.google-search-results'&lt;/span&gt;, widget.&lt;span class="me1"&gt;getBody&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;html&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;html.&lt;span class="me1"&gt;join&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;''&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
                    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
                &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="co1"&gt;//add pagination to the widget's footer section&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addToFooter&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;pagination&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'googlesearch'&lt;/span&gt;, GoogleSearch&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Now, if you try to load the widget you will see something like this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture10.png?id=myweb%3Awidgets%3Aadvanced-widget-example&amp;amp;cache=cache" class="media" title="myweb:widgets:picture10.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture10.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Widget&amp;#039;s UI is completed, now we can continue to coding widget&amp;#039;s search logic. First of all it is necessary to bind callback function to the search button. This goal can be achieved with following code:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'input[type=button]'&lt;/span&gt;, widget.&lt;span class="me1"&gt;getBody&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;on&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'click'&lt;/span&gt;, &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Code just searches “button” and binds callback function to its “onclick” event. Now we can begin coding of actual search logic:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&amp;nbsp;
&lt;span class="co1"&gt;//obtain reference to the widget&lt;/span&gt;
&lt;span class="kw2"&gt;var&lt;/span&gt; widget = &lt;span class="kw1"&gt;this&lt;/span&gt;;
&amp;nbsp;
&lt;span class="co1"&gt;//bind function to button's onclick event&lt;/span&gt;
$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'input[type=button]'&lt;/span&gt;, widget.&lt;span class="me1"&gt;getBody&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;on&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'click'&lt;/span&gt;, &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="co1"&gt;//google search URI	&lt;/span&gt;
    &lt;span class="kw2"&gt;var&lt;/span&gt; uri = &lt;span class="st0"&gt;'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;amp;rsz=large&amp;amp;q={query}'&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="co1"&gt;//build request URI&lt;/span&gt;
    uri = uri.&lt;span class="me1"&gt;replace&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'{query}'&lt;/span&gt;, &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;form&lt;/span&gt;.&lt;span class="me1"&gt;q&lt;/span&gt;.&lt;span class="me1"&gt;value&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="co1"&gt;//find result area&lt;/span&gt;
    &lt;span class="kw2"&gt;var&lt;/span&gt; body = $&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'div.google-search-results'&lt;/span&gt;, widget.&lt;span class="me1"&gt;getBody&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="co1"&gt;//set pre-loader to the result area&lt;/span&gt;
    body.&lt;span class="me1"&gt;html&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;widget.&lt;span class="me1"&gt;getPreloader&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="coMULTI"&gt;/**
     * use getJSON API method to perform Ajax request
     */&lt;/span&gt;
    UDW.&lt;span class="me1"&gt;proxy&lt;/span&gt;.&lt;span class="me1"&gt;getJSON&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            uri: uri, &lt;span class="co1"&gt;//uri to be requested&lt;/span&gt;
            callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;result&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt; &lt;span class="co1"&gt;//callback function&lt;/span&gt;
                &lt;span class="co1"&gt;//process response data&lt;/span&gt;
                pagination.&lt;span class="me1"&gt;process&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;result.&lt;span class="me1"&gt;responseData&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
As you see from the code above search logic is quite simple. All you need is to use “getJSON” &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; method with to parameters uri and callback. After request completes callback function is invoked that on other hand invokes Pagination component&amp;#039;s “process” method to process returned results.
&lt;/p&gt;

&lt;p&gt;
Example shows how simple and powerful &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; is. Most of the code is just using predefined &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods. If you completed coding you can see that resulting widget looks something like this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture12.png?id=myweb%3Awidgets%3Aadvanced-widget-example&amp;amp;cache=cache" class="media" title="myweb:widgets:picture12.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture12.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Complete JavaScript code and &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; required for this widget is shown below:
&lt;/p&gt;

&lt;p&gt;
googlesearch.js

&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kw2"&gt;function&lt;/span&gt; GoogleSearch&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;config&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'googlesearch'&lt;/span&gt;,
            title: &lt;span class="st0"&gt;'Google Search'&lt;/span&gt;,
            iconId: &lt;span class="st0"&gt;'google'&lt;/span&gt;,
            css: &lt;span class="kw2"&gt;true&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="kw3"&gt;onload&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
                &lt;span class="st0"&gt;'&amp;lt;form method=&amp;quot;post&amp;quot; action=&amp;quot;&amp;quot; class=&amp;quot;google-search-form&amp;quot;&amp;gt;'&lt;/span&gt; +
                    &lt;span class="st0"&gt;'&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;q&amp;quot; /&amp;gt;'&lt;/span&gt; +
                    &lt;span class="st0"&gt;'&amp;lt;input type=&amp;quot;button&amp;quot; name=&amp;quot;search&amp;quot; value=&amp;quot;Search&amp;quot; /&amp;gt;'&lt;/span&gt; +
                &lt;span class="st0"&gt;'&amp;lt;/form&amp;gt;'&lt;/span&gt; +
                &lt;span class="st0"&gt;'&amp;lt;div class=&amp;quot;google-search-results&amp;quot;&amp;gt;Nothing to show...&amp;lt;/div&amp;gt;'&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="kw2"&gt;var&lt;/span&gt; pagination = UDW.&lt;span class="me1"&gt;Components&lt;/span&gt;.&lt;span class="me1"&gt;Pagination&lt;/span&gt;.&lt;span class="me1"&gt;getComponent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
                &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                    currentPage: &lt;span class="nu0"&gt;1&lt;/span&gt;,
                    rowsPerPage: &lt;span class="nu0"&gt;2&lt;/span&gt;,
                    rowName: &lt;span class="st0"&gt;'results'&lt;/span&gt;,
                    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;rows&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                        &lt;span class="kw2"&gt;var&lt;/span&gt; html = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
                        html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;ul&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class="kw1"&gt;for&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; i = &lt;span class="nu0"&gt;0&lt;/span&gt;; i &lt;span class="sy0"&gt;&amp;lt;&lt;/span&gt; rows.&lt;span class="me1"&gt;length&lt;/span&gt;; i++&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;div class=&amp;quot;google-search-link&amp;quot;&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;a href=&amp;quot;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;url&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;title&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;lt;/a&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;div class=&amp;quot;google-search-content&amp;quot;&amp;gt;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;content&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                            html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;div class=&amp;quot;google-search-visible-url&amp;quot;&amp;gt;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;visibleUrl&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;lt;/div&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
                        html.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;/ul&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                        $&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'div.google-search-results'&lt;/span&gt;, widget.&lt;span class="me1"&gt;getBody&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;html&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;html.&lt;span class="me1"&gt;join&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;''&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
                &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addToFooter&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;pagination&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="kw2"&gt;var&lt;/span&gt; widget = &lt;span class="kw1"&gt;this&lt;/span&gt;;
&amp;nbsp;
            $&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'input[type=button]'&lt;/span&gt;, widget.&lt;span class="me1"&gt;getBody&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;on&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'click'&lt;/span&gt;, &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                &lt;span class="kw2"&gt;var&lt;/span&gt; uri = &lt;span class="st0"&gt;'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;amp;rsz=large&amp;amp;q={query}'&lt;/span&gt;;
                uri = uri.&lt;span class="me1"&gt;replace&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'{query}'&lt;/span&gt;, &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;form&lt;/span&gt;.&lt;span class="me1"&gt;q&lt;/span&gt;.&lt;span class="me1"&gt;value&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
                &lt;span class="kw2"&gt;var&lt;/span&gt; body = $&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'div.google-search-results'&lt;/span&gt;, widget.&lt;span class="me1"&gt;getBody&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                body.&lt;span class="me1"&gt;html&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;widget.&lt;span class="me1"&gt;getPreloader&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
                UDW.&lt;span class="me1"&gt;proxy&lt;/span&gt;.&lt;span class="me1"&gt;getJSON&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
                    &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                        uri: uri,
                        callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;result&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                            pagination.&lt;span class="me1"&gt;process&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;result.&lt;span class="me1"&gt;responseData&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
                        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
                    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
                &lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'googlesearch'&lt;/span&gt;, GoogleSearch&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
googlesearch.css

&lt;/p&gt;
&lt;pre class="code css"&gt;form&lt;span class="re1"&gt;.google-search-form&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;width&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;&lt;span class="nu0"&gt;100&lt;/span&gt;%&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;text-align&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;center&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;margin&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;4px&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.google-search-results&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;border&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;1px&lt;/span&gt; &lt;span class="kw2"&gt;solid&lt;/span&gt; &lt;span class="re0"&gt;#dedede&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;padding&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;6px&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;margin&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;12px&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.google-search-link&lt;/span&gt; a &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;color&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw1"&gt;blue&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.google-search-content&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;margin&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;2px&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.google-search-visible-url&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;color&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;green&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;margin-bottom&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;8px&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=5XQ7UcuSwow:2rA7kLpHarc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=5XQ7UcuSwow:2rA7kLpHarc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=5XQ7UcuSwow:2rA7kLpHarc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=5XQ7UcuSwow:2rA7kLpHarc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=5XQ7UcuSwow:2rA7kLpHarc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=5XQ7UcuSwow:2rA7kLpHarc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=5XQ7UcuSwow:2rA7kLpHarc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=5XQ7UcuSwow:2rA7kLpHarc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=5XQ7UcuSwow:2rA7kLpHarc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=5XQ7UcuSwow:2rA7kLpHarc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=5XQ7UcuSwow:2rA7kLpHarc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/5XQ7UcuSwow" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 10:44:59 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/advanced-widget-example</feedburner:origLink></item>
        <item>
            <title>Creating Widget Icon</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/KnVOWUZM9ck/creating-widget-icon</link>
            <description>&lt;h1&gt;&lt;a name="creating-widget-icon" id="creating-widget-icon"&gt;Creating Widget Icon&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

Maybe you already noticed that all widgets have icons on the upper left corner and most likely you would like to create icons for your widgets. This goal is achieved through little &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; trick that you can use effectively. 
&lt;/p&gt;

&lt;p&gt;
If you carefully red previous topics about widget development most likely you noticed that initial configuration parameters contains one parameter named “iconId”:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;config&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
   &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'googlesearch'&lt;/span&gt;,
   title: &lt;span class="st0"&gt;'Google Search'&lt;/span&gt;,
   iconId: &lt;span class="st0"&gt;'google'&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Value of the mentioned parameter is just name of the icon&amp;#039;s &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; class name. Widget engine uses this value for generating full &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; class name according to icon class name rules and assigns this value to the &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt; elements class attribute.
&lt;/p&gt;

&lt;p&gt;
Icon&amp;#039;s class name has following format: wdg-icon-google. It is important to note that “wdg-icon-” prefix is required for all icon classes and the name off full class name is suffixed with unique name of the icon.
&lt;/p&gt;

&lt;p&gt;
For creating your own icons classes you need to use &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; code like this:
&lt;/p&gt;
&lt;pre class="code css"&gt;&lt;span class="re1"&gt;.wdg-icon-myiconidentifier&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;background&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;url&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="re4"&gt;mywidgeticons&lt;span class="re1"&gt;.png&lt;/span&gt;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="kw2"&gt;no-repeat&lt;/span&gt; &lt;span class="kw1"&gt;top&lt;/span&gt; &lt;span class="kw1"&gt;left&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Now if you need to set this icon to your widget you need to do it with following way:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;config&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
   &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'googlesearch'&lt;/span&gt;,
   title: &lt;span class="st0"&gt;'Google Search'&lt;/span&gt;,
   iconId: &lt;span class="st0"&gt;'myiconidentifier'&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Note again that for assigning icon to the widget you just need to use its name.
&lt;/p&gt;

&lt;p&gt;

&lt;div class="note"&gt;
There is only one restriction with icons, icons need to be created as 16x16 images.
&lt;/div&gt;


&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=KnVOWUZM9ck:q68h0P5WZpU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=KnVOWUZM9ck:q68h0P5WZpU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=KnVOWUZM9ck:q68h0P5WZpU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=KnVOWUZM9ck:q68h0P5WZpU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=KnVOWUZM9ck:q68h0P5WZpU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=KnVOWUZM9ck:q68h0P5WZpU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=KnVOWUZM9ck:q68h0P5WZpU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=KnVOWUZM9ck:q68h0P5WZpU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=KnVOWUZM9ck:q68h0P5WZpU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=KnVOWUZM9ck:q68h0P5WZpU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=KnVOWUZM9ck:q68h0P5WZpU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/KnVOWUZM9ck" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 17:07:17 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/creating-widget-icon</feedburner:origLink></item>
        <item>
            <title>Developer Version</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/MDQ1tEzz8_c/developer-version</link>
            <description>&lt;h1&gt;&lt;a name="developer-version" id="developer-version"&gt;Developer Version&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

For effectively developing widgets developers need to download and install Developer Version of the framework. Developer version is a simplified version of MyWeb&amp;#039;s core.
&lt;/p&gt;

&lt;p&gt;
Developers will find all necessary &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; - s that are required for creating fully functional widgets. Developer version consists of following parts:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/javascript-api-codeq" class="wikilink1" title="myweb:widgets:javascript-api-codeq"&gt;JavaScript API - CodeQ&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-api" class="wikilink1" title="myweb:widgets:widget-api"&gt;Widget API&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-ajax-api" class="wikilink1" title="myweb:widgets:widget-ajax-api"&gt;Ajax API&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-components" class="wikilink1" title="myweb:widgets:widget-components"&gt;Widget Components&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/generic-widgets" class="wikilink1" title="myweb:widgets:generic-widgets"&gt;Generic Widgets&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

Please read documentation carefully before beginning widget development.

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "Developer Version" [1-620] --&gt;
&lt;h2&gt;&lt;a name="system-requirements" id="system-requirements"&gt;System Requirements&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

To begin widget developments developers need to satisfy minimal system requirements. Read details below:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; Any operation system&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; Apache web server of any version&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;acronym title="Hypertext Preprocessor"&gt;PHP&lt;/acronym&gt; of minimum version 5.2.3&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; Latest version of Zend Optimizer&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; Any editor for coding (Eclipse is a good candidate)&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; Any modern web browser (FireFox + FireBug is preferred during development)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- SECTION "System Requirements" [621-1026] --&gt;
&lt;h2&gt;&lt;a name="installing-developer-version" id="installing-developer-version"&gt;Installing Developer Version&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

First of all you need to download developer version of MyWeb: &lt;a href="http://www.phpcow.com/docs/_media/myweb/mywebdev.zip?id=myweb%3Awidgets%3Adeveloper-version&amp;amp;cache=cache" class="media mediafile mf_zip" title="myweb:mywebdev.zip"&gt;mywebdev.zip&lt;/a&gt;. Installation is simple and requires zero configuration. You just need to extract downloaded zip file into your local webserver&amp;#039;s root directory.
&lt;/p&gt;

&lt;p&gt;

&lt;div class="note"&gt;
Note that developer version is intended for development purposes only, thus it will work only on localhost under "mywebdev" folder. Widgets will be accessible through http://localhost/mywebdev/ 
&lt;/div&gt;

&lt;/p&gt;

&lt;p&gt;
After installation you will see file structure shown on the picture below:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture13.png?id=myweb%3Awidgets%3Adeveloper-version&amp;amp;cache=cache" class="media" title="myweb:widgets:picture13.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture13.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Thats it, installation and configuration are completed. Now you can begin development of a widget. First of all open “index.html” file(look at the selected file on the picture above). This is entry point where developers can load and test widgets on demand, without any further configuration. Lets look of the file structure:
&lt;/p&gt;
&lt;pre class="code html4strict"&gt;&lt;span class="sc0"&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="sc2"&gt;&lt;a href="http://december.com/html/4/element/html.html"&gt;&lt;span class="kw2"&gt;&amp;lt;html&lt;/span&gt;&lt;/a&gt; xmlns&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; xml:&lt;span class="kw3"&gt;lang&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;en&amp;quot;&lt;/span&gt; &lt;span class="kw3"&gt;lang&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span class="kw2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; 
&lt;span class="sc2"&gt;&lt;a href="http://december.com/html/4/element/head.html"&gt;&lt;span class="kw2"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;
    &lt;span class="sc2"&gt;&lt;a href="http://december.com/html/4/element/meta.html"&gt;&lt;span class="kw2"&gt;&amp;lt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class="kw3"&gt;http-equiv&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt; &lt;span class="kw3"&gt;content&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;text/html; charset=UTF-8&amp;quot;&lt;/span&gt; &lt;span class="sy0"&gt;/&lt;/span&gt;&lt;span class="kw2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc2"&gt;&lt;a href="http://december.com/html/4/element/link.html"&gt;&lt;span class="kw2"&gt;&amp;lt;link&lt;/span&gt;&lt;/a&gt; &lt;span class="kw3"&gt;rel&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span class="kw3"&gt;type&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span class="kw3"&gt;href&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;udw/assets/styles/style.css&amp;quot;&lt;/span&gt;&lt;span class="sy0"&gt;/&lt;/span&gt;&lt;span class="kw2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc2"&gt;&lt;a href="http://december.com/html/4/element/script.html"&gt;&lt;span class="kw2"&gt;&amp;lt;script&lt;/span&gt;&lt;/a&gt; &lt;span class="kw3"&gt;type&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt; &lt;span class="kw3"&gt;src&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;udw/js/udwdev.js&amp;quot;&lt;/span&gt;&lt;span class="kw2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="sc2"&gt;&lt;span class="kw2"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc2"&gt;&lt;span class="kw2"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc2"&gt;&lt;a href="http://december.com/html/4/element/body.html"&gt;&lt;span class="kw2"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class="sc2"&gt;&lt;span class="coMULTI"&gt;&amp;lt;!-- target container where widget will be inserted --&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc2"&gt;&lt;a href="http://december.com/html/4/element/div.html"&gt;&lt;span class="kw2"&gt;&amp;lt;div&lt;/span&gt;&lt;/a&gt; &lt;span class="kw3"&gt;id&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;w1&amp;quot;&lt;/span&gt;&lt;span class="kw2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="sc2"&gt;&lt;span class="kw2"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class="sc2"&gt;&lt;a href="http://december.com/html/4/element/script.html"&gt;&lt;span class="kw2"&gt;&amp;lt;script&lt;/span&gt;&lt;/a&gt; &lt;span class="kw3"&gt;type&lt;/span&gt;&lt;span class="sy0"&gt;=&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class="kw2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
loadWidget(
    {
        widget: 'googlesearch', 
        target: 'w1', 
        style: 'white'
    }
);
&amp;nbsp;
&lt;span class="sc2"&gt;&lt;span class="kw2"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class="sc2"&gt;&lt;span class="kw2"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc2"&gt;&lt;span class="kw2"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
This file contains all required script and style includes that are required for loading and running widgets. Only part worth of mentioning is “loadWidget()” JavaScript function that is invoked for loading actual widgets. It requires one parameter with structure shown below:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Key name &lt;/th&gt;&lt;th class="col1"&gt;Description &lt;/th&gt;&lt;th class="col2"&gt;Required &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget&lt;/td&gt;&lt;td class="col1"&gt;Name of the widget to be loaded&lt;/td&gt;&lt;td class="col2"&gt;Yes&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;target&lt;/td&gt;&lt;td class="col1"&gt;ID of the target &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt; element where the loaded widget will be inserted&lt;/td&gt;&lt;td class="col2"&gt;Yes&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;style&lt;/td&gt;&lt;td class="col1"&gt;Initial style of the widget. You can choose from white, blue, red, yellow or green&lt;/td&gt;&lt;td class="col2"&gt;No&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;

For example for loading “helloworld” widget you need to write following code:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;loadWidget&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        widget: &lt;span class="st0"&gt;'helloworld'&lt;/span&gt;, 
        target: &lt;span class="st0"&gt;'w1'&lt;/span&gt;, 
        style: &lt;span class="st0"&gt;'white'&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;

&lt;div class="note"&gt;
Please note that "loadWidget()" function call must be placed after target HTML element, otherwise behavior of widget loader is not predictable.
Also it is important to mention that you don't need to load widget's JavaScript and/or CSS files explicitly. These tasks will be performed by widget loader.
&lt;/div&gt;

&lt;/p&gt;

&lt;p&gt;
For further information and details on widget development please visit following documents:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/hello-world-widget" class="wikilink1" title="myweb:widgets:hello-world-widget"&gt;Hello World Widget&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/advanced-widget-example" class="wikilink1" title="myweb:widgets:advanced-widget-example"&gt;Advanced Widget Example&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- SECTION "Installing Developer Version" [1027-] --&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MDQ1tEzz8_c:YfllP7f-xrk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MDQ1tEzz8_c:YfllP7f-xrk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MDQ1tEzz8_c:YfllP7f-xrk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MDQ1tEzz8_c:YfllP7f-xrk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MDQ1tEzz8_c:YfllP7f-xrk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MDQ1tEzz8_c:YfllP7f-xrk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MDQ1tEzz8_c:YfllP7f-xrk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MDQ1tEzz8_c:YfllP7f-xrk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MDQ1tEzz8_c:YfllP7f-xrk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MDQ1tEzz8_c:YfllP7f-xrk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MDQ1tEzz8_c:YfllP7f-xrk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/MDQ1tEzz8_c" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Thu, 20 Nov 2008 06:24:34 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/developer-version</feedburner:origLink></item>
        <item>
            <title>Generic Widgets</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/WbAZV8LexOc/generic-widgets</link>
            <description>&lt;h1&gt;&lt;a name="generic-widgets" id="generic-widgets"&gt;Generic Widgets&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

There are few Generic Widgets supported by my web personalized start page system. Besides entire Widget &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; it is possible to use these generic widgets for your own widget enhancements. Currently there are three generic widgets that can be used for ascribed purposes: Feed, Tabbed Feed and Search.
&lt;/p&gt;

&lt;p&gt;
To use one of generic widgets you need to write simple code as follows:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kw2"&gt;function&lt;/span&gt; MyTabbedNewsWidget&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;        
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * Inherit from Tabbed Feed Widget
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;base&lt;/span&gt; = UDW.&lt;span class="me1"&gt;widgets&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st0"&gt;'__tabbedfeed__'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;base&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="co1"&gt;//rest of code here&lt;/span&gt;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'mytabbednewswidget'&lt;/span&gt;, MyTabbedNewsWidget&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- SECTION "Generic Widgets" [1-747] --&gt;
&lt;h2&gt;&lt;a name="example-with-tabbed-feed-widget" id="example-with-tabbed-feed-widget"&gt;Example with Tabbed Feed Widget&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

Tabbed Feed widget is a powerful widget that allows to quickly and effectively build any type of news feed widgets. Most of news sites provide &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; Feed channels that can be used by third parties. Instead of using one &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; channel per widget we decided to build generic widget that could be able to handle multiple &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; channels from single or multiple sources. 
&lt;/p&gt;

&lt;p&gt;
For example consider &lt;a href="http://edition.cnn.com/services/rss/" class="urlextern" title="http://edition.cnn.com/services/rss/"&gt;CNN&amp;#039;s RSS channels page&lt;/a&gt;, there are dozens of links to different &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; feeds. Using Tabbed Feed Widget it is possible to manage all of these channels at one time. 
&lt;/p&gt;

&lt;p&gt;
Let&amp;#039;s look closer to these &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; feeds links:

&lt;/p&gt;
&lt;ol&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://rss.cnn.com/rss/edition_world.rss" class="urlextern" title="http://rss.cnn.com/rss/edition_world.rss"&gt;http://rss.cnn.com/rss/edition_world.rss&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://rss.cnn.com/rss/edition_africa.rss" class="urlextern" title="http://rss.cnn.com/rss/edition_africa.rss"&gt;http://rss.cnn.com/rss/edition_africa.rss&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://rss.cnn.com/rss/edition_americas.rss" class="urlextern" title="http://rss.cnn.com/rss/edition_americas.rss"&gt;http://rss.cnn.com/rss/edition_americas.rss&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;

Only deference among these links are keywords uniquely identifying channels(in this case: world, africa and americas). In most cases all &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; Feed providers use same generalized approach. These commonality gives us opportunity to use &lt;acronym title="Uniform Resource Identifier"&gt;URI&lt;/acronym&gt; only once, only thing we need is to use placeholder for keyword that identifies particular channel.
&lt;/p&gt;

&lt;p&gt;
In this particular case the &lt;acronym title="Uniform Resource Identifier"&gt;URI&lt;/acronym&gt; template will look something like this: http:/ /rss.cnn.com/rss/edition_&lt;strong&gt;{tag}&lt;/strong&gt;.rss
&lt;/p&gt;

&lt;p&gt;
Based on these details we can easily implement fully functional widgets providing just necessary configuration parameters. Look at the code below:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kw2"&gt;function&lt;/span&gt; CBSNews&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * Inherit from tabbed feed widget
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;base&lt;/span&gt; = UDW.&lt;span class="me1"&gt;widgets&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st0"&gt;'__tabbedfeed__'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;base&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * setup initial configuration
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;config&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'cbsnews'&lt;/span&gt;,
            iconId: &lt;span class="st0"&gt;'cbsnews'&lt;/span&gt;,
            title: UDW.&lt;span class="me1"&gt;str&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'CBS News'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;,
            content: &lt;span class="st0"&gt;''&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="kw3"&gt;onload&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * Set tags and label mappings
             */&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setTagMap&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                &lt;span class="st0"&gt;'Top Stories'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsMain'&lt;/span&gt;,
                &lt;span class="st0"&gt;'U.S.'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsNational'&lt;/span&gt;,
                &lt;span class="st0"&gt;'World'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsWorld'&lt;/span&gt;,
                &lt;span class="st0"&gt;'Politics'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsPolitics'&lt;/span&gt;,
                &lt;span class="st0"&gt;'Sci-Tech'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsSciTech'&lt;/span&gt;,
                &lt;span class="st0"&gt;'Health'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsHealth'&lt;/span&gt;,
                &lt;span class="st0"&gt;'Entertainment'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsEntertainment'&lt;/span&gt;,
                &lt;span class="st0"&gt;'Business'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsBusiness'&lt;/span&gt;,
                &lt;span class="st0"&gt;'CBS News Video'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsVideo'&lt;/span&gt;,
                &lt;span class="st0"&gt;'CBS Evening News'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsEveningNews'&lt;/span&gt;,
                &lt;span class="st0"&gt;'48 Hours'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNews48Hours'&lt;/span&gt;,
                &lt;span class="st0"&gt;'60 Minutes'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNews60Minutes'&lt;/span&gt;,
                &lt;span class="st0"&gt;'Strange News'&lt;/span&gt;: &lt;span class="st0"&gt;'CbsNewsApStrange'&lt;/span&gt;,
                &lt;span class="st0"&gt;'PC Answer'&lt;/span&gt; : &lt;span class="st0"&gt;'CBSNewsPCAnswer'&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * Set initial tags to be displayed after load
             */&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setInitialTags&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st0"&gt;'Top Stories'&lt;/span&gt;, &lt;span class="st0"&gt;'Entertainment'&lt;/span&gt;, &lt;span class="st0"&gt;'Strange News'&lt;/span&gt;, &lt;span class="st0"&gt;'Business'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * Set URI pattern to be used for generating feed URIs
             */&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setFeedURI&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'http://feeds.cbsnews.com/{tag}'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * Set logo of the widget
             */&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setLogo&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'cbsnews'&lt;/span&gt;, &lt;span class="st0"&gt;'cbsnews.gif'&lt;/span&gt;, &lt;span class="st0"&gt;'CBS News'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * Render configured widget
             */&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;render&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'cbsnews'&lt;/span&gt;, CBSNews&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Shown code will produce following widget:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture6.png?id=myweb%3Awidgets%3Ageneric-widgets&amp;amp;cache=cache" class="media" title="myweb:widgets:picture6.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture6.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
If you carefully read the code it must be clear already how fast it is possible to create widget for desired &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; feed providers. But lets look closer at &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods provided by tabbed feed widget.
&lt;/p&gt;

&lt;p&gt;
Below are listed all supported &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Method &lt;/th&gt;&lt;th class="col1"&gt;Description &lt;/th&gt;&lt;th class="col2"&gt;Example &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.setTagMap(map)&lt;/td&gt;&lt;td class="col1"&gt;Sets initial configuration for desired &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; channels, in the form of key/value map&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setTagMap&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="st0"&gt;'Top Stories'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsMain'&lt;/span&gt;,
    &lt;span class="st0"&gt;'U.S.'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsNational'&lt;/span&gt;,
    &lt;span class="st0"&gt;'World'&lt;/span&gt;: &lt;span class="st0"&gt;'CBSNewsWorld'&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;this.setInitialTags(tags)&lt;/td&gt;&lt;td class="col1"&gt;Set desired labels array to be displayed first&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setInitialTags&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;
    &lt;span class="st0"&gt;'Top Stories'&lt;/span&gt;, 
    &lt;span class="st0"&gt;'Entertainment'&lt;/span&gt;, 
    &lt;span class="st0"&gt;'Strange News'&lt;/span&gt;, 
    &lt;span class="st0"&gt;'Business'&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt; this.setFeedURI(uriPattern)&lt;/td&gt;&lt;td class="col1"&gt;Set &lt;acronym title="Uniform Resource Identifier"&gt;URI&lt;/acronym&gt; pattern for particular &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; channel provider&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setFeedURI&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'http://feeds.cbsnews.com/{tag}'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row4"&gt;
		&lt;td class="col0"&gt;this.setLogo(widgetName, logo, altText)&lt;/td&gt;&lt;td class="col1"&gt;Sets logo image for the widget.&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setLogo&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'cbsnews'&lt;/span&gt;, &lt;span class="st0"&gt;'cbsnews.gif'&lt;/span&gt;, &lt;span class="st0"&gt;'CBS News'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row5"&gt;
		&lt;td class="col0"&gt;this.render()&lt;/td&gt;&lt;td class="col1"&gt;Renders pre-configured widget&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;render&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "Example with Tabbed Feed Widget" [748-5390] --&gt;
&lt;h2&gt;&lt;a name="example-with-search-widget" id="example-with-search-widget"&gt;Example with Search Widget&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

As far as most well known search engines opened their search providing search results in various formats(e.g &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; or Atom feed) it became possible to build custom search widgets. Like with tabbed feeds sometimes it is better to combine these search engines into one single widget. Examples of these type of widgets could be found among already implemented PHPCow widgets(Web Search, News Search, Blog Search, Video Search). But of course these already implemented widgets are not complete as far as there are much more search result providers in the globe. For these purposes we implemented Generic Search Widget that will help you to build your own search widgets, grouping various search engine service providers into the single implementation.
&lt;/p&gt;

&lt;p&gt;
Usage of this widget has a lot in common with previously described tabbed feed widget, but it is much more simpler. All you need is to add as many search engines to the widget instance as you like.
&lt;/p&gt;

&lt;p&gt;
Code shown below is complete implementation of News Search widget:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kw2"&gt;function&lt;/span&gt; NewsSearch&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * Inherit form Search Widget
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;base&lt;/span&gt; = UDW.&lt;span class="me1"&gt;widgets&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st0"&gt;'__searchwidget__'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;base&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * Set initial configuration
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;config&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'newssearch'&lt;/span&gt;,
            iconId: &lt;span class="st0"&gt;'newssearch'&lt;/span&gt;,
            title: UDW.&lt;span class="me1"&gt;str&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'News Search'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;,
            content: &lt;span class="st0"&gt;''&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="kw3"&gt;onload&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setTitle&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;getValue&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'title'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="sy0"&gt;||&lt;/span&gt; &lt;span class="st0"&gt;'Universal News Search'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * This and following methods with same name will register search engines
             */&lt;/span&gt; 
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addEngine&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'google'&lt;/span&gt;, &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                label: &lt;span class="st0"&gt;'Google'&lt;/span&gt;,
                uri: &lt;span class="st0"&gt;'http://news.google.com/news?hl=en&amp;amp;q={query}&amp;amp;ie=UTF-8&amp;amp;output=rss'&lt;/span&gt;, 
                active: &lt;span class="kw2"&gt;true&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;                
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addEngine&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'yahoo'&lt;/span&gt;, &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                label: &lt;span class="st0"&gt;'Yahoo'&lt;/span&gt;,
                uri: &lt;span class="st0"&gt;'http://news.search.yahoo.com/news/rss?p={query}&amp;amp;ei=UTF-8'&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addEngine&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'live'&lt;/span&gt;, &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                label: &lt;span class="st0"&gt;'Live'&lt;/span&gt;,
                uri: &lt;span class="st0"&gt;'http://search.live.com/news/results.aspx?q={query}&amp;amp;format=rss'&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addEngine&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'ask'&lt;/span&gt;, &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                label: &lt;span class="st0"&gt;'Ask.com'&lt;/span&gt;,
                uri:   &lt;span class="st0"&gt;'http://news.ask.com/newsrss?q={query}&amp;amp;o=0&amp;amp;l=dir'&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * Render pre-configured widget
             */&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;render&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'newssearch'&lt;/span&gt;, NewsSearch&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Shown code will produce following widget:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture5.png?id=myweb%3Awidgets%3Ageneric-widgets&amp;amp;cache=cache" class="media" title="myweb:widgets:picture5.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture5.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

There are only two &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods provided by Search widget that are listed below:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Method &lt;/th&gt;&lt;th class="col1"&gt;Description &lt;/th&gt;&lt;th class="col2"&gt;Example &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;this.addEngine(engineName, params)&lt;/td&gt;&lt;td class="col1"&gt;Adds search engine to the search engine map. The firs parameter is key that uniquely identifies search engine. The second parameter provides label for search engine and &lt;acronym title="Uniform Resource Identifier"&gt;URI&lt;/acronym&gt; pattern with {query} placeholder that will be replaced with provided search keyword&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addEngine&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'live'&lt;/span&gt;, &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    label: &lt;span class="st0"&gt;'Live'&lt;/span&gt;,
    uri: &lt;span class="st0"&gt;'http://example.com/news?q={query}&amp;amp;alt=rss'&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;this.render()&lt;/td&gt;&lt;td class="col1"&gt;Renders pre-configured widget&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;render&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "Example with Search Widget" [5391-] --&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=WbAZV8LexOc:16e9AsmJkZg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=WbAZV8LexOc:16e9AsmJkZg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=WbAZV8LexOc:16e9AsmJkZg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=WbAZV8LexOc:16e9AsmJkZg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=WbAZV8LexOc:16e9AsmJkZg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=WbAZV8LexOc:16e9AsmJkZg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=WbAZV8LexOc:16e9AsmJkZg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=WbAZV8LexOc:16e9AsmJkZg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=WbAZV8LexOc:16e9AsmJkZg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=WbAZV8LexOc:16e9AsmJkZg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=WbAZV8LexOc:16e9AsmJkZg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/WbAZV8LexOc" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 10:44:41 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/generic-widgets</feedburner:origLink></item>
        <item>
            <title>Hello World Widget</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/-74q2_nICwo/hello-world-widget</link>
            <description>&lt;h1&gt;&lt;a name="hello-world-widget" id="hello-world-widget"&gt;Hello World Widget&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

For creating real working widget it is required two files, these files are:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; helloworld.js - actual widget implementation&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; config.xml - configuration descriptor of the widget&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

Under the “udw” folder create new folder and name it “helloworld”. Under the newly created folder create two files as listed above. After performing these steps you will get structure shown on the picture:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture3.png?id=myweb%3Awidgets%3Ahello-world-widget&amp;amp;cache=cache" class="media" title="myweb:widgets:picture3.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture3.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
First of all we need to write widget&amp;#039;s implementation code. Open helloworld.js file and copy and paste code shown below:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="coMULTI"&gt;/**
     * Define widget class
     */&lt;/span&gt;
    &lt;span class="kw2"&gt;function&lt;/span&gt; HelloWorld&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * set initial configuration
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;config&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'helloworld'&lt;/span&gt;,
            title: &lt;span class="st0"&gt;'Hello World Widget'&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/** 
         * disable refresh button because there is nothing to refresh
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;disableRefresh&lt;/span&gt; = &lt;span class="kw2"&gt;true&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="kw3"&gt;onload&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="co1"&gt;//set content&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;p&amp;gt;Hello World!&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="co1"&gt;//register widget&lt;/span&gt;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'helloworld'&lt;/span&gt;, HelloWorld&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Now open “index.html” file under “mywebdev” folder and replace widget loading script with following code:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;loadWidget&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        widget: &lt;span class="st0"&gt;'helloworld'&lt;/span&gt;, 
        target: &lt;span class="st0"&gt;'w1'&lt;/span&gt;, 
        style: &lt;span class="st0"&gt;'white'&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
After saving file open following &lt;acronym title="Uniform Resource Locator"&gt;URL&lt;/acronym&gt;: &lt;a href="http://localhost/mywebdev" class="urlextern" title="http://localhost/mywebdev"&gt;http://localhost/mywebdev&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

&lt;div class="note"&gt;
Following section is only necessary for deploying widget in dashboard environment.
&lt;/div&gt;

&lt;/p&gt;

&lt;p&gt;
After implementing widget, we need to specify configuration details. Open config.xml file and copy and paste following configuration code:
&lt;/p&gt;
&lt;pre class="code xml"&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;encoding&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;widget&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;helloworld&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;icon&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;default&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;section&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;basic&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;title&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Hellow World&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/title&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;description&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class="sc2"&gt;&amp;lt;![CDATA[This is my first widget]]&amp;gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/description&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;tags&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class="sc2"&gt;&amp;lt;![CDATA[hello, world]]&amp;gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/tags&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/widget&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Thats it! Implementation of fully functional widget is completed. Now it is necessary to activate newly created widget through control panel. After activation navigate to the section specified in the config.xml file(in this case see “Basic Widgets” section) and add widget to the dashboard. Result is shown on the picture:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture4.png?id=myweb%3Awidgets%3Ahello-world-widget&amp;amp;cache=cache" class="media" title="myweb:widgets:picture4.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture4.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This is really simple example, but it clearly shows how easy is widget development process. With similar success you can develop widgets of any complexity. There are no limitations, only limitation is particular developer&amp;#039;s skills and fantasy.
&lt;/p&gt;

&lt;p&gt;
We hope that this example will be perfect jump-start for further development widgets of your own. 
&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=-74q2_nICwo:9Xykeym0yck:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=-74q2_nICwo:9Xykeym0yck:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=-74q2_nICwo:9Xykeym0yck:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=-74q2_nICwo:9Xykeym0yck:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=-74q2_nICwo:9Xykeym0yck:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=-74q2_nICwo:9Xykeym0yck:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=-74q2_nICwo:9Xykeym0yck:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=-74q2_nICwo:9Xykeym0yck:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=-74q2_nICwo:9Xykeym0yck:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=-74q2_nICwo:9Xykeym0yck:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=-74q2_nICwo:9Xykeym0yck:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/-74q2_nICwo" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 10:42:38 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/hello-world-widget</feedburner:origLink></item>
        <item>
            <title>JavaScript API - CodeQ</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/77EPsOg1kUs/javascript-api-codeq</link>
            <description>&lt;h1&gt;&lt;a name="javascript-api-codeq" id="javascript-api-codeq"&gt;JavaScript API - CodeQ&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

As far as widgets are completely implemented using JavaScript programming language, developers often need to do a lot of work manipulating &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; elements. Because it is critical to keep widgets as small as possible due to eliminating widgets load time it would be useful to have JavaScript framework that eliminates unnecessary &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; elements manipulation to minimum. 
&lt;/p&gt;

&lt;p&gt;
There were few really great JavaScript frameworks, but PHPCow developers choose to go their way and implemented small but effective framework named CodeQ.
&lt;/p&gt;

&lt;p&gt;
Framework consists of three major parts - Selector Engine, &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; Manipulation and &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; Manipulation. CodeQ has lot in common with  perfect jQuery framework, but it is simpler and smaller, if you are familiar with jQuery than you need to just learn few differences.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "JavaScript API - CodeQ" [1-823] --&gt;
&lt;h2&gt;&lt;a name="selector-engine" id="selector-engine"&gt;Selector Engine&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

Selector engine supports most of the frequently used &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; selectors. For example:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'#my-element-id &amp;gt; ul li &amp;gt; div.my-class'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;css&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'border'&lt;/span&gt;, &lt;span class="st0"&gt;'3px solid green'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Shown simple example is quite descriptive for people familiar with &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; selectors. Shown example uses &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; selector that contains ID, Tag and Class selectors. Developers can build quite complicated queries for retrieving &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; elements.
&lt;/p&gt;

&lt;p&gt;
It is possible to pass several selectors at one time, and engine will return results for all selectors. Developer needs to pass selectors separated by commas:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'div.class-name, #el-id &amp;gt; p, ul li &amp;gt; a'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;css&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'border'&lt;/span&gt;, &lt;span class="st0"&gt;'3px solid green'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Selector method supports context parameter as well, rather than forcing engine to traverse whole document it is possible to pass context object as second parameter eliminating time for searching desired elements: 
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; el = someDomElement;
$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'a em'&lt;/span&gt;, el&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;css&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'border'&lt;/span&gt;, &lt;span class="st0"&gt;'3px solid green'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- SECTION "Selector Engine" [824-1851] --&gt;
&lt;h2&gt;&lt;a name="dom-manipulation" id="dom-manipulation"&gt;DOM Manipulation&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;/div&gt;
&lt;!-- SECTION "DOM Manipulation" [1852-1881] --&gt;
&lt;h2&gt;&lt;a name="css-manipulation" id="css-manipulation"&gt;CSS Manipulation&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

For manipulating with &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; element&amp;#039;s styles, engine provides one method that has double behavior. For example following example will retrieve all &amp;lt;p&amp;gt; tags from the widget and changes borders of found elements:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'#widget-id p'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;css&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'border'&lt;/span&gt;, &lt;span class="st0"&gt;'3px solid blue'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Sometimes it is necessary to change several styles for found element, following example shows this technique:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'#my-element-id &amp;gt; ul li &amp;gt; div.my-class'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;css&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        border: &lt;span class="st0"&gt;'3px solid green'&lt;/span&gt;,
        mariginTop: &lt;span class="st0"&gt;'6px'&lt;/span&gt;,
        backgroundColor: &lt;span class="st0"&gt;'#dedede'&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
As you can see it is possible to pass single JavaScript object to the same method. Besides “css()” method engine supports methods for element&amp;#039;s class attribute manipulation:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Method &lt;/th&gt;&lt;th class="col1"&gt;Description &lt;/th&gt;&lt;th class="col2"&gt;Example &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;$(&amp;#039;#widget&amp;#039;).setClass(className)&lt;/td&gt;&lt;td class="col1"&gt;Sets new css class&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'#widget'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;setClass&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'my-class'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;$(&amp;#039;#widget&amp;#039;).removeClass(className)&lt;/td&gt;&lt;td class="col1"&gt;Removes css class&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'#widget'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;removeClass&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'my-class'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;$(&amp;#039;#widget&amp;#039;).addClass(className)&lt;/td&gt;&lt;td class="col1"&gt;Adds css class to already existing class(es)&lt;/td&gt;&lt;td class="col2"&gt;&lt;pre class="code javascript"&gt;$&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'#widget'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;addClass&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'my-class'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "CSS Manipulation" [1882-] --&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=77EPsOg1kUs:mJZnfcaAyok:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=77EPsOg1kUs:mJZnfcaAyok:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=77EPsOg1kUs:mJZnfcaAyok:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=77EPsOg1kUs:mJZnfcaAyok:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=77EPsOg1kUs:mJZnfcaAyok:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=77EPsOg1kUs:mJZnfcaAyok:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=77EPsOg1kUs:mJZnfcaAyok:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=77EPsOg1kUs:mJZnfcaAyok:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=77EPsOg1kUs:mJZnfcaAyok:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=77EPsOg1kUs:mJZnfcaAyok:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=77EPsOg1kUs:mJZnfcaAyok:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/77EPsOg1kUs" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 11:53:48 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/javascript-api-codeq</feedburner:origLink></item>
        <item>
            <title>Overriding Widget Styles</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/MJzzUlpF-9k/overriding-widget-styles</link>
            <description>&lt;h1&gt;&lt;a name="overriding-widget-styles" id="overriding-widget-styles"&gt;Overriding Widget Styles&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

Often it is necessary to override predefined &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; styles of the widget. Styles are defined globally and are part of the dashboard theme, but thanks to widget structure it is possible to override most of the parts of the widget &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; styles. 
&lt;/p&gt;

&lt;p&gt;
Returning to the image that shows general structure of the widget(see picture below) it will became clear that there are just few segments that are important:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/widget-anatomy1.png?id=myweb%3Awidgets%3Aoverriding-widget-styles&amp;amp;cache=cache" class="media" title="myweb:widgets:widget-anatomy1.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/widget-anatomy1.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Parts of our interest are Widget Title, Widget Body and Widget Footer. There are three appropriate &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; classes that allow accessing these parts. To access mentioned parts of the widget following &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; selectors will be used:

&lt;/p&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; For Widget Header - &lt;strong&gt;div.widget-header&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; For Widget Title - &lt;strong&gt;div.widget-title&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; For Widget Body - &lt;strong&gt;div.widget-content-wrapper&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; For Widget Content - &lt;strong&gt;div.widget-content&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; For Widget Footer - &lt;strong&gt;div.widget-footer&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

But, as far as there is no mechanism to uniquely identify widgets with permanent ID so that it could be usable in the widget&amp;#039;s style-sheet few little tricks are required for achieving this goal.
&lt;/p&gt;

&lt;p&gt;
For setting custom styles open already built “HelloWorld” widget&amp;#039;s folder and add new &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; file with the name “helloworld.css” to it.
&lt;/p&gt;

&lt;p&gt;
Now we need to define &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; class that will distinguish HelloWorld widget from other widgets, “helloworld” will be perfecto choice for this example. Now open newly created &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; file and copy and paste following &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; code:
&lt;/p&gt;
&lt;pre class="code css"&gt;div&lt;span class="re1"&gt;.helloworld&lt;/span&gt; div&lt;span class="re1"&gt;.widget-header&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;background&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re0"&gt;#&lt;span class="nu0"&gt;333&lt;/span&gt;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.helloworld&lt;/span&gt; div&lt;span class="re1"&gt;.widget-title&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;color&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re0"&gt;#fff&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.helloworld&lt;/span&gt; div&lt;span class="re1"&gt;.widget-content-wrapper&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;margin&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;background-color&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re0"&gt;#&lt;span class="nu0"&gt;999&lt;/span&gt;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.helloworld&lt;/span&gt; div&lt;span class="re1"&gt;.widget-content&lt;/span&gt; p &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;padding&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;8px&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;text-align&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;center&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;color&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re0"&gt;#&lt;span class="nu0"&gt;333&lt;/span&gt;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;font-size&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;2em&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.helloworld&lt;/span&gt; div&lt;span class="re1"&gt;.widget-footer&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;background-color&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re0"&gt;#&lt;span class="nu0"&gt;666&lt;/span&gt;&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;padding&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re3"&gt;8px&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class="re1"&gt;.helloworld&lt;/span&gt; div&lt;span class="re1"&gt;.widget-footer&lt;/span&gt; p &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw1"&gt;color&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="re0"&gt;#fff&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;font-weight&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;bold&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
    &lt;span class="kw1"&gt;text-align&lt;/span&gt;&lt;span class="sy0"&gt;:&lt;/span&gt; &lt;span class="kw2"&gt;center&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Now open “helloworld.js” file and replace “this.onload” method with following JavaScript code:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="kw3"&gt;onload&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="co1"&gt;//add &amp;quot;helloworld&amp;quot; class name to the widget instance        &lt;/span&gt;
    $&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;addClass&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'helloworld'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="co1"&gt;//set initial content    	&lt;/span&gt;
    &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;p&amp;gt;Hello World!&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="co1"&gt;//add some HTML content to the widget's footer&lt;/span&gt;
    &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addToFooter&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;p&amp;gt;Testing Footer Style&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Thats it, after refreshing widget page you will see result shown on the picture below:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture14.png?id=myweb%3Awidgets%3Aoverriding-widget-styles&amp;amp;cache=cache" class="media" title="myweb:widgets:picture14.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture14.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MJzzUlpF-9k:8VNLT2Y_r3I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MJzzUlpF-9k:8VNLT2Y_r3I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MJzzUlpF-9k:8VNLT2Y_r3I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MJzzUlpF-9k:8VNLT2Y_r3I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MJzzUlpF-9k:8VNLT2Y_r3I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MJzzUlpF-9k:8VNLT2Y_r3I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MJzzUlpF-9k:8VNLT2Y_r3I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MJzzUlpF-9k:8VNLT2Y_r3I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MJzzUlpF-9k:8VNLT2Y_r3I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MJzzUlpF-9k:8VNLT2Y_r3I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MJzzUlpF-9k:8VNLT2Y_r3I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/MJzzUlpF-9k" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 14:49:05 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/overriding-widget-styles</feedburner:origLink></item>
        <item>
            <title>Storing Widget Data</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/PKDFSi_wWTE/storing-widget-data</link>
            <description>&lt;h1&gt;&lt;a name="storing-widget-data" id="storing-widget-data"&gt;Storing Widget Data&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

Sometimes preferences are not enough for managing widget&amp;#039;s state. There are types of widgets that require storing more complex data structures than built-in preferences system can handle. 
&lt;/p&gt;

&lt;p&gt;
For this purposes there are special type of methods defined by widget specification that are intended for working with such complex cases.
&lt;/p&gt;

&lt;p&gt;
These methods are:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Method &lt;/th&gt;&lt;th class="col1"&gt;Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.setData(data)&lt;/td&gt;&lt;td class="col1"&gt;Accepts parameter of Array or Object type. Complexity of passed parameter is not restricted&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;widget.getData()&lt;/td&gt;&lt;td class="col1"&gt;Returns Array or Object that is associated with widgets previous state&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;

Examples of widgets that need to store complex data with it&amp;#039;s state are for example Address Book, Bookmarks or Stock Quotes. Data required with these widgets is created and managed by user thus support for storing and retrieving user data is critical.
&lt;/p&gt;

&lt;p&gt;

&lt;div class="note"&gt;
Note that data stored by noted API methods could be serialized as JSON string, passing an invalid type of object will cause problems. For more information please see JSON specification.
&lt;/div&gt;

&lt;/p&gt;

&lt;p&gt;
Example of using these methods could be as simple as shown in the code below: 
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="kw3"&gt;onload&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
   &lt;span class="co1"&gt;//retrieve previously saved data&lt;/span&gt;
   &lt;span class="kw2"&gt;var&lt;/span&gt; data = &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;getData&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
   &lt;span class="co1"&gt;//if data object is not null print data&lt;/span&gt;
   &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;data&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
      &lt;span class="kw1"&gt;for&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; i &lt;span class="kw1"&gt;in&lt;/span&gt; data&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
         &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;addContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;data.&lt;span class="me1"&gt;title&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;; 
      &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
   &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt; &lt;span class="kw1"&gt;else&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      &lt;span class="co1"&gt;//create data object&lt;/span&gt;
      data = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
         title: &lt;span class="st0"&gt;'Phone List'&lt;/span&gt;,
         phones: &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;
            &lt;span class="nu0"&gt;1235123123&lt;/span&gt;,
            &lt;span class="nu0"&gt;0870700709&lt;/span&gt;,
            &lt;span class="nu0"&gt;9697690900&lt;/span&gt;,
            &lt;span class="nu0"&gt;9769769699&lt;/span&gt;
         &lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;
      &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
      &lt;span class="co1"&gt;//store data associated with widget&lt;/span&gt;
      &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setData&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;data&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
      &lt;span class="co1"&gt;//save the widget's state&lt;/span&gt;
      &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;save&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
   &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Shown example tries to retrieve previously saved data and if there is no data object associated with widget&amp;#039;s current state it creates new data object and saves widget state. This way you can work as complex data structures as required by your widget.
&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=PKDFSi_wWTE:6EvEzKuAiRQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=PKDFSi_wWTE:6EvEzKuAiRQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=PKDFSi_wWTE:6EvEzKuAiRQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=PKDFSi_wWTE:6EvEzKuAiRQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=PKDFSi_wWTE:6EvEzKuAiRQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=PKDFSi_wWTE:6EvEzKuAiRQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=PKDFSi_wWTE:6EvEzKuAiRQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=PKDFSi_wWTE:6EvEzKuAiRQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=PKDFSi_wWTE:6EvEzKuAiRQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=PKDFSi_wWTE:6EvEzKuAiRQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=PKDFSi_wWTE:6EvEzKuAiRQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/PKDFSi_wWTE" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 14:15:48 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/storing-widget-data</feedburner:origLink></item>
        <item>
            <title>Ajax API</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/QWw-dz-_R8c/widget-ajax-api</link>
            <description>&lt;h1&gt;&lt;a name="ajax-api" id="ajax-api"&gt;Ajax API&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

As shown in the widget &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; document there are four major methods that can be used for preforming Ajax calls. These methods are:
&lt;/p&gt;

&lt;/div&gt;

&lt;h4&gt;&lt;a name="ajax-methods" id="ajax-methods"&gt;Ajax Methods&lt;/a&gt;&lt;/h4&gt;
&lt;div class="level4"&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Method Name    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;UDW.proxy.getText(params)&lt;/td&gt;&lt;td class="col1"&gt;Returns result as plain text&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;UDW.proxy.getFeed(params)&lt;/td&gt;&lt;td class="col1"&gt;Returns feed object or error object&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;UDW.proxy.getXML(params)&lt;/td&gt;&lt;td class="col1"&gt;Returns result as &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; document&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row4"&gt;
		&lt;td class="col0"&gt;UDW.proxy.getJSON(params)&lt;/td&gt;&lt;td class="col1"&gt;Returns result as JSON object&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;

Every method requires exact one parameter that is specified as JavaScript object. See example of using parameter:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;UDW.&lt;span class="me1"&gt;proxy&lt;/span&gt;.&lt;span class="me1"&gt;getFeed&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    uri: &lt;span class="st0"&gt;'http://rss.cnn.com/rss/edition_world.rss'&lt;/span&gt;,
    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;response&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        &lt;span class="co1"&gt;//process response&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
As far as Ajax calls are asynchronous it is impossible to handle response returned by invoked method immediately, thus it is required to pass callback function to the Ajax method. After request completes passed callback function is invoked with only one argument.
&lt;/p&gt;

&lt;p&gt;
Type of the argument passed to the callback method depends on the invoked method. As shown above there are four methods for each particular request type. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "Ajax API" [1-1157] --&gt;
&lt;h2&gt;&lt;a name="udw.proxy.gettext" id="udw.proxy.gettext"&gt;UDW.proxy.getText&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

As we can see this method returns plain text after request completion. With this method it is possible to retrieve any text from any specified &lt;acronym title="Uniform Resource Identifier"&gt;URI&lt;/acronym&gt;.
&lt;/p&gt;
&lt;pre class="code javascript"&gt;UDW.&lt;span class="me1"&gt;proxy&lt;/span&gt;.&lt;span class="me1"&gt;getText&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    uri: &lt;span class="st0"&gt;'http://domain.com/document.txt'&lt;/span&gt;,
    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;response&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;response&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            widget.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;response&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- SECTION "UDW.proxy.getText" [1158-1547] --&gt;
&lt;h2&gt;&lt;a name="udw.proxy.getfeed" id="udw.proxy.getfeed"&gt;UDW.proxy.getFeed&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

This method is special case. Invoking this method will return JSON object that is standardized form of feeds. Currently only &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt;, Media &lt;acronym title="Rich Site Summary"&gt;RSS&lt;/acronym&gt; and Atom feeds of any versions are supported. Server side feed processor analyzes requested feed and builds standardized JSON object that is passed to the callback function later.
&lt;/p&gt;

&lt;p&gt;
This is really useful part of the &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt;. Instead of dealing with different types of &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; documents widget authors can work with standardized JSON object. Among other advantages it is worth to note that working with JSON is significantly faster rather then parsing &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; documents with &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; methods.
&lt;/p&gt;
&lt;pre class="code javascript"&gt;UDW.&lt;span class="me1"&gt;proxy&lt;/span&gt;.&lt;span class="me1"&gt;getText&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    uri: &lt;span class="st0"&gt;'http://domain.com/rssfeed.xml'&lt;/span&gt;,
    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;feed&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;feed&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw2"&gt;var&lt;/span&gt; body = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
            body.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Feed title: '&lt;/span&gt; + feed.&lt;span class="me1"&gt;title&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            body.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Number of items: '&lt;/span&gt; + feed.&lt;span class="me1"&gt;items&lt;/span&gt;.&lt;span class="me1"&gt;length&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            widget.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;body.&lt;span class="me1"&gt;join&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;br /&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- SECTION "UDW.proxy.getFeed" [1548-2547] --&gt;
&lt;h2&gt;&lt;a name="udw.proxy.getxml" id="udw.proxy.getxml"&gt;UDW.proxy.getXML&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

This method return &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; object. This is very powerful method for working with any type of &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; document. 
&lt;/p&gt;
&lt;pre class="code javascript"&gt;UDW.&lt;span class="me1"&gt;proxy&lt;/span&gt;.&lt;span class="me1"&gt;getText&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    uri: &lt;span class="st0"&gt;'http://domain.com/rssfeed.xml'&lt;/span&gt;,
    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;response&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;response&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw2"&gt;var&lt;/span&gt; doc = response.&lt;span class="me1"&gt;documentElement&lt;/span&gt;;
            &lt;span class="kw2"&gt;var&lt;/span&gt; body = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
            body.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Feed title: '&lt;/span&gt; + doc.&lt;span class="me1"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'title'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;nodeValue&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            body.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Number of items: '&lt;/span&gt; + doc.&lt;span class="me1"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'item'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;.&lt;span class="me1"&gt;lenght&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            widget.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;body.&lt;span class="me1"&gt;join&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;br /&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- SECTION "UDW.proxy.getXML" [2548-3150] --&gt;
&lt;h2&gt;&lt;a name="udw.proxy.getjson" id="udw.proxy.getjson"&gt;UDW.proxy.getJSON&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

This method is intended to only work with JSON responses. Method receives and parses JSON text and passes prepared object to the callback function.
&lt;/p&gt;

&lt;p&gt;
Suppose that we need to handle JSON document with following structure:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="st0"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;This is document title&amp;quot;&lt;/span&gt;,
    &lt;span class="st0"&gt;&amp;quot;description&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;This is document description&amp;quot;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code javascript"&gt;UDW.&lt;span class="me1"&gt;proxy&lt;/span&gt;.&lt;span class="me1"&gt;getText&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    uri: &lt;span class="st0"&gt;'http://domain.com/jsondocument.php'&lt;/span&gt;,
    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;response&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        &lt;span class="kw1"&gt;if&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;response&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw2"&gt;var&lt;/span&gt; body = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
            body.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Title: '&lt;/span&gt; + response.&lt;span class="me1"&gt;title&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            body.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Description: '&lt;/span&gt; + response.&lt;span class="me1"&gt;description&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            widget.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;body.&lt;span class="me1"&gt;join&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;br /&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- SECTION "UDW.proxy.getJSON" [3151-] --&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=QWw-dz-_R8c:68ZmwaFjh1E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=QWw-dz-_R8c:68ZmwaFjh1E:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=QWw-dz-_R8c:68ZmwaFjh1E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=QWw-dz-_R8c:68ZmwaFjh1E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=QWw-dz-_R8c:68ZmwaFjh1E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=QWw-dz-_R8c:68ZmwaFjh1E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=QWw-dz-_R8c:68ZmwaFjh1E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=QWw-dz-_R8c:68ZmwaFjh1E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=QWw-dz-_R8c:68ZmwaFjh1E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=QWw-dz-_R8c:68ZmwaFjh1E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=QWw-dz-_R8c:68ZmwaFjh1E:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/QWw-dz-_R8c" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 10:43:59 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/widget-ajax-api</feedburner:origLink></item>
        <item>
            <title>Widget Anatomy</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/kkREdfOd1J4/widget-anatomy</link>
            <description>&lt;h1&gt;&lt;a name="widget-anatomy" id="widget-anatomy"&gt;Widget Anatomy&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

Anatomy of a widget is quite simple. Every widget consist of two required components: widget JavaScript file and configuration xml file. Other stuff such as &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; files, images or flash are not required and depend on particular widget implementation.
&lt;/p&gt;

&lt;p&gt;
Widgets are segmented into four major parts. These parts are shown on the picture below:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/widget-anatomy1.png?id=myweb%3Awidgets%3Awidget-anatomy&amp;amp;cache=cache" class="media" title="myweb:widgets:widget-anatomy1.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/widget-anatomy1.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
As you can see from the picture above, anatomy of a widget is quite simple and shown parts(title, preferences, body and footer) can be easily managed through comprehensive Widget &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "Widget Anatomy" [1-597] --&gt;
&lt;h2&gt;&lt;a name="widget-javascript-code" id="widget-javascript-code"&gt;Widget JavaScript Code&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

As widget&amp;#039;s structure itself, code required for widget is quite simple as well. In its simples form widget could be expressed as simple as shown in the code snippet below:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="coMULTI"&gt;/**
     * Widget class. Widget is being implemented like general javascript function 
     * Function doesn't require any additional parameters.
     * Instance of the widget is instantiated by Widget Engine
     */&lt;/span&gt;
    &lt;span class="kw2"&gt;function&lt;/span&gt; MyWidget&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * Widget's initial configuration parameters.
         * Every widget must supply initial configuration parameters.
         * Parameters object has simple key/value structure
         */&lt;/span&gt;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;config&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'mywidget'&lt;/span&gt;,          &lt;span class="co1"&gt;//Name of the widget.&lt;/span&gt;
            iconId: &lt;span class="st0"&gt;'mywidget'&lt;/span&gt;,        &lt;span class="co1"&gt;//CSS class name of the widget icon&lt;/span&gt;
            title: &lt;span class="st0"&gt;'This Is MyWidget'&lt;/span&gt;, &lt;span class="co1"&gt;//Title of the widget&lt;/span&gt;
            content: &lt;span class="st0"&gt;''&lt;/span&gt;                &lt;span class="co1"&gt;//Initial content of the widget, can be empty&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="coMULTI"&gt;/**
         * Widget API method that is called by Widget Engine after widget completes loading
         */&lt;/span&gt; 
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="kw3"&gt;onload&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class="coMULTI"&gt;/**
             * Widget API method, requires exactly one parameter,
             * parameter can be a DOM element or a String object.
             * Passed parameter will be rendered as a widget body.
             * 
             * @param Mixed DOM element or String Object
             */&lt;/span&gt;  
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;&amp;quot;This is My First Widget&amp;quot;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="coMULTI"&gt;/**
     * Add widget into the global registry
     * This step is mandatory, otherwise widget wouldn't be usable.
     * Note that the name of a widget and the name of a widget class can be different
     * 
     * @param String name of the widget
     * @param Function reference to actual widget
     */&lt;/span&gt;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'mywidget'&lt;/span&gt;, MyWidget&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;; 
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- SECTION "Widget JavaScript Code" [598-2534] --&gt;
&lt;h2&gt;&lt;a name="widget-preferences" id="widget-preferences"&gt;Widget Preferences&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

It is natural that widgets need some kind of preferences system. Customization feature is one of the useful for end users. Thus it is not surprise that  our implementation supports powerful and comfortable preferences management system.
&lt;/p&gt;

&lt;p&gt;
As you already seen from the above image of the widget, preferences are managed through simple UI. There are several types of preferences and they could be managed through JavaScript code as follows:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kw2"&gt;function&lt;/span&gt; MyWidget&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;preferences&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'first_name'&lt;/span&gt;,
                type: &lt;span class="st0"&gt;'text'&lt;/span&gt;,
                label: &lt;span class="st0"&gt;'First Name'&lt;/span&gt;,
                value: &lt;span class="kw2"&gt;null&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
            &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'married'&lt;/span&gt;,
                type: &lt;span class="st0"&gt;'checkbox'&lt;/span&gt;,
                label: &lt;span class="st0"&gt;'Married'&lt;/span&gt;,
                checked: &lt;span class="kw2"&gt;true&lt;/span&gt;,
                value: &lt;span class="nu0"&gt;1&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
            &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'language'&lt;/span&gt;,
                type: &lt;span class="st0"&gt;'hidden'&lt;/span&gt;,
                value: &lt;span class="st0"&gt;'en'&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
            &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'sex'&lt;/span&gt;,
                type: &lt;span class="st0"&gt;'list'&lt;/span&gt;,
                label: &lt;span class="st0"&gt;'Sex'&lt;/span&gt;,
                list: &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st0"&gt;'male'&lt;/span&gt;, &lt;span class="st0"&gt;'female'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
            &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'range'&lt;/span&gt;,
                type: &lt;span class="st0"&gt;'range'&lt;/span&gt;,
                label: &lt;span class="st0"&gt;'Range of Numbers'&lt;/span&gt;,
                start: &lt;span class="nu0"&gt;5&lt;/span&gt;,
                end: &lt;span class="nu0"&gt;100&lt;/span&gt;,
                step: &lt;span class="nu0"&gt;10&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    &lt;span class="co1"&gt;//other parts of code are omited&lt;/span&gt;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Shown example of preferences will produce UI with text box, checkbox, hidden and two drop-down fields. Example is self explanatory but supported types with descriptions are listed below:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Type &lt;/th&gt;&lt;th class="col1"&gt;Attributes &lt;/th&gt;&lt;th class="col2"&gt;Description &lt;/th&gt;&lt;th class="col3"&gt;Example&lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;text&lt;/td&gt;&lt;td class="col1"&gt;name, type, label, value&lt;/td&gt;&lt;td class="col2"&gt;Creates text element.&lt;/td&gt;&lt;td class="col3"&gt;&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'first_name'&lt;/span&gt;,
    type: &lt;span class="st0"&gt;'text'&lt;/span&gt;,
    label: &lt;span class="st0"&gt;'First Name'&lt;/span&gt;,
    value: &lt;span class="kw2"&gt;null&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;checkbox&lt;/td&gt;&lt;td class="col1"&gt;name, type, label, value, checked&lt;/td&gt;&lt;td class="col2"&gt;Creates checkbox element. “checked” attribute&amp;#039;s value can be specified as true or false&lt;/td&gt;&lt;td class="col3"&gt;&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'married'&lt;/span&gt;,
    type: &lt;span class="st0"&gt;'checkbox'&lt;/span&gt;,
    label: &lt;span class="st0"&gt;'Married'&lt;/span&gt;,
    checked: &lt;span class="kw2"&gt;true&lt;/span&gt;,
    value: &lt;span class="nu0"&gt;1&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;hidden&lt;/td&gt;&lt;td class="col1"&gt;name, type, value&lt;/td&gt;&lt;td class="col2"&gt;Creates hidden element&lt;/td&gt;&lt;td class="col3"&gt;&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'language'&lt;/span&gt;,
    type: &lt;span class="st0"&gt;'hidden'&lt;/span&gt;,
    value: &lt;span class="st0"&gt;'en'&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row4"&gt;
		&lt;td class="col0"&gt;list&lt;/td&gt;&lt;td class="col1"&gt;name, type, label, list, value&lt;/td&gt;&lt;td class="col2"&gt;Creates drop-down list. If the value specified is equals to one of the elements listed in “list” attribute, this value will be selected&lt;/td&gt;&lt;td class="col3"&gt;&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'sex'&lt;/span&gt;,
    type: &lt;span class="st0"&gt;'list'&lt;/span&gt;,
    label: &lt;span class="st0"&gt;'Sex'&lt;/span&gt;,
    list: &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="st0"&gt;'male'&lt;/span&gt;, &lt;span class="st0"&gt;'female'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;,
    value: &lt;span class="st0"&gt;'female'&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row5"&gt;
		&lt;td class="col0"&gt;range&lt;/td&gt;&lt;td class="col1"&gt;name, type, label, start, end, step, value&lt;/td&gt;&lt;td class="col2"&gt;Creates drop-down list. start, end and step attributes are required. Shown example will produce drop-down list with options: 20, 40, 60, 80, 100 where option with value 40 will be selected &lt;/td&gt;&lt;td class="col3"&gt;&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'range'&lt;/span&gt;,
    type: &lt;span class="st0"&gt;'range'&lt;/span&gt;,
    label: &lt;span class="st0"&gt;'Range of Numbers'&lt;/span&gt;,
    start: &lt;span class="nu0"&gt;20&lt;/span&gt;,
    end: &lt;span class="nu0"&gt;100&lt;/span&gt;,
    step: &lt;span class="nu0"&gt;10&lt;/span&gt;,
    value: &lt;span class="nu0"&gt;40&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;

Shown table completely describes all supported preference types and their usage examples. Also note that for single widget you can use as many of supported preference types as you like. 
&lt;/p&gt;

&lt;p&gt;
For further manipulation of preferences and its values there are two &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods that you can access through particular widget instance. See table below:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Method Name    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.setValue(name, value)&lt;/td&gt;&lt;td class="col1"&gt;Set specified value to preference specified as name&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;widget.getValue(name)&lt;/td&gt;&lt;td class="col1"&gt;Returns value for specified “name” preference&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;

It is important to note that, initial preference values are only set while first instantiation of the widget. All changed preference values are stored within widget state and later are used by the widget engine to instantiate widget according to these newly defined values.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "Widget Preferences" [2535-6307] --&gt;
&lt;h2&gt;&lt;a name="widget-configuration" id="widget-configuration"&gt;Widget Configuration&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

Configuration &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; file for shown widget is very simple as you can see from the &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; code shown below:
&lt;/p&gt;
&lt;pre class="code xml"&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;encoding&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;widget&lt;/span&gt; &lt;span class="re0"&gt;name&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;mywidget&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;icon&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;mywidget&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;section&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;basic&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;title&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;MyWidget&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/title&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;description&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class="sc2"&gt;&amp;lt;![CDATA[This is my very first widget]]&amp;gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/description&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;tags&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class="sc2"&gt;&amp;lt;![CDATA[mywidget]]&amp;gt;&lt;/span&gt;
    &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/tags&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/widget&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Tags of configuration &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; file and tag attributes are quite self explanatory. These are minimal tags and attributes required for widget final deployment. There are additional non required tags that are described in grater details in dedicated section.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "Widget Configuration" [6308-] --&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kkREdfOd1J4:SzBKsE_8YV8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kkREdfOd1J4:SzBKsE_8YV8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kkREdfOd1J4:SzBKsE_8YV8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=kkREdfOd1J4:SzBKsE_8YV8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kkREdfOd1J4:SzBKsE_8YV8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kkREdfOd1J4:SzBKsE_8YV8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=kkREdfOd1J4:SzBKsE_8YV8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kkREdfOd1J4:SzBKsE_8YV8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kkREdfOd1J4:SzBKsE_8YV8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=kkREdfOd1J4:SzBKsE_8YV8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=kkREdfOd1J4:SzBKsE_8YV8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/kkREdfOd1J4" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 26 Nov 2008 08:11:38 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/widget-anatomy</feedburner:origLink></item>
        <item>
            <title>Widget API</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/_H3ihIP2tvw/widget-api</link>
            <description>&lt;h1&gt;&lt;a name="widget-api" id="widget-api"&gt;Widget API&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;/div&gt;
&lt;!-- SECTION "Widget API" [1-26] --&gt;
&lt;h2&gt;&lt;a name="widget-events" id="widget-events"&gt;Widget Events&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Method Name    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.onload()&lt;/td&gt;&lt;td class="col1"&gt;Handled when widget completes load&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;widget.onPreferencesSave()&lt;/td&gt;&lt;td class="col1"&gt;Handled when users hit preferences save button&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "Widget Events" [27-220] --&gt;
&lt;h2&gt;&lt;a name="content-manipulation-methods" id="content-manipulation-methods"&gt;Content Manipulation Methods&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Method Name    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.setTitle(title)&lt;/td&gt;&lt;td class="col1"&gt;Sets title of the widget. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;widget.getTitle()&lt;/td&gt;&lt;td class="col1"&gt;Returns current title of the widget&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;widget.setContent(content)&lt;/td&gt;&lt;td class="col1"&gt;Sets content to the widget body. Specified parameter can be a String object or a &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; element. This methods replaces already existing content&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row4"&gt;
		&lt;td class="col0"&gt;widget.addContent(content)&lt;/td&gt;&lt;td class="col1"&gt;Parameter can be as String as &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; element. Appends new content to already existing content&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row5"&gt;
		&lt;td class="col0"&gt;widget.getContent()&lt;/td&gt;&lt;td class="col1"&gt;Returns &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt; code of the widget body&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row6"&gt;
		&lt;td class="col0"&gt;widget.getBody()&lt;/td&gt;&lt;td class="col1"&gt;Returns widget body as a &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; element&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row7"&gt;
		&lt;td class="col0"&gt;widget.setToFooter(content)&lt;/td&gt;&lt;td class="col1"&gt;Sets content to the widget footer. Specified parameter can be a String object or a &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; element. This methods replaces already existing content&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row8"&gt;
		&lt;td class="col0"&gt;widget.addToFooter(content)&lt;/td&gt;&lt;td class="col1"&gt;Parameter can be as String as &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; element. Appends new content to already existing content&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "Content Manipulation Methods" [221-1107] --&gt;
&lt;h2&gt;&lt;a name="widget-preferences-methods" id="widget-preferences-methods"&gt;Widget Preferences Methods&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Method Name    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.setValue(name, value)&lt;/td&gt;&lt;td class="col1"&gt;Set specified value to preference specified as name&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;widget.getValue(name)&lt;/td&gt;&lt;td class="col1"&gt;Returns value for specified “name” preference&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "Widget Preferences Methods" [1108-1337] --&gt;
&lt;h2&gt;&lt;a name="widget-style-methods" id="widget-style-methods"&gt;Widget Style Methods&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Method Name    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.setStyle(styleName)&lt;/td&gt;&lt;td class="col1"&gt;Sets style for current widget. Styles can be specified as: white, red, green, blue and yellow&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;widget.getStyle()&lt;/td&gt;&lt;td class="col1"&gt;Returns name of the current style&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "Widget Style Methods" [1338-1585] --&gt;
&lt;h2&gt;&lt;a name="ajax-methods" id="ajax-methods"&gt;Ajax Methods&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Method Name    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;UDW.proxy.getFeed(params)&lt;/td&gt;&lt;td class="col1"&gt;Returns feed object or error object&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;UDW.proxy.getText(params)&lt;/td&gt;&lt;td class="col1"&gt;Returns result as plain text&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;UDW.proxy.getXML(params)&lt;/td&gt;&lt;td class="col1"&gt;Returns result as &lt;acronym title="Extensible Markup Language"&gt;XML&lt;/acronym&gt; document&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row4"&gt;
		&lt;td class="col0"&gt;UDW.proxy.getJSON(params)&lt;/td&gt;&lt;td class="col1"&gt;Returns result as JSON object&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "Ajax Methods" [1586-] --&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=_H3ihIP2tvw:fwv9hY8_KkI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=_H3ihIP2tvw:fwv9hY8_KkI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=_H3ihIP2tvw:fwv9hY8_KkI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=_H3ihIP2tvw:fwv9hY8_KkI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=_H3ihIP2tvw:fwv9hY8_KkI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=_H3ihIP2tvw:fwv9hY8_KkI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=_H3ihIP2tvw:fwv9hY8_KkI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=_H3ihIP2tvw:fwv9hY8_KkI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=_H3ihIP2tvw:fwv9hY8_KkI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=_H3ihIP2tvw:fwv9hY8_KkI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=_H3ihIP2tvw:fwv9hY8_KkI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/_H3ihIP2tvw" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 10:43:27 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/widget-api</feedburner:origLink></item>
        <item>
            <title>Widget Components</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/k8AAf6mc1vE/widget-components</link>
            <description>&lt;h1&gt;&lt;a name="widget-components" id="widget-components"&gt;Widget Components&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

There are two UI components that are used frequently for building widgets. These two components are Tab Menu and Pagination. Both of the components are used in all of the news and search widgets.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "Widget Components" [1-230] --&gt;
&lt;h2&gt;&lt;a name="tab-menu" id="tab-menu"&gt;Tab Menu&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

Tab Menu is frequently used for splitting widget&amp;#039;s content into separate tabs. Tab Menu component has few &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods that allows developers to easily manage as whole tab menu control as its separate tabs.
&lt;/p&gt;

&lt;p&gt;
Example Tab Menu looks something like this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture7.png?id=myweb%3Awidgets%3Awidget-components&amp;amp;cache=cache" class="media" title="myweb:widgets:picture7.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture7.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

First of all it is necessary to obtain tab menu object as shown in code below:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="coMULTI"&gt;/**
 * Instantiate tab menu component
 */&lt;/span&gt;
&lt;span class="kw2"&gt;var&lt;/span&gt; tabMenu = &lt;span class="kw2"&gt;new&lt;/span&gt; UDW.&lt;span class="me1"&gt;Components&lt;/span&gt;.&lt;span class="me1"&gt;Tab&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
For adding new tabs into the tab menu you need to use &lt;strong&gt;addTab&lt;/strong&gt; method:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="coMULTI"&gt;/**
 * @param String tabId unique identifier of the tab
 * @param Object javascript object specifying addition parameters
 */&lt;/span&gt;
tabMenu.&lt;span class="me1"&gt;addTab&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
  &lt;span class="st0"&gt;'tabId'&lt;/span&gt;,
  &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    label: &lt;span class="st0"&gt;'First Tab'&lt;/span&gt;,
    content: &lt;span class="st0"&gt;'&amp;lt;p&amp;gt;This is first tab&amp;lt;/p&amp;gt;'&lt;/span&gt;,
    active: &lt;span class="kw2"&gt;true&lt;/span&gt;,
    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;tabItem&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        &lt;span class="co1"&gt;//rest of code here&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt; 
  &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Shown method accepts two parameters tabId and parameters object. Structure of the parameters object is shown in the table below:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Parameter &lt;/th&gt;&lt;th class="col1"&gt;Description &lt;/th&gt;&lt;th class="col2"&gt;Required &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;label&lt;/td&gt;&lt;td class="col1"&gt;Label for the tab item&lt;/td&gt;&lt;td class="col2"&gt;Yes&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;content&lt;/td&gt;&lt;td class="col1"&gt;Content for the tab item&lt;/td&gt;&lt;td class="col2"&gt;No&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;active&lt;/td&gt;&lt;td class="col1"&gt;Whether tab item is active(selected) or no. Defaults to false&lt;/td&gt;&lt;td class="col2"&gt;No&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row4"&gt;
		&lt;td class="col0"&gt;callback&lt;/td&gt;&lt;td class="col1"&gt;JavaScript function to be called after tab item is selected.&lt;/td&gt;&lt;td class="col2"&gt;No&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;

There is one more additional useful attribute that due to its complexity is not listed in the table and requires additional explanation.
&lt;/p&gt;

&lt;p&gt;
Every tab item added to the tab menu can contain children items. Example of child items can be found in the news widgets. To add sub items(children) to the tab menu item you need to specify them as shown below:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;tabMenu.&lt;span class="me1"&gt;addTab&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
  &lt;span class="st0"&gt;'tabId'&lt;/span&gt;,
  &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    label: &lt;span class="st0"&gt;'First Tab'&lt;/span&gt;,
    content: &lt;span class="st0"&gt;'&amp;lt;p&amp;gt;This is first tab&amp;lt;/p&amp;gt;'&lt;/span&gt;,
    active: &lt;span class="kw2"&gt;true&lt;/span&gt;,
    callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;tabItem&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        &lt;span class="co1"&gt;//rest of code here&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
    subItems: &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        items: &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="st0"&gt;'att'&lt;/span&gt;:     UDW.&lt;span class="me1"&gt;str&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Attention - Monthly'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;,
            &lt;span class="st0"&gt;'avgStay'&lt;/span&gt;: UDW.&lt;span class="me1"&gt;str&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Average Stay - Monthly'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;,
            &lt;span class="st0"&gt;'ppv'&lt;/span&gt;:     UDW.&lt;span class="me1"&gt;str&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'Pages/Visit - Monthly'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
        callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;event, childItem&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="co1"&gt;//rest of code here&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
  &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
As shown in the example sub items are passed as key/value pairs. Also additional callback parameter can be passed that is handled after sub item is clicked. 
&lt;/p&gt;

&lt;p&gt;
Other &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods that is supported by tab menu components are shown in table:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Method &lt;/th&gt;&lt;th class="col1"&gt;Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;tabMenu.getActiveTab()&lt;/td&gt;&lt;td class="col1"&gt;Returns currently selected tab menu item&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;tabMenu.getItemCount()&lt;/td&gt;&lt;td class="col1"&gt;Returns count of tab menu items&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;tabMenu.removeActiveTab()&lt;/td&gt;&lt;td class="col1"&gt;Removes currently selected tab menu item&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row4"&gt;
		&lt;td class="col0"&gt;tabMenu.getTabs()&lt;/td&gt;&lt;td class="col1"&gt;Returns array of all tab menu items&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "Tab Menu" [231-2921] --&gt;
&lt;h3&gt;&lt;a name="tabitem-object" id="tabitem-object"&gt;TabItem object&lt;/a&gt;&lt;/h3&gt;
&lt;div class="level3"&gt;

&lt;p&gt;
Internally all tab menu items are of type TabItem object that has several useful &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods. These methods are extremely useful while working with tab items and give developers additional flexibility. These &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods are listed in table below:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0"&gt;Method &lt;/th&gt;&lt;th class="col1"&gt;Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;tabItem.isActive()&lt;/td&gt;&lt;td class="col1"&gt;Returns true or false depending on the current state of the tabItem object&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;tabItem.getLabel()&lt;/td&gt;&lt;td class="col1"&gt;Returns label of the tabItem object&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row3"&gt;
		&lt;td class="col0"&gt;tabItem.setLabel(label)&lt;/td&gt;&lt;td class="col1"&gt;Sets label to the tabItem object&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row4"&gt;
		&lt;td class="col0"&gt;tabItem.setContent(content)&lt;/td&gt;&lt;td class="col1"&gt;Sets content to the current tab. Parameter can be specified as String or &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; element&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row5"&gt;
		&lt;td class="col0"&gt;tabItem.getContent()&lt;/td&gt;&lt;td class="col1"&gt;Returns innerHTML of the tab&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row6"&gt;
		&lt;td class="col0"&gt;tabItem.getPage()&lt;/td&gt;&lt;td class="col1"&gt;Returns &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt; element of the tab&amp;#039;s content area&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;!-- SECTION "TabItem object" [2922-3663] --&gt;
&lt;h2&gt;&lt;a name="pagination-component" id="pagination-component"&gt;Pagination Component&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;

&lt;p&gt;

Pagination component is very useful UI component that potentially can be used for working with any type of content that requires splitting due to its large size. Implementation of component allows to easily navigate through content.
&lt;/p&gt;

&lt;p&gt;
Example Pagination looks something like this:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture8.png?id=myweb%3Awidgets%3Awidget-components&amp;amp;cache=cache" class="media" title="myweb:widgets:picture8.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture8.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Working with pagination component is bit complicated, but shown example and following explanations will clarify all details:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&amp;nbsp;
&lt;span class="co1"&gt;//obtain widget reference for later use&lt;/span&gt;
&lt;span class="kw2"&gt;var&lt;/span&gt; widget = &lt;span class="kw1"&gt;this&lt;/span&gt;;
&amp;nbsp;
&lt;span class="coMULTI"&gt;/**
 * Instantiate Pagination component
 */&lt;/span&gt;
&lt;span class="kw2"&gt;var&lt;/span&gt; pagination = UDW.&lt;span class="me1"&gt;Components&lt;/span&gt;.&lt;span class="me1"&gt;Pagination&lt;/span&gt;.&lt;span class="me1"&gt;getComponent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
        currentPage: &lt;span class="nu0"&gt;1&lt;/span&gt;, &lt;span class="co1"&gt;//Specify current page to be selected&lt;/span&gt;
        rowsPerPage: &lt;span class="nu0"&gt;2&lt;/span&gt;, &lt;span class="co1"&gt;//Specify number of records to be shown on each page&lt;/span&gt;
        rowName: &lt;span class="st0"&gt;'stories'&lt;/span&gt;, &lt;span class="co1"&gt;//Specify collection name to be processed&lt;/span&gt;
        callback: &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;rows&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt; &lt;span class="co1"&gt;//Specify callback function to be invoked for processing selected rows&lt;/span&gt;
            &lt;span class="kw2"&gt;var&lt;/span&gt; htm = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
            &lt;span class="kw1"&gt;for&lt;/span&gt; &lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;var&lt;/span&gt; i = &lt;span class="nu0"&gt;0&lt;/span&gt;; i &lt;span class="sy0"&gt;&amp;lt;&lt;/span&gt; rows.&lt;span class="me1"&gt;length&lt;/span&gt;; i++&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                htm.&lt;span class="me1"&gt;push&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'&amp;lt;p&amp;gt;'&lt;/span&gt; + rows&lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;i&lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;.&lt;span class="me1"&gt;title&lt;/span&gt; + &lt;span class="st0"&gt;'&amp;lt;/p&amp;gt;'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
            widget.&lt;span class="me1"&gt;setContent&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;htm.&lt;span class="me1"&gt;join&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;''&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="coMULTI"&gt;/**
 * Add Pagination component to the widget's footer section
 */&lt;/span&gt;
widget.&lt;span class="me1"&gt;setToFooter&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;pagination&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="coMULTI"&gt;/**
 * This is example result-set used for this example
 * collection contains objects collection named &amp;quot;stories&amp;quot;
 * which will be processed by pagination component
 */&lt;/span&gt;
&lt;span class="kw2"&gt;var&lt;/span&gt; result = &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
    stories: &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;
      &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;title: &lt;span class="st0"&gt;'Story 1'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
      &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;title: &lt;span class="st0"&gt;'Story 2'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
      &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;title: &lt;span class="st0"&gt;'Story 3'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
      &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;title: &lt;span class="st0"&gt;'Story 4'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
      &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;title: &lt;span class="st0"&gt;'Story 5'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,
      &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;title: &lt;span class="st0"&gt;'Story 6'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
    &lt;span class="br0"&gt;&amp;#93;&lt;/span&gt; 
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="coMULTI"&gt;/**
 * pass result-set to pagination component's process method
 */&lt;/span&gt;
pagination.&lt;span class="me1"&gt;process&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;result&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
For testing this code just copy and paste it into the “this.onload” method of the HelloWorld widget and you will immediately see the result.

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- SECTION "Pagination Component" [3664-] --&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=k8AAf6mc1vE:YQJs44ExJP0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=k8AAf6mc1vE:YQJs44ExJP0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=k8AAf6mc1vE:YQJs44ExJP0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=k8AAf6mc1vE:YQJs44ExJP0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=k8AAf6mc1vE:YQJs44ExJP0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=k8AAf6mc1vE:YQJs44ExJP0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=k8AAf6mc1vE:YQJs44ExJP0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=k8AAf6mc1vE:YQJs44ExJP0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=k8AAf6mc1vE:YQJs44ExJP0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=k8AAf6mc1vE:YQJs44ExJP0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=k8AAf6mc1vE:YQJs44ExJP0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/k8AAf6mc1vE" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Thu, 20 Nov 2008 02:30:05 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/widget-components</feedburner:origLink></item>
        <item>
            <title>Working with Widget Preferences</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/MIQuNTIb8gE/workign-with-widget-preferences</link>
            <description>&lt;h1&gt;&lt;a name="working-with-widget-preferences" id="working-with-widget-preferences"&gt;Working with Widget Preferences&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;

&lt;p&gt;

Widget Preference Management is built-in capability of widgets. There are special &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods that allow developers to easily work with preferences.
&lt;/p&gt;

&lt;p&gt;
There are two &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods for working with preferences. These methods are:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Method Name    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.setValue(name, value)&lt;/td&gt;&lt;td class="col1"&gt;Set specified value to preference specified as name&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class="row2"&gt;
		&lt;td class="col0"&gt;widget.getValue(name)&lt;/td&gt;&lt;td class="col1"&gt;Returns value for specified “name” preference&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;

Besides shown two &lt;acronym title="Application Programming Interface"&gt;API&lt;/acronym&gt; methods there is one event associated with preferences:

&lt;/p&gt;
&lt;table class="inline"&gt;
	&lt;tr class="row0"&gt;
		&lt;th class="col0 leftalign"&gt; Event    &lt;/th&gt;&lt;th class="col1 leftalign"&gt; Description     &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class="row1"&gt;
		&lt;td class="col0"&gt;widget.onPreferencesSave()&lt;/td&gt;&lt;td class="col1"&gt;Handled when users hit preferences save button&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;

Let&amp;#039;s enhance previously created Google Search widget with preferences. For this open “googlesearch.js” widget file and add preference settings to it:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kw2"&gt;function&lt;/span&gt; GoogleSearch&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;preferences&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                type: &lt;span class="st0"&gt;'text'&lt;/span&gt;,
                &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'title'&lt;/span&gt;,
                label: &lt;span class="st0"&gt;'Title'&lt;/span&gt;,
                value: &lt;span class="st0"&gt;''&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="co1"&gt;//rest of code here&lt;/span&gt;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'googlesearch'&lt;/span&gt;, GoogleSearch&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Thats it preference with name “title” is created. If you reload the widget you will find that hovering it&amp;#039;s title will show “Edit” link, clicking this link will show widget&amp;#039;s preferences. See on the picture below:
&lt;/p&gt;

&lt;p&gt;
&lt;a href="http://www.phpcow.com/docs/_detail/myweb/widgets/picture15.png?id=myweb%3Awidgets%3Aworkign-with-widget-preferences&amp;amp;cache=cache" class="media" title="myweb:widgets:picture15.png"&gt;&lt;img src="http://www.phpcow.com/docs/_media/myweb/widgets/picture15.png?w=&amp;amp;h=&amp;amp;cache=cache" class="mediacenter" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Now it&amp;#039;s time to do something with this preferences. First of all lets add “onPreferencesSave()” event handler method to the widget&amp;#039;s code:
&lt;/p&gt;
&lt;pre class="code javascript"&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class="kw2"&gt;function&lt;/span&gt; GoogleSearch&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;preferences&lt;/span&gt; = &lt;span class="br0"&gt;&amp;#91;&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
                type: &lt;span class="st0"&gt;'text'&lt;/span&gt;,
                &lt;span class="kw3"&gt;name&lt;/span&gt;: &lt;span class="st0"&gt;'title'&lt;/span&gt;,
                label: &lt;span class="st0"&gt;'Title'&lt;/span&gt;,
                value: &lt;span class="st0"&gt;''&lt;/span&gt;
            &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
        &lt;span class="br0"&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
        &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;onPreferencesSave&lt;/span&gt; = &lt;span class="kw2"&gt;function&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;
            &lt;span class="co1"&gt;//try to retrieve title or use default&lt;/span&gt;
            &lt;span class="kw2"&gt;var&lt;/span&gt; title = &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;getValue&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'title'&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt; &lt;span class="sy0"&gt;||&lt;/span&gt; &lt;span class="st0"&gt;'Google Search'&lt;/span&gt;;
            &lt;span class="co1"&gt;//set title to the widget&lt;/span&gt;
            &lt;span class="kw1"&gt;this&lt;/span&gt;.&lt;span class="me1"&gt;setTitle&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;title&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class="co1"&gt;//rest of code here&lt;/span&gt;
&amp;nbsp;
    &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    UDW.&lt;span class="me1"&gt;registerWidget&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="st0"&gt;'googlesearch'&lt;/span&gt;, GoogleSearch&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#40;&lt;/span&gt;&lt;span class="br0"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;
&lt;p&gt;
Shown “onPreferencesSave()” method will be handled when user hits “Save” button. Logic of the method is quite simple, it just tries to retrieve value of the “title” field and later assigns it to the widget&amp;#039;s title.
&lt;/p&gt;

&lt;p&gt;
Most of the time working with widget preferences is as simple as was shown in the current example.

&lt;/p&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MIQuNTIb8gE:t6-OhYWslsA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MIQuNTIb8gE:t6-OhYWslsA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MIQuNTIb8gE:t6-OhYWslsA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MIQuNTIb8gE:t6-OhYWslsA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MIQuNTIb8gE:t6-OhYWslsA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MIQuNTIb8gE:t6-OhYWslsA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MIQuNTIb8gE:t6-OhYWslsA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MIQuNTIb8gE:t6-OhYWslsA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MIQuNTIb8gE:t6-OhYWslsA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=MIQuNTIb8gE:t6-OhYWslsA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=MIQuNTIb8gE:t6-OhYWslsA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/MIQuNTIb8gE" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb:widgets</category>
            <pubDate>Wed, 19 Nov 2008 14:34:43 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets/workign-with-widget-preferences</feedburner:origLink></item>
        <item>
            <title>The Control Panel</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/jAi2bEytk88/acp</link>
            <description>&lt;h1&gt;&lt;a name="the-control-panel" id="the-control-panel"&gt;The Control Panel&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/mysql-tools" class="wikilink1" title="myweb:acp:mysql-tools"&gt;MySql Tools&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/system-logs" class="wikilink1" title="myweb:acp:system-logs"&gt;System Logs&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/feed-management" class="wikilink1" title="myweb:acp:feed-management"&gt;Feed Management&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/local-content" class="wikilink1" title="myweb:acp:local-content"&gt;Local Content&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/widget-management" class="wikilink1" title="myweb:acp:widget-management"&gt;Widget Management&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/user-management" class="wikilink1" title="myweb:acp:user-management"&gt;User Management&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/language-tools" class="wikilink1" title="myweb:acp:language-tools"&gt;Language Tools&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=jAi2bEytk88:DksVfpOyNZM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=jAi2bEytk88:DksVfpOyNZM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=jAi2bEytk88:DksVfpOyNZM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=jAi2bEytk88:DksVfpOyNZM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=jAi2bEytk88:DksVfpOyNZM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=jAi2bEytk88:DksVfpOyNZM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=jAi2bEytk88:DksVfpOyNZM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=jAi2bEytk88:DksVfpOyNZM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=jAi2bEytk88:DksVfpOyNZM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=jAi2bEytk88:DksVfpOyNZM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=jAi2bEytk88:DksVfpOyNZM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/jAi2bEytk88" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb</category>
            <pubDate>Wed, 19 Nov 2008 10:39:33 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/acp</feedburner:origLink></item>
        <item>
            <title>MyWeb - PHPCow Personalized Start Page</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/mISaqoH_s2k/home</link>
            <description>&lt;h2&gt;&lt;a name="myweb-phpcow-personalized-start-page" id="myweb-phpcow-personalized-start-page"&gt;MyWeb - PHPCow Personalized Start Page&lt;/a&gt;&lt;/h2&gt;
&lt;div class="level2"&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp" class="wikilink1" title="myweb:acp"&gt;The Control Panel&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/mysql-tools" class="wikilink1" title="myweb:acp:mysql-tools"&gt;MySql Tools&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/system-logs" class="wikilink1" title="myweb:acp:system-logs"&gt;System Logs&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/feed-management" class="wikilink1" title="myweb:acp:feed-management"&gt;Feed Management&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/local-content" class="wikilink1" title="myweb:acp:local-content"&gt;Local Content&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/widget-management" class="wikilink1" title="myweb:acp:widget-management"&gt;Widget Management&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/user-management" class="wikilink1" title="myweb:acp:user-management"&gt;User Management&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/acp/language-tools" class="wikilink1" title="myweb:acp:language-tools"&gt;Language Tools&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets" class="wikilink1" title="myweb:widgets"&gt;Widget Development&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-anatomy" class="wikilink1" title="myweb:widgets:widget-anatomy"&gt;Widget Anatomy&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/developer-version" class="wikilink1" title="myweb:widgets:developer-version"&gt;Developer Version&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/hello-world-widget" class="wikilink1" title="myweb:widgets:hello-world-widget"&gt;Hello World Widget&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/javascript-api-codeq" class="wikilink1" title="myweb:widgets:javascript-api-codeq"&gt;JavaScript API - CodeQ&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-api" class="wikilink1" title="myweb:widgets:widget-api"&gt;Widget API&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-ajax-api" class="wikilink1" title="myweb:widgets:widget-ajax-api"&gt;Ajax API&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-components" class="wikilink1" title="myweb:widgets:widget-components"&gt;Widget Components&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/generic-widgets" class="wikilink1" title="myweb:widgets:generic-widgets"&gt;Generic Widgets&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/advanced-widget-example" class="wikilink1" title="myweb:widgets:advanced-widget-example"&gt;Advanced Widget Example&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/overriding-widget-styles" class="wikilink1" title="myweb:widgets:overriding-widget-styles"&gt;Overriding Widget Styles&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level2"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/creating-widget-icon" class="wikilink1" title="myweb:widgets:creating-widget-icon"&gt;Creating Widget Icon&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=mISaqoH_s2k:Z-6KbpjaedI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=mISaqoH_s2k:Z-6KbpjaedI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=mISaqoH_s2k:Z-6KbpjaedI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=mISaqoH_s2k:Z-6KbpjaedI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=mISaqoH_s2k:Z-6KbpjaedI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=mISaqoH_s2k:Z-6KbpjaedI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=mISaqoH_s2k:Z-6KbpjaedI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=mISaqoH_s2k:Z-6KbpjaedI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=mISaqoH_s2k:Z-6KbpjaedI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=mISaqoH_s2k:Z-6KbpjaedI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=mISaqoH_s2k:Z-6KbpjaedI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/mISaqoH_s2k" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb</category>
            <pubDate>Wed, 19 Nov 2008 12:01:05 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/home</feedburner:origLink></item>
        <item>
            <title>Widget Development</title>
            <link>http://feedproxy.google.com/~r/PhpcowDocumentation/~3/pIoMabjK1IU/widgets</link>
            <description>&lt;h1&gt;&lt;a name="widget-development" id="widget-development"&gt;Widget Development&lt;/a&gt;&lt;/h1&gt;
&lt;div class="level1"&gt;
&lt;ul&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-anatomy" class="wikilink1" title="myweb:widgets:widget-anatomy"&gt;Widget Anatomy&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/developer-version" class="wikilink1" title="myweb:widgets:developer-version"&gt;Developer Version&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/hello-world-widget" class="wikilink1" title="myweb:widgets:hello-world-widget"&gt;Hello World Widget&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/javascript-api-codeq" class="wikilink1" title="myweb:widgets:javascript-api-codeq"&gt;JavaScript API - CodeQ&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-api" class="wikilink1" title="myweb:widgets:widget-api"&gt;Widget API&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-ajax-api" class="wikilink1" title="myweb:widgets:widget-ajax-api"&gt;Ajax API&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/widget-components" class="wikilink1" title="myweb:widgets:widget-components"&gt;Widget Components&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/generic-widgets" class="wikilink1" title="myweb:widgets:generic-widgets"&gt;Generic Widgets&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/advanced-widget-example" class="wikilink1" title="myweb:widgets:advanced-widget-example"&gt;Advanced Widget Example&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/overriding-widget-styles" class="wikilink1" title="myweb:widgets:overriding-widget-styles"&gt;Overriding Widget Styles&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class="level1"&gt;&lt;div class="li"&gt; &lt;a href="http://www.phpcow.com/docs/myweb/widgets/creating-widget-icon" class="wikilink1" title="myweb:widgets:creating-widget-icon"&gt;Creating Widget Icon&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=pIoMabjK1IU:nkGjV0GqHm4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=pIoMabjK1IU:nkGjV0GqHm4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=pIoMabjK1IU:nkGjV0GqHm4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=pIoMabjK1IU:nkGjV0GqHm4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=pIoMabjK1IU:nkGjV0GqHm4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=pIoMabjK1IU:nkGjV0GqHm4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=pIoMabjK1IU:nkGjV0GqHm4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=pIoMabjK1IU:nkGjV0GqHm4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=pIoMabjK1IU:nkGjV0GqHm4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?i=pIoMabjK1IU:nkGjV0GqHm4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/PhpcowDocumentation?a=pIoMabjK1IU:nkGjV0GqHm4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/PhpcowDocumentation?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/PhpcowDocumentation/~4/pIoMabjK1IU" height="1" width="1"/&gt;</description>
            <author>phpcow</author>
        <category>myweb</category>
            <pubDate>Wed, 19 Nov 2008 12:01:52 -0500</pubDate>
        <feedburner:origLink>http://www.phpcow.com/docs/myweb/widgets</feedburner:origLink></item>
    </channel>
</rss>
