Hey guys, I'm porting a plugin to trac 1.4 (from 1.0) but I'm having some trouble with Jinja2 sintax.
I read on docs trac 1.4 still can use genshi templates, so I solved some code problems (related to trac changes) and tried to ran, but it not worked. Then I started to replace genshi for jinja2, but I don't know how to replace some syntax details. For example:
1. I'm doing some modification on ticket.html, so I have and .html file that extends ticket.html and use parent(super()) in head and body. But I need to insert some things in the middle of parent code. I need to do it using javascript/jquery or can I do something else using jinja2? (in genshi syntax, I'm doing a lot of modifications based on py:match)
2. If I have a syntax like this:
<tr py:if="can_create_at_least_one_referenced_type">
<th class="col1">Associate New:</th>
<td class="fullrow" colspan="3">
<ul class="references" py:for="item in create_referenced"
py:with="keys = item.get_option('copy');
copied_fields = dict(zip(map(str, keys), [ticket[key] for key in keys]))">
<li><a href="${href.newticket(type=item.dest_type, src=
ticket.id, **copied_fields)}">Create a new referenced '${ticket.get_alias(item.dest_type)}'</a></li>
</ul>
</td>
</tr>
and replace with this:
<tr>
# if can_create_at_least_one_referenced_type:
<th class="col1">Associate New:</th>
<td class="fullrow" colspan="3">
<ul class="references">
# for item in create_referenced:
# with
# set keys = item.get_option('copy')
# set copied_fields = dict(zip(map(str, keys), [ticket[key] for key in keys]))
<li><a href="${href.newticket(type=item.dest_type, src=ticket.id, **copied_fields)}">Create a new referenced '${ticket.get_alias(item.dest_type)}'</a></li> # endwith
# endfor
</ul>
</td>
# endif
</tr>
Red line return a error:
# set copied_fields = dict(zip(map(str, keys), [ticket[key] for key in keys]))
TemplateSyntaxError: expected token ',', got 'for'
Seems it not recognizes full command and think for is a param. I tried some tricks, but nothing done.
3. How can I write special symbols like:
# set directions=[(ticket.get_incoming_dict(), 'Referenced by', '&larr;', True), (ticket.get_outgoing_dict(), 'References', '&rarr;', False)]
(left and right arrows)
4. How macro works? I have a file1.html extending ticket.html. The first one needs to include file2.html(macro) and call ${macro1(params...)} in file1.html, right? I already have a file3.html(macro too) and file2.html needs to include it and call ${macro2(params...)}. How can I correctly describe it in terms of code?
att,
Gabriel Alves