Author: asemonella
Date: Mon Jun  2 07:01:19 2014
New Revision: 1599098

URL: http://svn.apache.org/r1599098
Log:
#618 QCT, update select field values when switching product.

Modified:
    bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/js/theme.js
    bloodhound/trunk/bloodhound_theme/bhtheme/theme.py

Modified: bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/js/theme.js
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/js/theme.js?rev=1599098&r1=1599097&r2=1599098&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/js/theme.js (original)
+++ bloodhound/trunk/bloodhound_theme/bhtheme/htdocs/js/theme.js Mon Jun  2 
07:01:19 2014
@@ -126,8 +126,27 @@ $(function() {
     }
   }
 
+  // Update QCT select fields on product change.
   $('#field-product').change(function(e) {
     set_qct_more_enabled($(this).val());
+    $qct_form = $('#qct-form');
+    var product = $qct_form.find('#field-product').val()
+    if(product) {
+      var form_token = $qct_form.find('input[name="__FORM_TOKEN"]').val();
+      var fields_to_update = ['version', 'type'];
+      $.post('update-menus', { product: product, __FORM_TOKEN: form_token,
+          fields_to_update: fields_to_update }).done(function(data) {
+        $.each(data, function(i, v) {
+          $field = $('#field-' + i);
+          $field.empty();
+          $field.append('<option value="">Choose...</option>');
+          $.each(v, function(i, v) {
+            $field.append('<option value="' + v + '">' + v + '</option>');
+          });
+
+        });
+      });
+    }
   });
 
   set_qct_more_enabled($('#field-product').val());

Modified: bloodhound/trunk/bloodhound_theme/bhtheme/theme.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_theme/bhtheme/theme.py?rev=1599098&r1=1599097&r2=1599098&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_theme/bhtheme/theme.py (original)
+++ bloodhound/trunk/bloodhound_theme/bhtheme/theme.py Mon Jun  2 07:01:19 2014
@@ -28,6 +28,7 @@ from trac.config import ListOption, Opti
 from trac.core import Component, TracError, implements
 from trac.mimeview.api import get_mimetype
 from trac.resource import get_resource_url, Neighborhood, Resource
+from trac.ticket.api import TicketSystem
 from trac.ticket.model import Ticket, Milestone
 from trac.ticket.notification import TicketNotifyEmail
 from trac.ticket.web_ui import TicketModule
@@ -518,6 +519,21 @@ class BloodhoundTheme(ThemeBase):
                        tag.a(_('Source'),
                              href=req.href.wiki('TracRepositoryAdmin')))
 
+class QCTSelectFieldUpdate(Component):
+    implements(IRequestHandler)
+
+    def match_request(self, req):
+        return req.path_info == '/update-menus'
+
+    def process_request(self, req):
+        product = req.args.get('product')
+        fields_to_update = req.args.get('fields_to_update[]');
+        env = ProductEnvironment(self.env.parent, req.args.get('product'))
+        ticket_fields = TicketSystem(env).get_ticket_fields()
+        data = dict([f['name'], f['options']]  for f in ticket_fields
+            if f['type'] == 'select' and f['name'] in fields_to_update)
+        req.send(to_json(data), 'application/json')
+
 
 class QuickCreateTicketDialog(Component):
     implements(IRequestFilter, IRequestHandler)


Reply via email to