id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc
282,make tracnav friendly to wikinegotiator,phpxcache@…,moschny,"see http://trac-hacks.org/ticket/1756
{{{
#!diff
Index: tracnav/tracnav.py
===================================================================
--- tracnav/tracnav.py  (revision 3169)
+++ tracnav/tracnav.py  (working copy)
@@ -121,6 +121,8 @@
         #needed several times
         self.preview = req.args.get('preview', '')
         self.curpage = req.args.get('page', 'WikiStart')
+        self.curpagename = req.args.get('page_name')
+        self.curpagelang = req.args.get('page_langsuffix')
         self.modify = req.perm.has_permission('WIKI_MODIFY')

         # parse arguments
@@ -138,11 +140,14 @@
         Fetch the wiki page containing the toc, if available.
         """"""
         if self.preview and name == self.curpage:
-            return self.req.args.get('text', '')
+            return self.req.args.get('text', ''), name
+        elif self.curpagelang and WikiSystem(self.env).has_page(name + '.' + self.curpagelang):
+            name = name + '.' + self.curpagelang
+            return WikiPage(self.env, name).text, name
         elif WikiSystem(self.env).has_page(name):
-            return WikiPage(self.env, name).text
+            return WikiPage(self.env, name).text, name
         else:
-            return ''
+            return '', name

     def get_toc_entry(self, toc_text):
         """"""
@@ -223,7 +228,8 @@

         # add TOCs
         for name in (self.names or [""TOC""]):
-            toc = self.parse_toc(self.get_toc(name))
+            toc, name = self.get_toc(name)
+            toc = self.parse_toc(toc)
             if not toc:
                 toc = self.parse_toc(' * TOC ""%s"" is empty!' % name)
             found, filtered = self.filter_toc(toc)
@@ -243,7 +249,7 @@
         result = []
         for name, title, sub in toc:
             if sub == None:
-                if name == self.curpage:
+                if name == self.curpage or self.curpagename and name == self.curpagename:
                     found = True
                 result.append((name, title, None))
             else:
@@ -273,7 +279,7 @@
         for name, title, sub in toc:
             li_style = ' style=""padding-left: %dem;""' % (depth + 1)
             if sub == None:
-                if name == self.curpage:
+                if name == self.curpage or self.curpagename and name == self.curpagename:
                     cls = ' class=""active""'
                 else:
                     cls = ''
}}}

it's compatible when without wikinegotiator",enhancement,new,normal,,trac.tracnav,tracnav-3.92,normal,,,
