[Rt-commit] rt branch, 4.2/autocomplete-back-button, created. rt-4.1.8-516-ga42281d
Alex Vandiver
alexmv at bestpractical.com
Thu May 30 15:27:41 EDT 2013
The branch, 4.2/autocomplete-back-button has been created
at a42281d845670faacbea06cd0f0a1b25e032df0b (commit)
- Log -----------------------------------------------------------------
commit bc42d9674b38c92f6f43c38bc445abcfccc8df54
Author: Alex Vandiver <alexmv at bestpractical.com>
Date: Thu May 30 15:22:09 2013 -0400
Always return user/group id in related autocompleters
diff --git a/share/html/Helpers/Autocomplete/Groups b/share/html/Helpers/Autocomplete/Groups
index 0446c50..462010c 100644
--- a/share/html/Helpers/Autocomplete/Groups
+++ b/share/html/Helpers/Autocomplete/Groups
@@ -83,6 +83,8 @@ foreach (split /\s*,\s*/, $exclude) {
my @suggestions;
while ( my $group = $groups->Next ) {
- push @suggestions, $group->Name;
+ my $suggestion = { id => $group->Id, label => $group->Name, value => $group->Name };
+ $m->callback( CallbackName => "ModifySuggestion", suggestion => $suggestion, group => $group );
+ push @suggestions, $suggestion;
}
</%INIT>
diff --git a/share/html/Helpers/Autocomplete/Users b/share/html/Helpers/Autocomplete/Users
index aa97d45..8c30db9 100644
--- a/share/html/Helpers/Autocomplete/Users
+++ b/share/html/Helpers/Autocomplete/Users
@@ -101,7 +101,7 @@ $users->SimpleSearch( Privileged => $privileged,
my @suggestions;
while ( my $user = $users->Next ) {
- my $suggestion = { label => $user->Format, value => $user->$return };
+ my $suggestion = { id => $user->id, label => $user->Format, value => $user->$return };
$m->callback( CallbackName => "ModifySuggestion", suggestion => $suggestion, user => $user );
push @suggestions, $suggestion;
}
commit 8ff27549567b334e3dd3d767b49a30acb474cd81
Author: Alex Vandiver <alexmv at bestpractical.com>
Date: Wed May 29 18:02:25 2013 -0400
Don't store information in hidden elements where it can become stale
Storing the username in a hidden form element to submit, and then doing
the redirect server-side, opens the possibility that the hidden element
can become stale -- namely, when the browser's back button is involved.
If a user was selected from the autocomplete, then the browser backed up
to that page, the browser would helpfully remember the value in the
hidden form element. This would result in any search (but not
autocomplete) bringing the user to the previously autocompleted user.
Instead, perform the redirect client-side, which saves processing a
custom hidden form. The UserSearch element cannot be simply filled with
the chosen autocomplete value's username because this might result in a
search with more than one result -- leading to a list of matches, and
not the selected user. Jumping directly to the target page avoids this
problem.
diff --git a/share/html/Admin/Groups/index.html b/share/html/Admin/Groups/index.html
index 9e18bfb..bb5a23d 100644
--- a/share/html/Admin/Groups/index.html
+++ b/share/html/Admin/Groups/index.html
@@ -58,12 +58,10 @@
jQuery(function(){
jQuery("#autocomplete-GroupString").autocomplete({
source: RT.Config.WebPath + "/Helpers/Autocomplete/Groups",
- // Auto-submit once a group is chosen
+ // Jump directly to the page if a group is chosen
select: function( event, ui ) {
- jQuery(event.target).val(ui.item.value);
- var form = jQuery(event.target).closest('form');
- form.find('input[name=GroupOp]').val('=');
- form.submit();
+ document.location = RT.Config.WebPath + "/Admin/Groups/Modify.html?id="
+ + ui.item.id;
}
});
});
diff --git a/share/html/Admin/Users/index.html b/share/html/Admin/Users/index.html
index f43f7e8..3bd3758 100644
--- a/share/html/Admin/Users/index.html
+++ b/share/html/Admin/Users/index.html
@@ -63,12 +63,10 @@
jQuery(function(){
jQuery("#autocomplete-UserString").autocomplete({
source: RT.Config.WebPath + "/Helpers/Autocomplete/Users?return=Name",
- // Auto-submit once a user is chosen
+ // Jump directly to the page if a user is chosen
select: function( event, ui ) {
- jQuery(event.target).val(ui.item.value);
- var form = jQuery(event.target).closest('form');
- form.find('input[name=UserOp]').val('=');
- form.submit();
+ document.location = RT.Config.WebPath + "/Admin/Users/Modify.html?id="
+ + ui.item.id;
}
}).addClass("autocompletes-user");
});
diff --git a/share/html/Elements/GotoUser b/share/html/Elements/GotoUser
index 94cf526..ae31ad4 100644
--- a/share/html/Elements/GotoUser
+++ b/share/html/Elements/GotoUser
@@ -47,16 +47,14 @@
%# END BPS TAGGED BLOCK }}}
<form name="UserSearch" method="post" action="<% RT->Config->Get('WebPath') %>/User/Search.html">
<input type="text" name="UserString" value="<% $Default %>" id="autocomplete-UserString" />
-<input type="hidden" name="UserName" value="">
<script type="text/javascript">
jQuery(function(){
jQuery("#autocomplete-UserString").autocomplete({
source: RT.Config.WebPath + "/Helpers/Autocomplete/Users?return=Name",
- // Auto-submit once a user is chosen
+ // Jump directly to the page if a user is chosen
select: function( event, ui ) {
- var form = jQuery(event.target).closest('form');
- form.find('input[name=UserName]').val(ui.item.value);
- form.submit();
+ document.location = RT.Config.WebPath + "/User/Summary.html?id="
+ + ui.item.id;
}
});
});
diff --git a/share/html/User/Search.html b/share/html/User/Search.html
index 75b3aed..02befc5 100644
--- a/share/html/User/Search.html
+++ b/share/html/User/Search.html
@@ -75,16 +75,6 @@
<%INIT>
-if ($UserName) {
- my $user = RT::User->new( $session{'CurrentUser'} );
- my ($status, $msg) = $user->Load($UserName);
- if ($status) {
- RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."User/Summary.html?id=".$user->Id);
- } else {
- RT->Logger->error("Unable to load $UserName: $msg");
- }
-}
-
my $exclude = [RT->Nobody->Id, RT->System->Id];
my $users = RT::Users->new($session{'CurrentUser'});
$users->SimpleSearch( Return => 'Name',
@@ -105,5 +95,4 @@ my $search_fields = join ", ", map loc($_), keys %{RT->Config->Get('UserSearchFi
</%INIT>
<%ARGS>
$UserString => undef
-$UserName => undef
</%ARGS>
commit a42281d845670faacbea06cd0f0a1b25e032df0b
Author: Alex Vandiver <alexmv at bestpractical.com>
Date: Thu May 30 15:27:10 2013 -0400
Add autocompletes-user class to this element, as it didn't exist in 315f007
diff --git a/share/html/Elements/GotoUser b/share/html/Elements/GotoUser
index ae31ad4..df28120 100644
--- a/share/html/Elements/GotoUser
+++ b/share/html/Elements/GotoUser
@@ -56,7 +56,7 @@ jQuery(function(){
document.location = RT.Config.WebPath + "/User/Summary.html?id="
+ ui.item.id;
}
- });
+ }).addClass("autocompletes-user");
});
</script>
<input type="submit" name="UserSearch" value="<&|/l&>Search</&>" class="button" />
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list