From a6041007c544e7b2a8ae703c8e45e635e2ace991 Mon Sep 17 00:00:00 2001 From: Christian Legnitto Date: Thu, 28 Oct 2010 15:19:51 +0200 Subject: Bug 585802: Change the cc/user autocomplete (and backend) usermatching to ignore spaces / search on space separated names r/a=mkanat --- Bugzilla/Bug.pm | 5 +++-- Bugzilla/User.pm | 9 ++++++--- js/field.js | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 026244db9..abc00c298 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -1134,7 +1134,7 @@ sub send_changes { ? $changes->{cc}->[0] : ''; my %forced = ( - cc => [split(/[\s,]+/, $old_cc)], + cc => [split(/[,;]+/, $old_cc)], owner => $old_own, qacontact => $old_qa, changer => $user, @@ -1384,10 +1384,11 @@ sub _check_cc { return [map {$_->id} @{$component->initial_cc}] unless $ccs; # Allow comma-separated input as well as arrayrefs. - $ccs = [split(/[\s,]+/, $ccs)] if !ref $ccs; + $ccs = [split(/[,;]+/, $ccs)] if !ref $ccs; my %cc_ids; foreach my $person (@$ccs) { + $person = trim($person); next unless $person; my $id = login_to_id($person, THROW_ERROR); $cc_ids{$id} = 1; diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index bf0a9e7e9..de2d0dcc7 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -1222,6 +1222,8 @@ sub match { my $user = Bugzilla->user; my $dbh = Bugzilla->dbh; + $str = trim($str); + my @users = (); return \@users if $str =~ /^\s*$/; @@ -1360,7 +1362,7 @@ sub match_field { #Concatenate login names, so that we have a common way to handle them. my $raw_field; if (ref $data->{$field}) { - $raw_field = join(" ", @{$data->{$field}}); + $raw_field = join(",", @{$data->{$field}}); } else { $raw_field = $data->{$field}; @@ -1378,7 +1380,7 @@ sub match_field { $data->{$field} = ''; } elsif ($fields->{$field}->{'type'} eq 'multi') { - @queries = split(/[\s,;]+/, $raw_field); + @queries = split(/[,;]+/, $raw_field); # We will repopulate it later if a match is found, else it must # be undefined. delete $data->{$field}; @@ -1402,6 +1404,7 @@ sub match_field { my @logins; for my $query (@queries) { + $query = trim($query); my $users = match( $query, # match string $limit, # match limit @@ -1653,7 +1656,7 @@ sub is_global_watcher { my $self = shift; if (!defined $self->{'is_global_watcher'}) { - my @watchers = split(/[,\s]+/, Bugzilla->params->{'globalwatchers'}); + my @watchers = split(/[,;]+/, Bugzilla->params->{'globalwatchers'}); $self->{'is_global_watcher'} = scalar(grep { $_ eq $self->login } @watchers) ? 1 : 0; } return $self->{'is_global_watcher'}; diff --git a/js/field.js b/js/field.js index a70e41a64..6d78a60ce 100644 --- a/js/field.js +++ b/js/field.js @@ -724,7 +724,7 @@ YAHOO.bugzilla.userAutocomplete = { userAutoComp.useIFrame = true; userAutoComp.resultTypeList = false; if( multiple == true ){ - userAutoComp.delimChar = [","," "]; + userAutoComp.delimChar = [","]; } } -- cgit v1.2.3-24-g4f1b