<p>Webtabs are a way for servers to specify a number to web pages which can be used in clients and displayed like the web-based services in Yahoo Messenger, MSN Messenger and JIM. This enables a server administrator to easily create services for Jabber clients and also help to integrate Jabber clients with existing web-based applications.</p>
<li>To enable servers to specify a selection of web-based services for use in a client.</li>
<li>To allow easy integration with existing web-based systems.</li>
<li>To give more value to people's Jabber services over another's.</li>
<li>To allow the creation of virtually limitless web-based services for Jabber clients without clients needing to be specifically coded to support that service.</li>
<p>It is RECOMMENDED that the jabber server itself (JSM in jabberd) serves the webtab list, but if desired by the server implementor they MAY be served by a separate host/component.</p>
<examplecaption='Separate webtab host specified by server'><![CDATA[
<p>The list of available web tabs is retrieved using the following protocol:</p>
<examplecaption='Request for list of webtabs available on a server'><![CDATA[
<iq
to='domain.com'
type='get'
id='webtab1'>
<queryxmlns='http://jabber.org/protocol/webtab'/>
</iq>]]></example>
<examplecaption='Response from server listing the available webtabs'><![CDATA[
<iq
to='user@domain.com/resource'
from='domain.com'
type='result'
id='webtab1'>
<queryxmlns='http://jabber.org/protocol/webtab'>
<webtabtype='email'id='em'name='Webmail'>
http://tab.server.com/mail/
</webtab>
<webtabtype='bookmark'id='bk'name='Bookmarks'>
http://webtab.bookmarks.example.com/
</webtab>
<webtabtype='calendar'id='cal'name='Calendar'>
http://calendar.example.com/webtab/
</webtab>
<webtabtype='news'id='nws'name='BBC News'>
http://news.bbc.co.uk/webtab/
</webtab>
</query>
</iq>]]></example>
<p>The webtab contains CDATA which is the URL of the webtab, the webtab is an HTML page retrieved from an HTTP server using a standard browser which you embed into your client UI using a technique such as the IWebBrowser2 control interface on windows which allows you to embed either the IE or Gecko engines depending on what you have installed, this data is REQUIRED.</p>
<p>The "type" attribute tells the client what the service being provided is, this allows a client to display icons on the tabs to represent them, handling of the type in clients is OPTIONAL, inclusion of this attribute is REQUIRED (See "XMPP Registrar Considerations" for examples of values for this attribute).</p>
<p>The "name" attribute is the offical name of a particular service this can be displayed as the tab name, this attribute is REQUIRED.</p>
<p>The "id" attribute is a unique identifier for a service which you can use to refer to it later, used for when using private storage to store a preference to which tabs should be visible, this attribute is REQUIRED.</p>
<examplecaption='Request for current webtab preferences'><![CDATA[
<iq
to='domain.com'
type='get'
id='prefs1'>
<queryxmlns='jabber:iq:private'>
<prefsxmlns="webtab:prefs"/>
</query>
</iq>]]></example>
<examplecaption='Response with webtab preferences'><![CDATA[
<iq
to='user@domain.com/resource'
from='domain.com'
type='result'
id='prefs1'>
<queryxmlns='jabber:iq:private'>
<prefsxmlns='webtab:prefs'>
<webtabid='em'visible='true'/>
<webtabid='bk'visible='false'/>
<webtabid='cal'visible='true'/>
</prefs>
</query>
</iq>]]></example>
<p>The "id" attribute matches the "id" attribute from the list of webtabs, this attribute is used to match these preferences to the webtab in question, this attribute is REQUIRED.</p>
<p>The "visible" attribute tells the client that a tab SHOULD or SHOULD NOT be hidden, a client SHOULD provide an interface for managing the visibility of the tabs and updating the preferences appropriately, this attribute is REQUIRED.</p>
<p>The following guidelines may assist client developers.</p>
<ul>
<li>Use the "type" attribute as a way of determining what services a webtab provides, you can then use this to possibly display appropriate icons to represent the webtab in the client UI.</li>
<li>MUST use the "name" attribute when you have to refer to a webtab by name.</li>
<li>MUST use the private storage specification provided to store information about which tabs SHOULD be visible.</li>
<p>The ®ISTRAR; will need to register the new namespace of "http://jabber.org/protocol/webtab" and possibly the list of offical types will need to be managed too.</p>