[#6353] allow all standard ticket fields (incl. private) to be specified in URL for new tickets

Custom fields would need extra work to get working.
diff --git a/ForgeTracker/forgetracker/templates/tracker/new_ticket.html b/ForgeTracker/forgetracker/templates/tracker/new_ticket.html
index 24141a4..e586a1c 100644
--- a/ForgeTracker/forgetracker/templates/tracker/new_ticket.html
+++ b/ForgeTracker/forgetracker/templates/tracker/new_ticket.html
@@ -25,8 +25,7 @@
 {% block edit_box %}
 <div class="editbox">
   <div class="form_holder">
-      {{c.ticket_form.display(action=action, value=dict(description=description,
-                              summary=summary, labels=labels), help_msg=help_msg)}}
+      {{c.ticket_form.display(action=action, value=url_params, help_msg=help_msg)}}
   </div>
 </div>
 {% endblock %}
diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py
index 5f0fb1c..db51573 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -364,6 +364,18 @@
         assert 'test new ticket form' in response
         assert 'test new ticket form description' in response
 
+    def test_new_ticket_prepop_from_url(self):
+        response = self.app.get('/bugs/new/?summary=very buggy&description=descr&labels=label1,label2&private=true'
+                                '&assigned_to=test-user&_milestone=2.0&status=pending')
+        form = self._find_new_ticket_form(response)
+        assert_equal(form['ticket_form.summary'].value, 'very buggy')
+        assert_equal(form['ticket_form.description'].value, 'descr')
+        assert_equal(form['ticket_form.labels'].value, 'label1,label2')
+        assert_equal(form['ticket_form.assigned_to'].value, 'test-user')
+        assert_equal(form['ticket_form._milestone'].value, '2.0')
+        assert_equal(form['ticket_form.status'].value, 'pending')
+        assert_equal(form['ticket_form.private'].checked, True)
+
     def test_mass_edit(self):
         self.new_ticket(summary='First Ticket').follow()
         self.new_ticket(summary='Second Ticket').follow()
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 869eae7..2ed6b2c 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -897,14 +897,12 @@
 
     @with_trailing_slash
     @expose('jinja:forgetracker:templates/tracker/new_ticket.html')
-    def new(self, description=None, summary=None, labels=None, **kw):
+    def new(self, **kw):
         require_access(c.app, 'create')
         self.rate_limit(TM.Ticket, 'Ticket creation', redir='..')
         c.ticket_form = W.ticket_form
         help_msg = c.app.config.options.get('TicketHelpNew', '').strip()
-        return dict(action=c.app.config.url() + 'save_ticket',
-                    help_msg=help_msg,
-                    description=description, summary=summary, labels=labels)
+        return dict(action=c.app.config.url() + 'save_ticket', help_msg=help_msg, url_params=kw)
 
     @expose('jinja:allura:templates/markdown_syntax.html')
     def markdown_syntax(self, **kw):