Hi all,

I am having issues getting a couple of Google's gadgets to display
properly where there is nested substitution of "hangman" variables in
(Java) shindig.

The basic issue is using hangman substitution in an attribute to
ModulePrefs (generally the title attribute), where the default_value
of the user pref is __MSG_ substitution. There is an example of this
in action here: http://www.google.com/ig/modules/todo.xml or you can
consider the pathological case:

<Module>
  <ModulePrefs title="__UP_title__">
   <Locale>
    <msg name="title">Gadget title</msg>
   </Locale>
  </ModulePrefs>
  <UserPref name="title" default_value="__MSG_title__" />
  <Content>__MSG_title__</Content>
</Module>

My expected behaviour would be for the title to be displayed as
"Gadget title". The UserPref itself has the default value replaced, so
when it is rendered the value of the title pref is correctly
displayed. Looking through the source at
org.apache.shindig.gadgets.spec.GadgetSpec#substitute(Substitutions
substituter) and the related code in
org.apache.shindig.gadgets.variables.VariableSubstituter it would seem
that this is (at least partially) intentional to avoid infinite
recursion (for example in the case where the default_value of the
UserPref is __UP_title__ or points to some other user pref that points
back to the title one).

iGoogle handles the case correctly (as you'd expect) and we'd quite
like it to be handled as well. We use a custom GadgetSpecParser to
inject an extra UserPref at the top of all gadgets and then rewrite
the title attribute to be __UP_WARWICK_title__", which allows all our
gadgets to have custom titles, but at the moment this is breaking all
internationalised gadgets because the title is appearing as
__MSG_title__ instead of the internationalised string.

I'm not even sure this is a bug - could someone confirm? It's
relatively easy to reproduce in a unit test in VariableSubstituterTest
simply by adding something like the gadget spec I've written above and
looking for spec.getModulePrefs().getTitle() in an assertion.

Many thanks,

Mat

-- 
Mat Mannion
Web Developer
e-lab, IT Services
University of Warwick
Coventry
CV4 7AL

Tel: 024 765 74433
Email: [email protected]

Reply via email to