Dans le cadre d'une extension, je voudrais générer automatiquement un menu (pour un bouton dans la barre d'outils) à partir d'un fichier RDF.
Voici le fichier RDF :
Code : Tout sélectionner
<?xml version="1.0"?>
<!DOCTYPE overlay SYSTEM "chrome://babelzillamenu/locale/babelzillamenu.dtd">
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:bzm="http://www.babelzilla.org/rdf/bzm#">
<!-- Menu structure -->
<RDF:Seq RDF:about="http://www.babelzilla.org/root">
<RDF:li RDF:resource="site_main_page"/>
<RDF:li>
<RDF:Seq RDF:about="forum_menu">
<RDF:li RDF:resource="forum_main_page"/>
<RDF:li RDF:resource="forum_general"/>
<RDF:li>
<RDF:Seq RDF:about="forum_extensions_menu">
<RDF:li RDF:resource="forum_extensions"/>
<RDF:li RDF:resource="forum_extensions_firefox"/>
<RDF:li RDF:resource="forum_extensions_thunderbird"/>
<RDF:li RDF:resource="forum_extensions_multi-application"/>
</RDF:Seq>
</RDF:li>
<RDF:li RDF:resource="forum_my_international_forum"/>
<RDF:li RDF:resource="forum_wts_development"/>
<RDF:li RDF:resource="forum_search"/>
</RDF:Seq>
</RDF:li>
<RDF:li>
<RDF:Seq RDF:about="wts_menu">
<RDF:li RDF:resource="wts_main_page"/>
<RDF:li RDF:resource="wts_submit_extension"/>
<RDF:li RDF:resource="wts_list_all_extensions"/>
<RDF:li RDF:resource="wts_manage_my_extensions"/>
<RDF:li RDF:resource="wts_manage_my_translations"/>
<RDF:li RDF:resource="wts_my_qa_page"/>
</RDF:Seq>
</RDF:li>
<RDF:li RDF:resource="forum_view_new_posts"/>
<RDF:li RDF:resource="site_my_glossary"/>
<RDF:li RDF:resource="forum_pm"/>
<RDF:li RDF:resource="forum_who_is_online"/>
<RDF:li RDF:resource="forum_login"/>
</RDF:Seq>
<!-- Menu resources -->
<RDF:Description RDF:about="site_main_page">
<bzm:link>http://www.babelzilla.org</bzm:link>
<bzm:label>&site.main.page.label;</bzm:label>
<bzm:accesskey>&site.main.page.accesskey;</bzm:accesskey>
</RDF:Description>
...
</RDF:RDF>
Code : Tout sélectionner
...
<!-- Toolbar Button -->
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton id="bzm-toolbarbutton" type="menu-button" class="toolbarbutton-1"
label="BabelZillaMenu" tooltiptext="BabelZillaMenu"
datasources="chrome://babelzillamenu/content/bzmCommonMenu.rdf"
ref="http://www.babelzilla.org/root"
oncommand="window.open('chrome://babelzillamenu/content/test.xul', 'TestRDF', 'chrome,centerscreen');"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<template>
<rule iscontainer="true">
<menupopup>
<menu uri="rdf:*" label="rdf:http://www.babelzilla.org/rdf/bzm#label"
tooltiptext="rdf:http://www.babelzilla.org/rdf/bzm#label"
accesskey="rdf:http://www.babelzilla.org/rdf/bzm#accesskey"/>
</menupopup>
</rule>
<rule>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.babelzilla.org/rdf/bzm#label"
tooltiptext="rdf:http://www.babelzilla.org/rdf/bzm#label"
accesskey="rdf:http://www.babelzilla.org/rdf/bzm#accesskey"
onclick="babel_open(event, ' rdf:http://www.babelzilla.org/rdf/bzm#link ');" oncommand="babel_open(null, ' rdf:http://www.babelzilla.org/rdf/bzm#link ');"/>
</menupopup>
</rule>
</template>
</toolbarbutton>
</toolbarpalette>
...
Voici le résultat :
1. Les sous-menus (forum_menu et wts_menu) sont ignorés. Une erreur dans le RDF et/ou le template ?
2. Lorsqu'une option est sélectionnée, la commande du bouton est aussi exécutée (la fenêtre test.xul s'affiche). Comment empêcher cela ?
Merci d'avance pour votre aide