Ticket #2178: trac-r2353.fix-2178-and-2063-v2.diff
| File trac-r2353.fix-2178-and-2063-v2.diff, 6.7 KB (added by dserodio@…, 3 years ago) |
|---|
-
trac/ticket/api.py
64 64 65 65 # Owner field, can be text or drop-down depending on configuration 66 66 field = {'name': 'owner', 'label': 'Owner'} 67 if self.config.get('ticket', 'restrict_owner').lower() in util.TRUE: 67 restrict_owner_cfg = self.config.get('ticket', 'restrict_owner').lower() 68 if restrict_owner_cfg in util.TRUE + ['username', 'name', 'name+username']: 68 69 field['type'] = 'select' 69 70 users = [] 70 71 for username, name, email in self.env.get_known_users(db): 71 users.append(username) 72 # Show name, username or 'name (username)', depending 73 # on configuration and available data 74 if name is None or restrict_owner_cfg in util.TRUE + ['username' ]: 75 label = username 76 else: 77 if restrict_owner_cfg == 'name+username' and name is not None: 78 label = '%s (%s)' % (name, username) 79 else: 80 label = name 81 82 users.append({'value':username, 'label':label}) 72 83 field['options'] = users 73 84 field['optional'] = True 74 85 else: … … 90 101 # Fields without possible values are treated as if they didn't 91 102 # exist 92 103 continue 104 optionItems = [] 105 for option in options: 106 optionItems.append({'value':option, 'label':option}) 93 107 field = {'name': name, 'type': 'select', 'label': name.title(), 94 108 'value': self.config.get('ticket', 'default_' + name), 95 'options': option s}109 'options': optionItems} 96 110 if name in ('status', 'resolution'): 97 111 field['type'] = 'radio' 98 112 elif name in ('milestone', 'version'): … … 124 138 } 125 139 if field['type'] == 'select' or field['type'] == 'radio': 126 140 options = self.config.get('ticket-custom', name + '.options') 127 field['options'] = [value.strip() for value in options.split('|')] 141 field['options'] = {} 142 field['options']['value'] = [value.strip() for value in options.split('|')] 143 field['options']['label'] = [value.strip() for value in options.split('|')] 128 144 elif field['type'] == 'textarea': 129 145 field['width'] = self.config.get('ticket-custom', name + '.cols') 130 146 field['height'] = self.config.get('ticket-custom', name + '.rows') -
trac/ticket/web_ui.py
119 119 field['label'] = 'Assign to' 120 120 elif name == 'milestone': 121 121 # Don't make completed milestones available for selection 122 option s = field['options'][:]122 optionItems = field['options'][:] 123 123 for option in field['options']: 124 milestone = Milestone(self.env, option , db=db)125 if milestone.is_completed:126 option s.remove(option)127 field['options'] = option s124 milestone = Milestone(self.env, option['value'], db=db) 125 if not milestone.is_completed: 126 optionItems.append({'value':option, 'label':option}) 127 field['options'] = optionItems 128 128 req.hdf['newticket.fields.' + name] = field 129 129 130 130 add_stylesheet(req, 'common/css/ticket.css') … … 371 371 for field in TicketSystem(self.env).get_ticket_fields(): 372 372 if field['type'] in ('radio', 'select'): 373 373 value = ticket.values.get(field['name']) 374 if value and not value in field['options']:374 if value and not value in [item['value'] for item in field['options']]: 375 375 # Current ticket value must be visible even if its not in the 376 376 # possible values 377 field['options'].append( value)377 field['options'].append({'value':value,'label':value}) 378 378 name = field['name'] 379 379 del field['name'] 380 380 if name in ('summary', 'reporter', 'description', 'type', 'status', -
templates/ticket.cs
194 194 var:name(field) ?>" name="<?cs 195 195 var:name(field) ?>"><?cs 196 196 if:field.optional ?><option></option><?cs /if ?><?cs 197 each:option = field.options ?><option<?cs 197 each:option = field.options ?><option<?cs var option:value ?><?cs 198 198 if:option == ticket[name(field)] ?> selected="selected"<?cs /if ?>><?cs 199 var:option ?></option><?cs199 var:option.label ?></option><?cs 200 200 /each ?></select><?cs 201 201 elif:field.type == 'checkbox' ?><input type="hidden" name="checkbox_<?cs 202 202 var:name(field) ?>" /><input type="checkbox" id="<?cs -
templates/macros.cs
2 2 <select size="1" id="<?cs var:name ?>" name="<?cs var:name ?>"><?cs 3 3 if:optional ?><option></option><?cs /if ?><?cs 4 4 each:option = options ?> 5 <option <?cs if:option == selected ?> selected="selected"<?cs /if ?>><?cs6 var:option ?></option><?cs5 <option value="<?cs var:option.value?>"<?cs if:option == selected ?> selected="selected"<?cs /if ?>><?cs 6 var:option.label ?></option><?cs 7 7 /each ?> 8 8 </select><?cs 9 9 /def?><?cs -
templates/newticket.cs
64 64 elif:field.type == 'select' ?><select id="<?cs 65 65 var:name(field) ?>" name="<?cs var:name(field) ?>"><?cs 66 66 if:field.optional ?><option></option><?cs /if ?><?cs 67 each:option = field.options ?><option <?cs67 each:option = field.options ?><option value="<?cs var:option.value ?>" <?cs 68 68 if:option == newticket[name(field)] ?> selected="selected"<?cs /if ?>><?cs 69 var:option ?></option><?cs69 var:option.label ?></option><?cs 70 70 /each ?></select><?cs 71 71 elif:field.type == 'checkbox' ?><input type="hidden" name="checkbox_<?cs 72 72 var:name(field) ?>" /><input type="checkbox" id="<?cs
