Changes in / [1:3] in trac.svn


Ignore:
Location:
/trunk
Files:
30 edited

Legend:

Unmodified
Added
Removed
  • /trunk/htdocs/svntrac.css

    r1 r3  
    1 body {
    2         background-color: white;
    3 }
    4 
    5 body, table {
    6         font-family: helvetica,arial;
    7         font-size: 12pt;
    8 }
    9 
    10 pre.file-content {
    11         border: thin solid black;
    12         padding: 1em;
    13         background-color: #eeeeee;
    14         font-size: 10pt;
    15 }
    16 
    17 table.listing {
    18         width: 600px;
    19         background-color: white;
    20         border: solid black 1px;
    21         padding: 0px;
    22 }
    23 
    24 tr.listing-header {
    25         background-color: white;
    26 }
    27 
    28 th.listing {
    29         background-color: white;
    30         border-bottom: thin solid black;
    31 }
    32 
    33 td.timeline-day {
    34         padding-top: 1em;
    35         font-weight: bold;
    36 }
    37 
    38 tr.item-row-even {
    39         background-color: #ffffff;
    40 }
    41 
    42 tr.item-row-odd {
    43         background-color: #f5f5f5;
    44 }
    45 
    46 td.size-column {
    47         text-align: right;
    48         width: 20%;
    49         border-left: thin dotted #dddddd;
    50         padding-right: 0.5em;
    51 }
    52 
    53 td.rev-column {
    54         text-align: right;
    55         width: 10%;
    56         border-left: thin dotted #dddddd;
    57         padding-right: 0.5em;
    58 }
    59 
    60 td.date-column {
    61         text-align: left;
    62         width: 20%;
    63         border-left: thin dotted #dddddd;
    64         padding-left: 0.5em;
    65         padding-right: 0.5em;
    66 }
    67 
    68 table.toolbar {
    69         border: thin solid black;
    70         background-color: #dddddd;
    71         padding: 1px;
    72         width: 100%;
    73 }
    74 
    75 div.footer {
    76         border-top: thin solid black;
    77         margin-top: 3em;
    78 }
    79 
    80 td.rev-header {
    81         text-align: right;
    82 }
    83 
    84 table.rev-headers {
    85         background-color: #dddddd;
    86         border: solid black 1px;
    87         padding: 1px;
    88 }
    89 
    90 div.wikipage { }
    91 
    92 table.wiki-history th { border-bottom: thin solid black;
    93                         background-color: white;
    94                          }
    95 table.wiki-history {
    96                      float: right;
    97                      border: thin solid black;
    98                      visibility: hidden;
    99                      }
    100 
    101 table.diff-table { background-color: #eeeeee;
    102                    border: thin solid black;
    103                    width: 100% }
     1body
     2{
     3  background-color: white;
     4}
     5
     6body, table
     7{
     8  font-family: helvetica,arial;
     9  font-size: 12pt;
     10}
     11
     12pre.file-content
     13{
     14  border: thin solid black;
     15  padding: 1em;
     16  background-color: #eeeeee;
     17  font-size: 10pt;
     18}
     19
     20table.listing
     21{
     22  width: 600px;
     23  background-color: white;
     24  border: solid black 1px;
     25  padding: 0px;
     26}
     27
     28tr.listing-header
     29{
     30  background-color: white;
     31}
     32
     33th.listing
     34{
     35  background-color: white;
     36  border-bottom: thin solid black;
     37  }
     38
     39td.timeline-day
     40{
     41  padding-top: 1em;
     42  font-weight: bold;
     43}
     44
     45tr.item-row-even
     46{
     47  background-color: #ffffff;
     48}
     49
     50tr.item-row-odd
     51{
     52  background-color: #f5f5f5;
     53}
     54
     55td.size-column
     56{
     57  text-align: right;
     58  width: 20%;
     59  border-left: thin dotted #dddddd;
     60  padding-right: 0.5em;
     61}
     62
     63td.rev-column
     64{
     65  text-align: right;
     66  width: 10%;
     67  border-left: thin dotted #dddddd;
     68  padding-right: 0.5em;
     69}
     70
     71td.date-column
     72{
     73  text-align: left;
     74  width: 20%;
     75  border-left: thin dotted #dddddd;
     76  padding-left: 0.5em;
     77  padding-right: 0.5em;
     78}
     79
     80table.toolbar
     81{
     82  border: thin solid black;
     83  background-color: #dddddd;
     84  padding: 1px;
     85  width: 100%;
     86}
     87
     88div.footer
     89{
     90  border-top: thin solid black;
     91  margin-top: 3em;
     92}
     93
     94td.rev-header
     95{
     96  text-align: right;
     97}
     98
     99table.rev-headers
     100{
     101  background-color: #dddddd;
     102  border: solid black 1px;
     103  padding: 1px;
     104}
     105
     106table.wiki-history th
     107{
     108  border-bottom: thin solid black;
     109  background-color: white;
     110}
     111
     112table.wiki-history
     113{
     114  float: right;
     115  border: thin solid black;
     116  visibility: hidden;
     117}
     118
     119table.diff-table
     120{
     121  background-color: #eeeeee;
     122  border: thin solid black;
     123  width: 100%;
     124}
     125
    104126td.diff-changed { background-color: #ffcc66; }
    105127td.diff-unchanged {  }
     
    113135td.diff-changed, td.diff-unchanged,
    114136td.diff-remove-left,td.diff-remove-right,
    115 td.diff-add-left,td.diff-add-right { font-family: monospace;
    116                                      vertical-align: top; }
    117 
    118 
    119 /* xyche */
    120 body, p, td, div {
     137td.diff-add-left,td.diff-add-right
     138{
     139  font-family: monospace;
     140  vertical-align: top;
     141  }
     142
     143
     144body, p, td, div
     145{
    121146  font: normal 12px Bitstream Vera Sans, Verdana, Helvetica, sans-serif;
    122147  color: black;
    123148}
    124149
    125 img {
    126  border: none;
    127 }
     150img { border: none; }
    128151
    129152td img {display: block;}
    130153
    131 table,td,tr {
    132  margin: 0;
    133  padding: 0;
    134 }
    135 
    136 a:link, a:visited {
     154table,td,tr
     155{
     156  margin: 0;
     157  padding: 0;
     158}
     159
     160a:link, a:visited
     161{
    137162  color: #a00;
    138163  text-decoration: none;
    139 #  font-weight: bold;
    140 }
    141 
    142 a:active {
    143  background-color: pink;
    144 }
    145 
    146 
     164}
     165
     166a:active { background-color: pink; }
    147167
    148168/*
     
    150170 */
    151171
    152 #page-topbar,.topbar {
     172#page-topbar,.topbar
     173{
    153174  font: 9px Verdana, Helvetica, sans-serif;
    154175  color: #ddd;
     
    160181}
    161182
    162 a.topbar-link {
     183a.topbar-link
     184{
    163185  color: #ccc;
    164186  text-decoration: none;
     
    172194 */
    173195
    174 #page-navbar {
     196#page-navbar
     197{
    175198  background-color: black;                   
    176199  border: solid 1px #900;
    177200  border-width: 1px 0 0 0;
    178 //  white-space: nowrap;
    179201  padding: 2px 5px;
    180202  margin: 0;
    181203}
    182204
    183 .navbar {
     205.navbar
     206{
    184207  color: white;
    185208  font: 11px Verdana, Helvetica, sans-serif;
    186 }
    187 
    188 a.navbar-link,a.navbar-link-active {
     209  }
     210
     211a.navbar-link,a.navbar-link-active
     212{
    189213  color: white;
    190214  text-decoration: none;
     
    193217}
    194218
    195 a.navbar-link-active {
    196   background-color: #880000;                   
    197 }
    198 
    199 
    200 /*
    201  * Languages
    202  */
    203 .toplang, .bottomlang {
    204   color: white;
    205   font: 9px Verdana, Helvetica, sans-serif;
    206 }
    207 
    208 .bottomlang {
    209   color: black;
    210   text-align: right;
    211 }
    212 
    213 a.toplang-link {
    214   color: white;
    215   text-decoration: none;
    216   font-weight: bold;
    217                  
    218 }
    219 
    220 
    221 #page-header {
     219a.navbar-link-active { background-color: #880000; }
     220
     221
     222#page-header
     223{
    222224  background-color: #800;                   
    223225  margin: 0px;
     
    225227}
    226228
    227 
    228 #page-menu-bar {
    229   background-color: black;                   
    230 }
    231 
    232 
    233 #page-content { }
     229#page-menu-bar { background-color: black; }
     230
     231#page-content { margin: 1em; }
    234232
    235233#content-main {  margin: 0; padding: 1em; }
    236 
    237234
    238235/*
     
    282279}
    283280
    284 
    285 /* Forms */
     281/*
     282 * Forms
     283 */
    286284
    287285input, textarea, select {
     
    289287}
    290288
    291 option {
    292          border-bottom: thin solid black;
    293 }
    294 
    295 td img {display: block;}
     289input[type="submit"], input[type="reset"]
     290{
     291  background-color: lightgray;
     292}
     293
     294option
     295{
     296  border-bottom: thin solid black;
     297}
     298
  • /trunk/scripts/initdb.py

    r1 r3  
    33# svntrac
    44#
    5 # Copyright (C) 2002, 2003 Jonas Borgström <jonas@codefactory.se>
     5# Copyright (C) 2003 Xyche Software
    66#
    77# svntrac is free software; you can redistribute it and/or
     
    1919# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    2020#
    21 # Author: Jonas Borgström <jonas@codefactory.se>
     21# Author: Jonas Borgström <jonas@xyche.com>
    2222
    2323import sys
  • /trunk/svntrac.conf

    r1 r3  
    11[general]
    22# The directory where svntrac is installed
    3 svntrac_home = /home/jonas/src/svntrac/
     3svntrac_home = /home/jonas/badger/src/svntrac/
    44htdocs_location = /svntrac/
    55
    66# The directory containing a subversion repository
    7 repository_dir = /home/jonas/src/svntrac/testrep
     7repository_dir = /home/jonas/badger/src/svntrac/testrep
    88
    99# sqlite database where svntrac stores data
    10 database = /home/jonas/src/svntrac/svntrac.db
     10database = /home/jonas/badger/src/svntrac/svntrac.db
    1111
    1212[ticket]
  • /trunk/svntrac/Browser.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
  • /trunk/svntrac/Changeset.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
  • /trunk/svntrac/File.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
  • /trunk/svntrac/Log.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
  • /trunk/svntrac/Menu.py

    r1 r3  
    22#
    33# Copyright (C) 2003 Xyche Software
     4# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
    56# svntrac is free software; you can redistribute it and/or
  • /trunk/svntrac/Module.py

    r1 r3  
    22#
    33# Copyright (C) 2003 Xyche Software
     4# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
    56# svntrac is free software; you can redistribute it and/or
  • /trunk/svntrac/Report.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
  • /trunk/svntrac/Ticket.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
  • /trunk/svntrac/Timeline.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
  • /trunk/svntrac/Toolbar.py

    r1 r3  
    22#
    33# Copyright (C) 2003 Xyche Software
     4# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
    56# svntrac is free software; you can redistribute it and/or
  • /trunk/svntrac/Wiki.py

    r1 r3  
    22#
    33# Copyright (C) 2003 Xyche Software
     4# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
    56# svntrac is free software; you can redistribute it and/or
     
    3031from xml.sax.saxutils import quoteattr, escape
    3132
    32 
    33 h1_re = re.compile ('!!!(.*)!!!')
    34 h2_re = re.compile ('!!(.*)!!')
    35 h3_re = re.compile ('!(.*)!')
    36 url_re = re.compile ('((((new|(ht|f)tp)s?://))([a-z0-9_-]+:[a-z0-9_-]+\@)?([a-z0-9]+(\-*[a-z0-9]+)*\.)+[a-z]{2,7}(/~?[a-z0-9_\.%\-]+)?(/[a-z0-9_\.%\-]+)*(/?[a-z0-9_\%\-]+(\.[a-z0-9]+)?(\#[a-zA-Z0-9_\.]+)?)(\?([a-z0-9_\.\%\-]+)\=[a-z0-9_\.\%\/\-]*)?(&([a-z0-9_\.\%\-]+)\=[a-z0-9_\.\%\/\-]*)?(#[a-z0-9]+)?)')
    37 oldstylelink_re = re.compile ('([[A-Z][a-z]*(?:[A-Z][a-z]+)+)')
    38 newstylelink_re = re.compile ('\[([^]*])\]')
    39 list_re = re.compile ('^(([\*#])\\2*) (.*)$')
    40 newline_re = re.compile ('(%%%)')
    41 strong_re = re.compile ('\__([^ ]+)\__')
    42 emph_re = re.compile ("''([^ ]+)''")
    43 empty_line_re = re.compile ("^[         ]*$")
    44 indented_re = re.compile ("^[   ]")
    45 
    46 def format_wiki (text, out):
     33class Formatter:
    4734    """
    48     some basic wiki style text formatting
     35    A simple Wiki formatter
    4936    """
    50     def set_list_depth (stack, type, depth):
    51         listdepth = len(stack)
    52         diff = depth - listdepth
     37    _rules = r"""(?:(?P<bold>''')""" \
     38             r"""|(?P<italic>'')""" \
     39             r"""|(?P<heading>^\s*(?P<hdepth>=+)\s.*\s(?P=hdepth)$)""" \
     40             r"""|(?P<listitem>^(?P<ldepth>\s+)(?:\*|[0-9]+\.) .*$)""" \
     41             r"""|(?P<wikilink>[[A-Z][a-z]*(?:[A-Z][a-z]+)+)""" \
     42             r"""|(?P<underline>__))"""
     43
     44    def _bold_formatter(self, match, fullmatch):
     45        self._is_bold = not self._is_bold
     46        return ['</strong>', '<strong>'][self._is_bold]
     47
     48    def _italic_formatter(self, match, fullmatch):
     49        self._is_italic = not self._is_italic
     50        return ['</i>', '<i>'][self._is_italic]
     51
     52    def _underline_formatter(self, match, fullmatch):
     53        self._is_underline = not self._is_underline
     54        return ['</u>', '<u>'][self._is_underline]
     55
     56    def _heading_formatter(self, match, fullmatch):
     57        depth = min(len(fullmatch.group('hdepth')), 5)
     58        self.is_heading = True
     59        return '<h%d>%s</h%d>' % (depth, match[depth + 1:len(match) - depth - 1], depth)
     60
     61    def _set_list_depth(self, depth, type):
     62        current_depth = len(self._list_stack)
     63        diff = depth - current_depth
    5364        if diff > 0:
    54             for i in range (diff):
    55                 out.write ('<%s>' % type)
    56                 stack.append('</%s>' % type)
     65            for i in range(diff):
     66                self.out.write('<%s>' % type)
     67                self._list_stack.append('</%s>' % type)
    5768        elif diff < 0:
    58             for i in range (-diff):
    59                 out.write (stack.pop())
    60         if depth > 0 and stack[0][2:4] != type:
    61             out.write (stack.pop())
    62             out.write ('<%s>' % type)
    63             stack.append('</%s>' % type)
    64            
    65     def handle_links (line):
    66         line = oldstylelink_re.sub('<a href="?mode=wiki&page=\\1">\\1</a>', line)
    67         line = url_re.sub('<a href="\\1">\\1</a>', line)
    68         return line
    69            
    70     newp = 1
    71     inverb = 0
    72     liststack = []
    73 
    74     for line in text.splitlines():
    75         line = escape(line)
    76         if empty_line_re.match(line):
    77             if not newp:
    78                 newp = 1
    79                 set_list_depth (liststack, None, 0)
    80                 if inverb:
    81                     inverb = 0
    82                     out.write ('</pre>\n')
    83                 out.write ('<p>\n')
    84             continue
    85         if newp and indented_re.match(line):
    86             out.write('<pre>\n')
    87             inverb = 1
    88         newp = 0
    89        
    90         match = list_re.match(line)
    91         if match:
    92             depth = len(match.group(1))
    93             if match.group(2) == '#':
    94                 type = 'ol'
    95             else:
    96                 type = 'ul'
    97             set_list_depth(liststack, type, depth)
    98             line = list_re.sub('<li>\\3', line)
    99 
    100         line = newline_re.sub('<br>', line)
    101         line = handle_links(line)
    102         line = h1_re.sub('<h1>\\1</h1>', line)
    103         line = h2_re.sub('<h2>\\1</h2>', line)
    104         line = h3_re.sub('<h3>\\1</h3>', line)
    105         line = strong_re.sub('<strong>\\1</strong>', line)
    106         line = emph_re.sub('<em>\\1</em>', line)
    107         out.write(line + '\n')
    108     if inverb:
    109         out.write ('</pre>\n')
     69            for i in range(-diff):
     70                self.out.write(self._list_stack.pop())
     71        elif self._list_stack != [] and self._list_stack[0][2:4] != type:
     72            self.out.write(self._list_stack.pop())
     73            self.out.write('<%s>' % type)
     74            self._list_stack.append('</%s>' % type)
     75       
     76    def _listitem_formatter(self, match, fullmatch):
     77        depth = (len(fullmatch.group('ldepth')) + 1) / 2
     78        type = ['ol', 'ul'][match[depth * 2 - 1] == '*']
     79        self._set_list_depth(depth, type)
     80       
     81        return '<li>%s</li>' % match[depth * 2 + 1:]
     82
     83    def _wikilink_formatter(self, match, fullmatch):
     84        return '<a href="?mode=wiki&page=%s">%s</a>' % (match, match)
     85
     86    def replace(self, fullmatch):
     87        for type, match in fullmatch.groupdict().items():
     88            if match and not type in ('ldepth', 'hdepth'):
     89                return getattr(self, '_' + type + '_formatter')(match, fullmatch)
     90   
     91    def format(self, text, out):
     92        self.out = out
     93        rules = re.compile(Formatter._rules)
     94        p_open = False
     95        self.is_heading_p = False
     96        self._list_stack = []
     97        for line in text.splitlines():
     98            self._is_bold = False
     99            self._is_italic = False
     100            self._is_underline = False
     101            line = escape(line)
     102            result = re.sub(rules, self.replace, line)
     103            if (self.is_heading or result == '') and p_open:
     104                self._set_list_depth(0, None)
     105                out.write ('</p>')
     106                p_open = False
     107            elif not p_open and not self.is_heading:
     108                p_open = True
     109                out.write ('<p>')
     110               
     111            out.write(result)
     112            self.is_heading = False
    110113
    111114
     
    175178        perm.assert_permission (perm.WIKI_VIEW)
    176179        out.write ('<div class="wikipage">')
    177         format_wiki(self.text, out)
     180        #format_wiki(self.text, out)
     181        Formatter().format(self.text, out)
    178182        out.write ('</div>')
    179183        if edit_button and perm.has_permission (perm.WIKI_MODIFY):
     
    187191        perm.assert_permission (perm.WIKI_MODIFY)
    188192       
    189         out.write ('<h3>preview</h3>')
     193        self.render_edit (out)
     194        out.write ('<a name="preview" /><h3>preview</h3>')
    190195        self.render_view (out, edit_button=0)
    191         self.render_edit (out)
    192196       
    193197    def render_history (self, out):
     
    220224        out.write ('</table>')
    221225
    222 class Wiki (Module):
     226
     227class Wiki(Module):
    223228    template_key = 'wiki_template'
    224229
     
    258263            self.namespace['title'] = 'wiki - preview'
    259264        else:
    260             out.write ('<h2><a href="%s">%s</a></h2>' %
    261                        (wiki_href(page.name), page.name))
    262265            page.render_view (out)
    263266            self.namespace['title'] = 'wiki - view'
  • /trunk/svntrac/auth.py

    r1 r3  
    22#
    33# Copyright (C) 2003 Xyche Software
     4# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
    56# svntrac is free software; you can redistribute it and/or
  • /trunk/svntrac/db.py

    r1 r3  
    22#
    33# Copyright (C) 2003 Xyche Software
     4# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
    56# svntrac is free software; you can redistribute it and/or
  • /trunk/svntrac/perm.py

    r1 r3  
    22#
    33# Copyright (C) 2003 Xyche Software
     4# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
    56# svntrac is free software; you can redistribute it and/or
  • /trunk/svntrac/svntrac.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
     
    3435    import ConfigParser
    3536    config = ConfigParser.ConfigParser()
    36     config.read('/home/jonas/src/svntrac/svntrac.conf')
     37    config.read('/home/jonas/badger/src/svntrac/svntrac.conf')
    3738    return config
    3839
     
    5253
    5354def main():
    54     mode = 'menu' #default module
     55    mode = 'wiki' #default module
    5556    config = load_config()
    5657   
  • /trunk/svntrac/util.py

    r1 r3  
    11# svntrac
    22#
     3# Copyright (C) 2003 Xyche Software
    34# Copyright (C) 2003 Jonas Borgström <jonas@xyche.com>
    45#
  • /trunk/templates/browser.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<h3>Revision %(revision)d: %(path_links)s</h3>
  • /trunk/templates/changeset.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<h3>Change set %(revision)s</h3>
  • /trunk/templates/footer.template

    r1 r3  
    1   <br />
     1  </div>
    22  <table id="page-footer" width="100%%" bgcolor="#eeeeee">
    33    <tr>
  • /trunk/templates/header.template

    r1 r3  
    55<link rel="stylesheet" type="text/css" href="%(htdocs_location)ssvntrac.css">
    66</head>
    7 <body>
     7<body marginheight="0" marginwidth="0" rightmargin="0" leftmargin="0"
     8topmargin="0" bottommargin="0" link="#aa0000" alink="#cc0000" vlink="#880000">
    89    <div id="page-header">
    910      <table bgcolor="#990000" id="page-topbar" border="0"
     
    2930      </table>
    3031    </div>
     32%(toolbar)s
     33<div id="page-content">
  • /trunk/templates/log.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<h1>svntrac</h1>
  • /trunk/templates/menu.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<h1>svntrac</h1>
  • /trunk/templates/newticket.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<h3>New ticket:</h3>
  • /trunk/templates/report.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<h3>Reports</h3>
  • /trunk/templates/ticket.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<h1>svntrac</h1>
  • /trunk/templates/timeline.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<h3>Timeline</h3>
  • /trunk/templates/wiki.template

    r1 r3  
    11%(header)s
    2 %(toolbar)s
    32
    43<script language="JavaScript" src="%(htdocs_location)ssvntrac.js">
Note: See TracChangeset for help on using the changeset viewer.