Index: trac/ticket/web_ui.py
===================================================================
--- trac/ticket/web_ui.py	(revision 6786)
+++ trac/ticket/web_ui.py	(working copy)
@@ -140,13 +140,6 @@
 
     def match_request(self, req):
         if re.match(r'/newticket/?$', req.path_info) is not None:
-            if req.method != 'POST':
-                for k in req.args.keys():
-                    if k.startswith('__'): # non field argument
-                        req.args[k[2:]] = req.args[k]
-                    else:
-                        req.args['field_'+k] = req.args[k]
-                    del req.args[k]
             return True
         match = re.match(r'/ticket/([0-9]+)$', req.path_info)
         if match:
@@ -342,12 +335,17 @@
         req.perm.require('TICKET_CREATE')
         ticket = Ticket(self.env)
 
-        if req.method == 'POST' and 'field_owner' in req.args and \
-               'TICKET_MODIFY' not in req.perm:
-            del req.args['field_owner']
+        plain_fields = True # support for /newticket?version=0.11 GETs
+        field_reporter = 'reporter'
 
-        self._populate(req, ticket)
-        reporter_id = req.args.get('field_reporter') or \
+        if req.method == 'POST':
+            plain_fields = False
+            field_reporter = 'field_reporter'
+            if 'field_owner' in req.args and 'TICKET_MODIFY' not in req.perm:
+                del req.args['field_owner']
+
+        self._populate(req, ticket, plain_fields)
+        reporter_id = req.args.get(field_reporter) or \
                       get_reporter_id(req, 'author')
         ticket.values['reporter'] = reporter_id
 
@@ -576,10 +574,12 @@
             action, entry = ('add', add[0])
         return (action, entry, cc_list)
         
-    def _populate(self, req, ticket):
-        ticket.populate(dict([(k[6:],v) for k,v in req.args.iteritems()
-                              if k.startswith('field_')]))
-
+    def _populate(self, req, ticket, plain_fields=False):
+        fields = req.args
+        if not plain_fields:
+            fields = dict([(k[6:],v) for k,v in fields.items()
+                           if k.startswith('field_')])
+        ticket.populate(fields)
         # special case for updating the Cc: field
         if 'cc_update' in req.args:
             cc_action, cc_entry, cc_list = self._toggle_cc(req, ticket['cc'])
@@ -835,11 +835,10 @@
                 ticket.values = ticket._old
                 valid = False
             else: # TODO: field based checking
-                if 'description' in ticket._old or \
-                       'field_reporter' in ticket._old:
+                if 'description' in ticket._old or 'reporter' in ticket._old:
                     if 'TICKET_ADMIN' not in req.perm:
                         add_warning(req, _("No permissions to change ticket "
-                                      "fields."))
+                                           "fields."))
                         ticket.values = ticket._old
                         valid = False
 
Index: trac/templates/error.html
===================================================================
--- trac/templates/error.html	(revision 6786)
+++ trac/templates/error.html	(working copy)
@@ -51,7 +51,6 @@
   </head>
 
   <py:def function="create_ticket(teo=False)">
-    <input type="hidden" name="__preview" value="1" />
     <input type="hidden" name="reporter" value="${get_reporter_id(req)}" />
     <input py:if="teo" type="hidden" name="version"
            value="${'dev' in trac.version and 'devel' or trac.version}" />

