Edgewall Software

Ticket #7562: autoquery_patch_linked_fields_r7508.diff

File autoquery_patch_linked_fields_r7508.diff, 4.3 KB (added by Jeff Hammel <jhammel@…>, 4 months ago)

use linked_fields instead of unlinked_fields

  • trac/ticket/web_ui.py

     
    125125        but keeps the old behavior for upgraded environments (i.e. 'no'). 
    126126        (''since 0.11'').""") 
    127127     
    128     unlinked_fields = ListOption('ticket', 'unlinked_fields',  
    129                                  default=['estimatedhours', 'hours', 'totalhours'], 
    130                                  doc="fields to exclude from AutoQuery markup") 
     128    linked_fields = ListOption('ticket', 'linked_fields',  
     129                               default=['reporter', 'owner', 'priority', 'type', 'status', 'component', 'version'], 
     130                               doc="fields to link to queries") 
    131131 
    132132    # IContentConverter methods 
    133133 
     
    10641064        for key in field_changes: 
    10651065            ticket[key] = field_changes[key]['new'] 
    10661066 
    1067     def _query_link(self, req, name, value): 
     1067    def _query_link(self, req, name, value, text=None): 
    10681068        """return a link to /query with the appropriate name and value""" 
    10691069        query = req.href('query', **{name:value}) 
    10701070        args = self.env.config.get('query', 'default_anonymous_query') 
    10711071        if args: 
    10721072            query = '%s&%s' % (query, args) 
    1073         return tag.a(value, href=query) 
     1073        return tag.a(text or value, href=query) 
    10741074 
    10751075    def _prepare_fields(self, req, ticket): 
    10761076        context = Context.from_request(req, ticket.resource) 
     
    10801080            type_ = field['type'] 
    10811081  
    10821082            # enable a link to custom query for the field 
    1083             if name not in self.unlinked_fields: 
     1083            if name in self.linked_fields and type != 'textarea': 
    10841084                field['rendered'] = self._query_link(req, name, ticket[name]) 
    10851085 
    10861086            # per field settings 
     
    11491149                value = ticket.values.get(name) 
    11501150                if value in ('1', '0'): 
    11511151                    field['rendered'] = value == '1' and _('yes') or _('no') 
     1152                    if name in self.linked_fields: 
     1153                        field['rendered'] = self._query_link(req, name, value, field['rendered']) 
    11521154                   
    11531155            # ensure sane defaults 
    11541156            field.setdefault('optional', False) 
     
    12701272            ticket.values.update(values) 
    12711273 
    12721274        context = Context.from_request(req, ticket.resource) 
     1275 
     1276        # Display the owner and reporter links when not obfuscated 
     1277        chrome = Chrome(self.env) 
     1278        for user in 'reporter', 'owner': 
     1279            if chrome.format_author(req, ticket[user]) == ticket[user]: 
     1280                data['%s_link' % user] = self._query_link(req, user, 
     1281                                                            ticket[user]) 
     1282 
    12731283        data.update({ 
    12741284            'context': context, 
    12751285            'fields': fields, 'changes': changes, 
     
    12781288            'action_controls': action_controls, 
    12791289            'action': selected_action, 
    12801290            'change_preview': change_preview, 
    1281             'reporter_link': self._query_link(req, 'reporter', ticket['reporter']), 
    1282             'owner_link': self._query_link(req, 'owner', ticket['owner']) 
    12831291        }) 
    12841292 
    12851293    def rendered_changelog_entries(self, req, ticket, when=None): 
  • trac/ticket/templates/ticket.html

     
    136136                 py:with="fields = [f for f in fields if not f.skip and f.name 
    137137                                    not in ('type', 'owner')]"> 
    138138            <tr> 
    139               <th id="h_reporter">Reported by:</th> 
    140               <td headers="h_reporter" class="searchable">${reporter_link}</td> 
     139              <th id="h_reporter">Reported by:</th> 
     140              <td headers="h_reporter" class="searchable"> 
     141                ${defined('reporter_link') and reporter_link or authorinfo(ticket.reporter)} 
     142              </td> 
    141143              <th id="h_owner">Owned by:</th> 
    142               <td headers="h_owner">${owner_link} 
     144              <td headers="h_owner"> 
     145                ${defined('owner_link') and owner_link or authorinfo(ticket.owner)} 
    143146              </td> 
    144147            </tr> 
    145148            <tr py:for="row in group(fields, 2, lambda f: f.type != 'textarea')"