Edgewall Software

Ticket #2021: 2021-fix.patch

File 2021-fix.patch, 3.4 KB (added by cboos, 7 years ago)

Adds a new default template (site_newticket_policy.cs) and refactored the code to make it easier to add new default templates in the future.

  • templates/newticket.cs

     
    66 
    77<div id="ctxtnav" class="nav"></div> 
    88 
     9<?cs include "site_newticket_policy.cs" ?> 
     10 
    911<div id="content" class="ticket"> 
    1012 
    1113<h1>Create New Ticket</h1> 
  • trac/web/chrome.py

     
    105105        """Create the templates directory and some templates for 
    106106        customization. 
    107107        """ 
    108         def _create_file(filename, data=None): 
    109             fd = open(filename, 'w') 
    110             if data: 
    111                 fd.write(data) 
    112             fd.close() 
    113  
    114108        if self.env.path: 
    115109            templates_dir = os.path.join(self.env.path, 'templates') 
    116110            os.mkdir(templates_dir) 
    117111            _create_file(os.path.join(templates_dir, 'README'), 
    118112                        'This directory contains project-specific custom ' 
    119113                        'templates and style sheet.\n') 
    120             _create_file(os.path.join(templates_dir, 'site_header.cs'), 
    121                          """<?cs 
     114            check_site_files(True) 
     115 
     116    def environment_needs_upgrade(self, db): 
     117        return self.check_site_files() 
     118 
     119    def upgrade_environment(self, db): 
     120        self.check_site_files(True) 
     121 
     122    _default_site_files = { 
     123        'site_header.cs': """<?cs 
    122124#################################################################### 
    123125# Site header - Contents are automatically inserted above Trac HTML 
    124126?> 
    125 """) 
    126             _create_file(os.path.join(templates_dir, 'site_footer.cs'), 
    127                          """<?cs 
     127""", 
     128        'site_footer.cs': """<?cs 
    128129######################################################################### 
    129130# Site footer - Contents are automatically inserted after main Trac HTML 
    130131?> 
    131 """) 
    132             _create_file(os.path.join(templates_dir, 'site_css.cs'), 
    133                          """<?cs 
     132""", 
     133        'site_css.cs': """<?cs 
    134134################################################################## 
    135135# Site CSS - Place custom CSS, including overriding styles here. 
    136136?> 
    137 """) 
     137""", 
     138        'site_newticket_policy.cs': """<?cs 
     139################################################################## 
     140# Site new ticket policy - Content inserted above the Create New Ticket title 
     141?> 
     142<p> 
     143 <em>Be sure you've searched for similar tickets before creating a new one.</em> 
     144</p> 
     145""" 
     146        } 
    138147 
    139     def environment_needs_upgrade(self, db): 
    140         return False 
     148    def check_site_files(self, also_create=False): 
     149        def _create_file(filename, data=None): 
     150            fd = open(filename, 'w') 
     151            if data: 
     152                fd.write(data) 
     153            fd.close() 
    141154 
    142     def upgrade_environment(self, db): 
    143         pass 
     155        needs_update = False 
     156        templates_dir = os.path.join(self.env.path, 'templates') 
    144157 
     158        for filename, content in self._default_site_files.items(): 
     159            path = os.path.join(templates_dir, filename) 
     160            if not os.path.isfile(path): 
     161                needs_update = True 
     162                if also_create: 
     163                    _create_file(path, content) 
     164                    self.log.debug('Default template %s added', filename) 
     165        return needs_update 
     166                 
     167 
    145168    # IRequestHandler methods 
    146169 
    147170    def match_request(self, req):