Els mòduls de la UOC segueixen les especificacions dels ginys d'iGoogle. Es pot consultar aquesta especificació en l'URL següent: http://code.google.com/intl/es/apis/gadgets/docs/dev_guide.html.
Un mòdul és format per diversos elements. Un fitxer XML que defineix les propietats del mòdul, unes etiquetes d'idioma i un contingut web.
El fitxer que defineix un mòdul consisteix en un fitxer XML, el qual tindria unes tres seccions. A continuació explicarem unes parts que pensem que és important conèixer per tal de poder fer servir els mòduls a la UOC.
L'esquelet d'un mòdul seria el següent:
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs>
</ModulePrefs>
<Content type="url" href=""/>
</Module>
En la secció "ModulePrefs" es defineixen una sèrie de propietats del mòdul. En el cas de la UOC fem servir les següents:
A continuació hi ha una sèrie de paràmetres que indiquen al gestor de mòduls quins recursos demana la nostra aplicació:
<Require feature="setprefs"/>
Amb la línia anterior indiquem que es necessita un javascript que ens permet accedir a variables de configuració en el nostre codi HTML. Consulta la documentació d'iGoogle per a obtenir-ne més detalls (http://code.google.com/intl/es/apis/gadgets/docs/ui.html#Dyn_Height).
<Require feature="dynamic-height"/>
Si el mòdul és dinàmic, pot passar que en fer visible algun contingut apareguin barres de desplaçament. Per a evitar això, es pot fer servir el recurs anterior. Amb això, en el nostre codi HTML podrem afegir una línia de l'estil:
<body class="notes_agenda" onload="_IG_AdjustIFrameHeight()">
És a dir, es fa una crida a la funció javascript "_IG_AdjustIFrameHeight()" que canvia la mida del marc incorporat perquè no apareguin barres de desplaçament. Aquesta funció es pot utilitzar sempre que es faci una acció de mostrar o ocultar informació; així evitem barres de desplaçament.
Finalment, en aquesta secció també es pot declarar on es localitzen les etiquetes d'idioma:
<Locale messages="lang/ALL_ALL.xml"
Declara un fitxer d'etiquetes d'idioma. Vés a l'apartat següent.
Seguint l'esquema de l'XML de definició d'un mòdul, podem declarar variables d'usuari. Amb aquestes variables podem aconseguir que l'usuari modifiqui alguna propietat del mòdul. Per exemple, si vol una bústia nova, que s'obri en finestra nova, que seleccioni el nombre de missatges, etc.
<UserPref
name="title" datatype="hidden"
display_name="titol" required="false"
default_value="Aules"/>
Per exemple, amb la línea anterior declarem una variable de nom "title". Per a veure les diferents opcions, consulta la documentació d'iGoogle en l'apartat Refèrencia d'XML.
Per acabar, la definició de mòdul ens indica on es localitza el codi HTML del mòdul. Aquest pot ser de tipus HTML o URL. En la declaració següent,
<Content type="url" href=""/>
declarem un mòdul de tipus URL, on HREF hauria de tenir l'URL del mòdul, i amb l'estructura següent:
<Content type="html">
<![CDATA[
<p>Hola món!</p>
]]>
</Content>
Tindríem un mòdul autocontingut que mostraria a la pantalla "Hola món!".
En resum, l'XML podria quedar de la manera següent:
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs
title="__MSG_title_Avisos__"
directory_title="__MSG_title_Avisos__"
title_url="http://cv.uoc.edu/"
description="__MSG_description_Avisos__"
author="Universitat Oberta de Catalunya"
author_affiliation="UOC"
screenshot="img/avisos.gif"
height="100"
scrolling="true"
render_inline="optional"
category="campus"
>
<Require feature="setprefs"/>
<Require feature="dynamic-height"/>
<Locale messages="lang/ALL_ALL.xml"/>
<Locale lang="es" messages="lang/es_ALL.xml"/>
<Locale lang="ca" messages="lang/ca_ALL.xml"/>
<Locale lang="en" messages="lang/en_ALL.xml"/>
</ModulePrefs>
<UserPref
name="title" datatype="hidden"
display_name="titol" required="false"
default_value="Widget Autocontenido"/>
<Content type="html">
<![CDATA[
<p>Hola món!</p>
]]>
</Content>
</Module>
Tal com hem indicat anteriorment, es pot definir on es localitza el fitxer amb etiquetes d'idioma. En el nostre exemple a:
lang/ALL_ALL.xml
El fitxer d'etiquetes d'idioma tindrà una estructura similar a la següent:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<messagebundle>
<msg name="title_Avisos">
Alertes
</msg>
<msg name="description_Avisos">
Ens mostra alertes urgents
</msg>
</messagebundle>
Es defineixen dues etiquetes, que, si mirem el fitxer XML que hem comentat anteriorment, corresponen a les següents:
title="__MSG_title_Avisos__"
description="__MSG_description_Avisos__"l
És a dir, en el fitxer XML se substitueix la variable declarada amb el patró següent:
__MSG_variable__
pel valor que trobem en el fitxer d'etiquetes d'idioma amb name="variable".
Consulta l'apartat internacionalització del manual de ginys d'iGoogle per a més informació sobre etiquetes d'idioma.