root/backlinksmenumacro/0.10/BackLinksMenu.py

Revision 3168, 1.4 kB (checked in by trapanator, 1 year ago)

First version

Line 
1 #
2 # BackLinksMenu plugin for Trac 1.0
3 #
4 # Author: Trapanator trap@trapanator.com
5 # Website: http://www.trapanator.com/blog/archives/category/trac
6 #
7 #
8 from StringIO import StringIO
9 import string
10
11 def execute(hdf, args, env):
12     db = env.get_db_cnx()
13     cursor = db.cursor()
14
15     thispage = None
16
17     if args:
18         thispage = args.replace('\'', '\'\'')
19     else:
20         thispage = hdf.getValue('wiki.page_name', '')
21
22     sql = 'SELECT w1.name FROM wiki w1, ' + \
23           '(SELECT name, MAX(version) AS VERSION FROM WIKI GROUP BY NAME) w2 ' + \
24           'WHERE w1.version = w2.version AND w1.name = w2.name '
25
26     if thispage:
27             sql += 'AND (w1.text LIKE \'%%[wiki:%s %%\' ' % (unicode(thispage, "utf-8").encode ("utf-8"))
28             sql += 'OR w1.text LIKE \'%%[wiki:%s]%%\')' % (unicode (thispage, "utf-8").encode ("utf-8"))
29             #sql += 'AND w1.text LIKE \'%%[wiki:%s %%\' ' % thispage
30
31     cursor.execute(sql)
32
33     buf = StringIO()
34     buf.write('<div class="wiki-toc">')
35     buf.write('Pages linking to %s:<br />\n' % (unicode (thispage, "utf-8")))
36
37     while 1:
38         row = cursor.fetchone()
39         if row == None:
40             break
41         s2 = unicode (thispage, "utf-8")
42         if row[0] == s2:
43             pass
44         else:
45             buf.write('<a href="%s">' % env.href.wiki(row[0]))
46             buf.write(row[0])
47             buf.write('</a><br />\n')
48
49
50     buf.write('</div>')
51
52     return buf.getvalue()
Note: See TracBrowser for help on using the browser.