You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bloodhound.apache.org by Thimal Kempitiya <tk...@gmail.com> on 2014/07/23 19:50:40 UTC

Re: svn commit: r1612884 - in /bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme: ./ htdocs/js/

added separate javasript files to the autocomplete plugin


On Wed, Jul 23, 2014 at 11:02 PM, <th...@apache.org> wrote:

> Author: thimal
> Date: Wed Jul 23 17:32:37 2014
> New Revision: 1612884
>
> URL: http://svn.apache.org/r1612884
> Log:
> inline javascrpts are added to separate files
>
> Added:
>
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_admin_perm.js
>   (with props)
>
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket.js
>   (with props)
>
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket_owner.js
>   (with props)
>
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_query.js
>   (with props)
>
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_ticket.js
>   (with props)
> Modified:
>
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocomplete_query.js
>
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/theme.py
>
> Modified:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocomplete_query.js
> URL:
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocomplete_query.js?rev=1612884&r1=1612883&r2=1612884&view=diff
>
> ==============================================================================
> ---
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocomplete_query.js
> (original)
> +++
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocomplete_query.js
> Wed Jul 23 17:32:37 2014
> @@ -1,8 +1,7 @@
>  $(document).ready(function ($) {
>    function addAutocompleteBehavior() {
>      var filters = $('#filters');
> -    var contains = $.contains // jQuery 1.4+
> -      || function (container, contained) {
> +    var contains =  function (container, contained) {
>        while (contained !== null) {
>          if (container === contained)
>            return true;
> @@ -22,7 +21,6 @@ $(document).ready(function ($) {
>              /^(?:[0-9]+_)?(?:owner|reporter|cc)$/.test(name)) {
>              input.autocomplete( {source:"user_list",formatItem:
> formatItem,
>                multiple: /cc$/.test(name)});
> -            input.focus(); // XXX Workaround for Trac 0.12.2 and jQuery
> 1.4.2
>            }
>          }
>        });
> @@ -31,10 +29,6 @@ $(document).ready(function ($) {
>        // delegate method is available in jQuery 1.7+
>        filters.on('focusin', 'input:text', listener);
>      }
> -    else if ($.fn.delegate) {
> -      // delegate method is available in jQuery 1.4.2+
> -      filters.delegate('input:text', 'focus', listener);
> -    }
>      else if (window.addEventListener) {
>        // use capture=true cause focus event doesn't bubble in the default
>        filters.each(function () {
>
> Added:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_admin_perm.js
> URL:
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_admin_perm.js?rev=1612884&view=auto
>
> ==============================================================================
> ---
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_admin_perm.js
> (added)
> +++
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_admin_perm.js
> Wed Jul 23 17:32:37 2014
> @@ -0,0 +1,15 @@
> +jQuery(document).ready(function () {
> +
> +                      $("#gp_subject").autocomplete( {
> +                        source: subjects,
> +                        formatItem: formatItem
> +                      });
> +                      $("#sg_subject").autocomplete( {
> +                        source: subjects,
> +                        formatItem: formatItem
> +                      });
> +                      $("#sg_group").autocomplete({
> +                        source: groups,
> +                        formatItem: formatItem
> +                      });
> +                    });
>
> Propchange:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_admin_perm.js
>
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Added:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket.js
> URL:
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket.js?rev=1612884&view=auto
>
> ==============================================================================
> ---
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket.js
> (added)
> +++
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket.js
> Wed Jul 23 17:32:37 2014
> @@ -0,0 +1,8 @@
> +jQuery(document).bind('DOMSubtreeModified', function (){
> +                            $( "#field-cc" ).autocomplete({
> +                                source: "user_list",
> +                                multiple: true,
> +                                formatItem: formatItem,
> +                                delay: 100
> +                            });
> +                        });
>
> Propchange:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket.js
>
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Added:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket_owner.js
> URL:
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket_owner.js?rev=1612884&view=auto
>
> ==============================================================================
> ---
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket_owner.js
> (added)
> +++
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket_owner.js
> Wed Jul 23 17:32:37 2014
> @@ -0,0 +1,8 @@
> +jQuery(document).bind('DOMSubtreeModified', function (){
> +
> +                            $( "#field-reporter" ).autocomplete({
> +                                source: "user_list",
> +                                formatItem: formatItem
> +                            });
> +                        });
> +
>
> Propchange:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/autocompleteuser_ticket_owner.js
>
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Added:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_query.js
> URL:
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_query.js?rev=1612884&view=auto
>
> ==============================================================================
> ---
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_query.js
> (added)
> +++
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_query.js
> Wed Jul 23 17:32:37 2014
> @@ -0,0 +1,49 @@
> +jQuery(document).ready(function ($) {
> +                          function addAutocompleteBehavior() {
> +                            var filters = $('#filters');
> +                            var contains = function (container,
> contained) {
> +                              while (contained !== null) {
> +                                if (container === contained)
> +                                  return true;
> +                                contained = contained.parentNode;
> +                              }
> +                              return false;
> +                            };
> +                            var listener = function (event) {
> +                              var target = event.target ||
> event.srcElement;
> +                              filters.each(function () {
> +                                if (contains(this, target)) {
> +                                  var input =
> $(this).find('input:text').filter(function () {
> +                                    return target === this;
> +                                  });
> +                                  var name = input.attr('name');
> +                                  if (input.attr('autocomplete') !==
> 'off' &&
> +
>  /^(?:[0-9]+_)?(?:keywords)$/.test(name)) {
> +                                    input.tagsinput({
> +                                        typeahead: {
> +                                            source: keywords
> +                                            }
> +                                        });
> +                                  }
> +                                }
> +                              });
> +                            };
> +                            if ($.fn.on) {
> +                              // delegate method is available in jQuery
> 1.7+
> +                              filters.on('focusin', 'input:text',
> listener);
> +                            }
> +                            else if (window.addEventListener) {
> +                              // use capture=true cause focus event
> doesn't bubble in the default
> +                              filters.each(function () {
> +                                this.addEventListener('focus', listener,
> true);
> +                              });
> +                            }
> +                            else {
> +                              // focusin event bubbles, the event is
> avialable for IE only
> +                              filters.each(function () {
> +                                this.attachEvent('onfocusin', listener);
> +                              });
> +                            }
> +                          }
> +                          addAutocompleteBehavior();
> +                });
>
> Propchange:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_query.js
>
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Added:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_ticket.js
> URL:
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_ticket.js?rev=1612884&view=auto
>
> ==============================================================================
> ---
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_ticket.js
> (added)
> +++
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_ticket.js
> Wed Jul 23 17:32:37 2014
> @@ -0,0 +1,9 @@
> +jQuery(document).ready(function () {
> +
> +                        $('#field-keywords').tagsinput({
> +                            typeahead: {
> +                                source: keywords
> +                                }
> +                            });
> +
> +                    });
>
> Propchange:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/htdocs/js/keywordsuggest_ticket.js
>
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Modified:
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/theme.py
> URL:
> http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/theme.py?rev=1612884&r1=1612883&r2=1612884&view=diff
>
> ==============================================================================
> ---
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/theme.py
> (original)
> +++
> bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/theme.py
> Wed Jul 23 17:32:37 2014
> @@ -744,8 +744,10 @@ class AutocompleteUsers(Component):
>          """add the necessary javascript and css files to
> ticket,permission and query page
>          """
>          if template in ('ticket.html', 'admin_perms.html', 'query.html'):
> -            add_stylesheet(req,
> 'autocompleteusers/css/jquery-ui-1.8.16.custom.css')
> -            add_script(req,
> 'autocompleteusers/js/jquery-ui-1.8.16.custom.min.js')
> +            # add_stylesheet(req,
> 'autocompleteusers/css/jquery-ui-1.8.16.custom.css')
> +            # add_script(req,
> 'autocompleteusers/js/jquery-ui-1.8.16.custom.min.js')
> +            chrome = Chrome(self.env)
> +            chrome.add_jquery_ui(req)
>              add_script(req, 'autocompleteusers/js/format_item.js')
>              if template == 'query.html':
>                  add_script(req,
> 'autocompleteusers/js/autocomplete_query.js')
> @@ -762,99 +764,28 @@ class AutocompleteUsers(Component):
>              fields = set(sum([fnmatch.filter(fields, pattern)
>                                for pattern in self.select_fields], []))
>
> -        js = ""
> -
>          if filename == 'bh_ticket.html':
>
>              restrict_owner = self.env.config.getbool('ticket',
> 'restrict_owner')
> -            if req.path_info.startswith('/ticket/'):
> -                js = """jQuery(document).bind('DOMSubtreeModified',
> function (){
> -                            $( "#field-cc" ).autocomplete({
> -                                source: "user_list"
> -                                multiple: true,
> -                                formatItem: formatItem,
> -                                delay: 100
> -                            });
> -                        });"""
> -                if not restrict_owner:
> -                    js = """jQuery(document).bind('DOMSubtreeModified',
> function (){
> -
> -                            $( "#field-cc" ).autocomplete({
> -                                source: "user_list",
> -                                multiple: true,
> -                                formatItem: formatItem,
> -                                delay: 100
> -                            });
> -                            $( "#field-reporter" ).autocomplete({
> -                                source: "user_list",
> -                                formatItem: formatItem
> -                            });
> -                        });"""
> -            else:
> -
> -                js = """jQuery(document).ready(function($) {
> -
> -                            $( "#field-cc" ).autocomplete({
> -                                source: "user_list"
> -                                multiple: true,
> -                                formatItem: formatItem,
> -                                delay: 100
> -                            });
> -                        });"""
> -                if not restrict_owner:
> -                    js = """jQuery(document).ready(function($) {
> -
> -                            $( "#field-cc" ).autocomplete({
> -                                source: "user_list",
> -                                multiple: true,
> -                                formatItem: formatItem,
> -                                delay: 100
> -                            });
> -                            $( "#field-reporter" ).autocomplete({
> -                                source: "user_list",
> -                                formatItem: formatItem
> -                            });
> -                        });"""
> -            stream = stream |
> Transformer('.//head').append(tag.script(Markup(js),
> type='text/javascript'))
> +            add_script(req,
> 'autocompleteusers/js/autocompleteuser_ticket.js')
> +            if not restrict_owner:
> +                add_script(req,
> 'autocompleteusers/js/autocompleteuser_ticket_owner.js')
>
>          elif filename == 'bh_admin_perms.html':
>              users = self._get_users(req)
> -            subjects = ['{"label":"%s %s %s","value":"%s"}' % (user[USER]
> and '%s' % user[USER] or '', user[EMAIL] and
> -                                                               '<%s>' %
> user[EMAIL] or '', user[NAME] and
> -                                                               '%s' %
> user[NAME] or '', user[USER])
> -                        for value, user in users]
> +            subjects = [{"label": "%s %s %s" % (user[USER] and '%s' %
> user[USER] or '', user[EMAIL] and
> +                                                '<%s>' % user[EMAIL] or
> '', user[NAME] and '%s' % user[NAME] or
> +                                                ''), "value":"%s" %
> user[USER]} for value, user in users]
>
>              groups = self._get_groups(req)
>              if groups:
> -                subjects_groups = ['{"label":"%s||group","value":"%s"}' %
> (group, group) for group in groups]
> +                subjects_groups = [{"label": "%s||group" % group,
> "value": "%s" % group} for group in groups]
>                  subjects.extend(subjects_groups)
>
> -                respond_str_subjects = ','.join(subjects).encode('utf-8')
> -                respond_str_subjects = '[' + respond_str_subjects + ']'
> +            add_script(req,
> 'autocompleteusers/js/autocompleteuser_admin_perm.js')
> +            data = {'subjects': subjects, 'groups': subjects_groups}
> +            add_script_data(req, data)
>
> -                respond_str_groups =
> ','.join(subjects_groups).encode('utf-8')
> -                respond_str_groups = '[' + respond_str_groups + ']'
> -
> -            js = """jQuery(document).ready(function () {
> -                    var subjects =  %(subject)s
> -                    var groups =  %(group)s
> -                      $("#gp_subject").autocomplete( {
> -                        source: subjects,
> -                        formatItem: formatItem
> -                      });
> -                      $("#sg_subject").autocomplete( {
> -                        source: subjects,
> -                        formatItem: formatItem
> -                      });
> -                      $("#sg_group").autocomplete({
> -                        source: groups,
> -                        formatItem: formatItem
> -                      });
> -                    });"""
> -            js_ticket = js % {'subject': respond_str_subjects, 'group':
> respond_str_groups
> -                              }
> -
> -            stream = stream |
> Transformer('.//head').append(tag.script(Markup(js_ticket),
> type='text/javascript'))
>          return stream
>
>      # Private methods
> @@ -923,8 +854,7 @@ class KeywordSuggestModule(Component):
>      def post_process_request(self, req, template, data, content_type):
>          """add the necessary javascript and css files
>          """
> -        if req.path_info.startswith('/ticket/') or
> req.path_info.startswith('/newticket') or \
> -                (req.path_info.startswith('/query')):
> +        if req.path_info.startswith('/ticket/') or
> req.path_info.startswith('/newticket') or
> (req.path_info.startswith('/query')):
>                  add_script(req,
> 'keywordssuggest/js/bootstrap-tagsinput.js')
>                  add_stylesheet(req,
> 'keywordssuggest/css/bootstrap-tagsinput.css')
>
> @@ -1060,15 +990,18 @@ class KeywordSuggestModule(Component):
>          keywords = []
>          if self.env.product is not None:
>              product = self.env.product._data['prefix']
> -            sql = """SELECT t.keywords FROM ticket AS t WHERE t.keywords
> IS NOT null AND t.product ='%s'""" % product
> +            product_sql = " AND t.product = '%s'" % product
> +        else:
> +            product_sql = ""
> +        sql = """SELECT t.keywords FROM ticket AS t WHERE t.keywords IS
> NOT null%s""" % product_sql
>
> -            cursor.execute(sql)
> +        cursor.execute(sql)
>
> -            for row in cursor:
> -                if not row[0] == '':
> -                    row_val = str(row[0]).split(',')
> -                    for val in row_val:
> -                        keywords.append(val.strip())
> +        for row in cursor:
> +            if not row[0] == '':
> +                row_val = str(row[0]).split(',')
> +                for val in row_val:
> +                    keywords.append(val.strip())
>          # sort keywords according to frequency of occurrence
>          if keywords:
>              keyword_dic = Counter(keywords)
> @@ -1079,8 +1012,8 @@ class KeywordSuggestModule(Component):
>          return keywords
>
>  # component to find duplicate tickets
> -#DuplicateTicketSearch component basic structure is taken from trac
> DuplicateTicketSearch plugin
> -#https://trac-hacks.org/wiki/DuplicateTicketSearchPlugin
> +# DuplicateTicketSearch component basic structure is taken from trac
> DuplicateTicketSearch plugin
> +# https://trac-hacks.org/wiki/DuplicateTicketSearchPlugin
>
>
>  class DuplicateTicketSearch(Component):
>
>
>


-- 




*Thimal Kempitiya <http://www.facebook.com/thimalk> UndergraduateDepartment
of Computer Science and Engineering University of Moratuwa.*