As I told in my previous post [1], I've had to write a lil' bit of
code because I need to insert links (href and javascript) into the
rows of the ajaxgrid. This is the hack:
//BEGIN OF
HACK
if(/^A\({/.test(cell_value) && /\)$/.test(cell_value))
{
var expr = cell_value.split(/,/);
var a_type = expr[0].replace(/^A\s*\(\s*{\s*'(\S+)'\s*:\s*'\S
+'\s*/, "$1");
var url = expr[0].replace(/^A\s*\(\s*{\s*'\S+'\s*:\s*'(\S
+)'\s*/, "$1");
var title = expr[1].substring(expr[1].lastIndexOf('\'', expr
[1].lastIndexOf('\'') - 1) + 1, expr[1].lastIndexOf('\''));
var text = expr[2].substring(expr[2].indexOf('\'') + 1, expr
[2].lastIndexOf('\''));
if (a_type == 'javascript')
{
cell_value = A({ 'javascript' : url , 'title' : title },
text);
} else {
cell_value = A({ 'href' : url , 'title' : title },
text);
}
}
//END OF HACK
Place it between lines 156 and 157 in widget.js (in debian the file is
located in /usr/share/python-support/python-turbogears/turbogears/
static/js/widget.js). My server is currently down (damn provider :D )
but I will upload the file as soon as possible.
**use***
If you want to insert links in the rows you have to provide the link
in a mochikit-friendly format, such as
A({'href' : '/home', 'title' : 'Go back Home'}, 'Home')
or
A({'javascript' : 'myFunction()', 'title' : 'Go back Home'}, 'Home')
Where the 'title' field is the OnMouseOver text and the last element
(Home in our example) is the shown text. Please pay attention to the
symbols --> ' <-- they are necessary.
You can consider as example the following method:
@expose(format="json")
def summarize_problems(self):
rows = []
problems = identity.current.user.rosco_problems
for p in problems:
rows.append(["A({ 'href':'show_summary?problem_id=" + str
(p.id) + "'," +
"'title':'Modifica " + p.problem_name + "'},
'" +
p.problem_name + "')",
p.problem_rows,
p.problem_cols,
p.problem_notes])
return dict(
headers = ["Nome del Problema", "Giorni", "Ore", "Note"],
rows =
rows
)
You can see that we are appending lists to the rows list-of-lists in
which the first element will become a link after the rendering
process.
For the moment only text is allowed but I'm planning to allow also
images as links.
I hope that this little hack could be useful for someone.
Simone Mainardi
[1]
http://groups.google.it/group/turbogears/browse_thread/thread/665facfbb8de7044/92724a08a17e55da?hl=it&lnk=gst&q=ajaxgrid+html#92724a08a17e55da
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---