Ticket #1791: trac.format.custom.fields.0.11.patch
| File trac.format.custom.fields.0.11.patch, 5.4 KB (added by Joachim Hoessler <hoessler@…>, 4 years ago) |
|---|
-
trac/ticket/api.py
257 257 'type': config.get(name), 258 258 'order': config.getint(name + '.order', 0), 259 259 'label': config.get(name + '.label') or name.capitalize(), 260 'value': config.get(name + '.value', '') 260 'value': config.get(name + '.value', ''), 261 'format': config.get(name + '.format', 'plain') 261 262 } 262 263 if field['type'] == 'select' or field['type'] == 'radio': 263 264 field['options'] = config.getlist(name + '.options', sep='|') -
trac/ticket/templates/ticket.html
153 153 class="${field and field.name in ('cc', 'keywords') and 'searchable' or None}" 154 154 colspan="${fullrow and 3 or None}"> 155 155 <py:if test="field"> 156 <py:choose test=""> 157 <py:when test="'rendered' in field">${field.rendered}</py:when> 158 <py:otherwise>${ticket[field.name]}</py:otherwise> 156 <!--! wiki conversion for custom fields --> 157 <py:choose test="field.format"> 158 <py:when test="'wiki'"> 159 ${wiki_to_html(context, ticket[field.name], escape_newlines=preserve_newlines)} 160 </py:when> 161 <py:when test="'wiki_oneliner'"> 162 ${wiki_to_oneliner(context, ticket[field.name])} 163 </py:when> 164 <py:when test="'pre'"> 165 ${wiki_to_html(context, '{{{\n' + (ticket[field.name] or '') + '\n}}}', escape_newlines=preserve_newlines)} 166 </py:when> 167 <py:otherwise> 168 <py:choose test=""> 169 <py:when test="'rendered' in field">${field.rendered}</py:when> 170 <py:otherwise>${ticket[field.name]}</py:otherwise> 171 </py:choose> 172 </py:otherwise> 159 173 </py:choose> 160 174 </py:if> 161 175 </td> … … 320 334 </select> 321 335 <textarea py:when="'textarea'" id="field-${field.name}" name="field_${field.name}" 322 336 cols="${field.width}" rows="${field.height}" 337 class="${field.format == 'wiki' and 'wikitext' or None}" 323 338 py:content="ticket[field.name]"></textarea> 324 339 <span py:when="'checkbox'"> 325 340 <input type="checkbox" id="field-${field.name}" name="field_${field.name}" -
trac/ticket/tests/api.py
19 19 self.env.config.set('ticket-custom', 'test.value', 'Foo bar') 20 20 fields = TicketSystem(self.env).get_custom_fields() 21 21 self.assertEqual({'name': 'test', 'type': 'text', 'label': 'Test', 22 'value': 'Foo bar', 'order': 0 },22 'value': 'Foo bar', 'order': 0, 'format': 'plain'}, 23 23 fields[0]) 24 24 25 25 def test_custom_field_select(self): … … 30 30 fields = TicketSystem(self.env).get_custom_fields() 31 31 self.assertEqual({'name': 'test', 'type': 'select', 'label': 'Test', 32 32 'value': '1', 'options': ['option1', 'option2'], 33 'order': 0 },33 'order': 0, 'format': 'plain'}, 34 34 fields[0]) 35 35 36 36 def test_custom_field_optional_select(self): … … 41 41 fields = TicketSystem(self.env).get_custom_fields() 42 42 self.assertEqual({'name': 'test', 'type': 'select', 'label': 'Test', 43 43 'value': '1', 'options': ['option1', 'option2'], 44 'order': 0, 'optional': True },44 'order': 0, 'optional': True, 'format': 'plain'}, 45 45 fields[0]) 46 46 47 47 def test_custom_field_textarea(self): … … 50 50 self.env.config.set('ticket-custom', 'test.value', 'Foo bar') 51 51 self.env.config.set('ticket-custom', 'test.cols', '60') 52 52 self.env.config.set('ticket-custom', 'test.rows', '4') 53 self.env.config.set('ticket-custom', 'test.format', 'wiki') 53 54 fields = TicketSystem(self.env).get_custom_fields() 54 55 self.assertEqual({'name': 'test', 'type': 'textarea', 'label': 'Test', 55 56 'value': 'Foo bar', 'width': 60, 'height': 4, 56 'order': 0 },57 'order': 0, 'format': 'wiki'}, 57 58 fields[0]) 58 59 59 60 def test_custom_field_order(self): … … 64 65 fields = TicketSystem(self.env).get_custom_fields() 65 66 self.assertEqual('test2', fields[0]['name']) 66 67 self.assertEqual('test1', fields[1]['name']) 67 68 68 69 def test_available_actions_full_perms(self): 69 70 ts = TicketSystem(self.env) 70 71 self.perm.grant_permission('anonymous', 'TICKET_CREATE')
