Ticket #1791: trac.format.custom.fields.0.10.patch
| File trac.format.custom.fields.0.10.patch, 5.9 KB (added by nathan(dot)wells at dtn.com, 5 years ago) |
|---|
-
templates/ticket.cs
65 65 if:fullrow && idx % 2 ?><th></th><td></td></tr><tr><?cs /if ?> 66 66 <th id="h_<?cs var:name(field) ?>"><?cs var:field.label ?>:</th> 67 67 <td<?cs if:fullrow ?> colspan="3"<?cs /if ?> headers="h_<?cs 68 var:name(field) ?>"><?cs var: ticket[name(field)]?></td><?cs68 var:name(field) ?>"><?cs var:field.formatted ?></td><?cs 69 69 if:idx % 2 || fullrow ?></tr><tr><?cs 70 70 elif:idx == num_fields - 1 ?><th></th><td></td><?cs 71 71 /if ?><?cs set:idx = idx + #fullrow + 1 ?><?cs … … 135 135 each:field = change.fields ?> 136 136 <li><strong><?cs var:name(field) ?></strong> <?cs 137 137 if:name(field) == 'attachment' ?><em><?cs var:field.new ?></em> added<?cs 138 elif:field.format != 'plain' ?>changed<?cs 138 139 elif:field.old && field.new ?>changed from <em><?cs 139 140 var:field.old ?></em> to <em><?cs var:field.new ?></em><?cs 140 141 elif:!field.old && field.new ?>set to <em><?cs var:field.new ?></em><?cs 141 142 elif:field.old && !field.new ?>deleted<?cs 142 143 else ?>changed<?cs 143 /if ?>.</li> 144 /if ?>.<?cs 145 if field.format != 'plain' ?><div style="font-size:0.8em;font-weight:bold;">Detail <span style="cursor:pointer" onclick="document.getElementById('chang_detail_<?cs var:change.cnum ?>_<?cs var:name(field) ?>').style.display='block';">+</span>/<span style="cursor:pointer" onclick="document.getElementById('chang_detail_<?cs var:change.cnum ?>_<?cs var:name(field) ?>').style.display='none';">-</span></div> 146 <div id="chang_detail_<?cs var:change.cnum ?>_<?cs var:name(field) ?>" style="display:none;"> 147 <div style="border: 1px outset #996; padding: 1em;"><?cs var:field.old ?></div> 148 <div style="margin:1em;2em;">to</div> 149 <div style="border: 1px outset #996; padding: 1em;"><?cs var:field.new ?></div> 150 </div><?cs 151 /if ?></li> 144 152 <?cs 145 153 /each ?> 146 154 </ul><?cs -
ticket/api.py
164 164 'type': config.get(name), 165 165 'order': config.getint(name + '.order', 0), 166 166 'label': config.get(name + '.label') or name.capitalize(), 167 'value': config.get(name + '.value', '') 167 'value': config.get(name + '.value', ''), 168 'format': config.get(name + '.format', 'plain') 168 169 } 169 170 if field['type'] == 'select' or field['type'] == 'radio': 170 171 field['options'] = config.getlist(name + '.options', sep='|') … … 176 177 177 178 fields.sort(lambda x, y: cmp(x['order'], y['order'])) 178 179 return fields 180 181 def get_field_by_name(self, name): 182 ret = None 183 for f in self.get_ticket_fields(): 184 if f['name'] == name: 185 ret = f 186 break 187 return ret 188 179 189 180 190 # IPermissionRequestor methods 181 191 -
ticket/web_ui.py
583 583 if name in ('summary', 'reporter', 'description', 'type', 'status', 584 584 'resolution', 'owner'): 585 585 field['skip'] = True 586 else: 587 if 'format' in field: 588 if field['format'] == 'wiki': 589 field['formatted'] = wiki_to_html(ticket.values.get(name), self.env, req, db) 590 elif field['format'] == 'wiki_oneliner': 591 field['formatted'] = wiki_to_oneliner(ticket.values.get(name), self.env, db, shorten=True) 592 elif field['format'] == 'pre': 593 field['formatted'] = wiki_to_html('{{{\n' + ticket.values.get(name) + '\n}}}', self.env, req, db) 594 else: 595 field['formatted'] = ticket.values.get(name) 596 else: 597 field['formatted'] = ticket.values.get(name) 586 598 req.hdf['ticket.fields.' + name] = field 587 599 588 600 req.hdf['ticket.reporter_id'] = reporter_id … … 660 672 in a `dict` object. 661 673 """ 662 674 changelog = ticket.get_changelog(when=when, db=db) 675 custom_fields = [f['name'] for f in ticket.fields if f.get('custom')] 663 676 autonum = 0 # used for "root" numbers 664 677 last_uid = current = None 665 678 for date, author, field, old, new, permanent in changelog: … … 689 702 this_num = old 690 703 current['cnum'] = int(this_num) 691 704 else: 692 current['fields'][field] = {'old': old, 'new': new} 705 type = 'standard' 706 format = 'plain' 707 if field in custom_fields: 708 type = 'custom' 709 field_def = TicketSystem(self.env).get_field_by_name(field) 710 if field_def and 'format' in field_def: 711 format = field_def['format'] 712 if format == 'wiki': 713 old = wiki_to_html(old, self.env, None, db) 714 new = wiki_to_html(new, self.env, None, db) 715 elif format == 'wiki_oneliner': 716 old = wiki_to_oneliner(old, self.env, db, shorten=True) 717 new = wiki_to_oneliner(new, self.env, db, shorten=True) 718 elif format == 'pre': 719 old = wiki_to_html('{{{\n' + old + '\n}}}', self.env, None, db) 720 new = wiki_to_html('{{{\n' + new + '\n}}}', self.env, None, db) 721 722 current['fields'][field] = {'old': old, 'new': new, 'type': type, 'format': format} 693 723 if current: 694 724 yield current
