﻿ticket,summary,type,release,owner,status,created,modified,_description,_reporter
8842,Request for a button to switch between wysiwyg and textarea,enhancement,0.11,Franz,new,2011-05-28T14:56:20+02:00,2011-05-28T14:56:20+02:00,"It would be cool if user can select the existing textarea (default) or wysiwyg. This way old ticket can be viewed as usual. Thanks for the plugin.
",anonymous
10804,Expand SortMilestoneVersion to cover Custom Query milestone field,enhancement,1.2,Franz,new,2013-01-16T23:13:20+01:00,2013-01-21T20:23:53+01:00,"Expand the plugin to cover the custom query milestone field as well.  Here are the changes to the SortMilestoneVersion class I made to get this to work:
{{{
#!python
class SortMilestoneVersion(Component):
    """"""Sorts drop-down lists of version and milestone regardless of the case and
make milestone a must field, when a default milestone is set.

Default behavior of Trac for sorting milestones is:
inbox, v1, v2, Inbox, V1, V2

This plugin sorts it as following:
inbox, Inbox, v1, V1, v2, V2
""""""
    implements (ITemplateStreamFilter)

    #ITemplateStreamFilter
    def filter_stream(self, req, method, filename, stream, data):
        if filename and (filename == 'ticket.html' or filename == 'newticket' or filename == 'query.html'):
#            print ""filename '%s' matches"" % filename
            if not data:
                return stream
            try:
                fields = data['fields']
                if not fields:
                    return stream
                version = self.get_field_list(fields, 'version')
                version['options'].sort(key=unicode.lower)

                milestones = self.get_field_list(fields, 'milestone')
                if self.config.get('ticket', 'default_milestone'):
                    milestones['optional'] = False

                for opt in milestones['optgroups']:
                    opt['options'].sort(key=unicode.lower)

            except Exception, e:
                self.log.error('error has occured by sorting: %s' % e)
        return stream

    def get_field_list(self, fields, fieldname):
        if not fields or not fieldname:
            return None
        for fld in fields:
            if isinstance(fld, dict):
                if fld['name'] == fieldname:
                    return fld
            elif isinstance(fld, str):
                if fields[fld]['name'] == fieldname:
                    return fields[fld]
            else:
                pass
        return None # return None if fieldname not found
}}}",joshua@…
