The first line does two things: Assigns a blank Hash to
tag.locals.navigation and also assigns 'tag.locals.navigation' to the local
variable 'hash'.

Since the next line is 'tag.expand', the block you pass would be executed at
this point.  The "trick" is that if you re-assign
tag.locals.navigationinside that block, whatever you assigned it would
fall out of scope after
the block ends.

So, to get your values to pass through, you should either merge the contents
of your navigation_dynamic local in to tag.locals.navigation like so:

tag.locals.navigation.merge! tag.locals.navigation_dynamic

or set each individual key:

tag.locals.navigation[:here] # = something
tag.locals.navigation[:normal] #= something

The 'r:navigation' tag also expects that the elements in that hash will be
tag-binding Procs (for lack of a better word).

I have a plan for the <r:navigation> tag that I haven't completed yet, but
it will allow you to have both external links and dynamically generated
menus, so you could have something like:

<r:navigation>
 <r:children:each>
   <r:item>
     <r:label><r:title /></r:label>
     <r:href><r:url /></r:href>
   </r:item>
 </r:children:each>
 <r:normal>...</r:normal>
 ...
</r:navigation>

I also plan to have it support the old style for backwards compatibility's
sake, or even a combination.

Cheers,

Sean Cribbs

On 1/16/07, Michael Jones <[EMAIL PROTECTED]> wrote:
> I believe you can just set tag.locals.whatever inside the do...end
block.

I tried to set my locals to be the locals of the navigation tag like this:

 tag 'navigation_dynamic' do |tag|
   tag.render('navigation', {'urls' => 'Resources:
/resources/;Search: /resources/resources-search/;'}) do
       tag.locals.navigation = tag.locals.navigation_dynamic
   end
 end

I got the error about including a 'normal tag', I tried a few
different approaches such as:
tag.locals.navigation = {:normal=>'yo'}

The navigation tag in the standard_tags.rb is kinda trick, could you
explain the first line some?

hash = tag.locals.navigation = {}
tag.expand
   raise TagError.new("`navigation' tag must include a `normal' tag")
unless hash.has_key? :normal

Also, is there a good way to log debugging from the tags?

Thanks-
Michael
_______________________________________________
Radiant mailing list
Post:   [email protected]
Search: http://radiantcms.org/mailing-list/search/
Site:   http://lists.radiantcms.org/mailman/listinfo/radiant

_______________________________________________
Radiant mailing list
Post:   [email protected]
Search: http://radiantcms.org/mailing-list/search/
Site:   http://lists.radiantcms.org/mailman/listinfo/radiant

Reply via email to