Skip to content

Commit 3e0f8b0

Browse files
authored
Merge pull request #1120 from Ensembl/fix/ajax_psychic
Enable Psychic without redirect
2 parents e311864 + 03add19 commit 3e0f8b0

1 file changed

Lines changed: 37 additions & 19 deletions

File tree

modules/EnsEMBL/Web/Controller/Psychic.pm

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ limitations under the License.
1919

2020
package EnsEMBL::Web::Controller::Psychic;
2121

22-
### Psychic search - tries to guess where the user wanted to go
22+
### Psychic search - tries to guess where the user wanted to go
2323
### based on analysis of the search string!
2424

2525
use strict;
@@ -39,10 +39,28 @@ sub process {
3939
}
4040
}
4141

42+
# Guess what a user is searching for and redirect
4243
sub psychic {
44+
my $self = shift;
45+
46+
my $url = $self->_psychic();
47+
return $self->redirect($url);
48+
}
49+
50+
# Guess what a user is searching for.
51+
# Returns a URL, does not redirect
52+
sub psychic_no_redir {
53+
my $self = shift;
54+
55+
my $url = $self->_psychic();
56+
return $url;
57+
}
58+
59+
sub _psychic {
4360
my $self = shift;
44-
my $hub = $self->hub;
45-
my $species_defs = $self->species_defs;
61+
62+
my $hub = $self->hub;
63+
my $species_defs = $hub->species_defs;
4664
my $site_type = lc $species_defs->ENSEMBL_SITETYPE;
4765
my $script = 'Search/Results';
4866
my %sp_hash = %{$species_defs->multi_val('ENSEMBL_SPECIES_URL_MAP')||{}};
@@ -68,9 +86,9 @@ sub psychic {
6886
push @extra,"facet_feature_type=Documentation" if $species eq 'help';
6987
$species = undef if $dest_site =~ /_all/ or $species eq 'help';
7088

71-
return $self->redirect("//www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$query") if $dest_site eq 'ebi';
72-
return $self->redirect("//www.sanger.ac.uk/search?db=allsanger&t=$query") if $dest_site eq 'sanger';
73-
return $self->redirect("//www.ensemblgenomes.org/search/eg/$query") if $dest_site eq 'ensembl_genomes';
89+
return "//www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$query" if $dest_site eq 'ebi';
90+
return "//www.sanger.ac.uk/search?db=allsanger&t=$query" if $dest_site eq 'sanger';
91+
return "//www.ensemblgenomes.org/search/eg/$query" if $dest_site eq 'ensembl_genomes';
7492

7593
my $extra = '';
7694
if(@extra) {
@@ -90,7 +108,7 @@ sub psychic {
90108
}
91109
} elsif ($site_type eq 'vega') {
92110
$url = "/Multi/Search/Results?species=all&idx=All&q=$query";
93-
$site = '//www.ensembl.org';
111+
$site = '//www.ensembl.org';
94112
}
95113

96114
my $flag = 0;
@@ -104,7 +122,7 @@ sub psychic {
104122
$query_without_species =~ s/^ //;
105123
$query_species = $sp;
106124
}
107-
}
125+
}
108126

109127
my $species_path = $species_defs->species_path($species) || "/$species";
110128

@@ -113,12 +131,12 @@ sub psychic {
113131

114132
if ($query =~ /^rs\d+$/) {
115133

116-
return $self->redirect($site.$hub->url({
134+
return $site.$hub->url({
117135
'species' => $species || $query_species,
118136
'type' => 'Variation',
119137
'action' => 'Explore',
120138
'v' => $query
121-
}));
139+
});
122140
}
123141

124142
my $real_chrs = $hub->species_defs->ENSEMBL_CHROMOSOMES;
@@ -140,7 +158,7 @@ sub psychic {
140158
$index_t = 'Sequence';
141159
$flag = $1;
142160
}
143-
161+
144162
## match any of the following:
145163
if ($jump_query =~ /^\s*([-\.\w]+)[:]/i ) {
146164
#using core api to return location value (see perl documentation for core to see the available combination)
@@ -228,12 +246,12 @@ sub psychic {
228246
if (defined $variant){
229247
my $variant_name = $variant->name();
230248
$flag = 1;
231-
return $self->redirect($site.$hub->url({
249+
return $site.$hub->url({
232250
'species' => 'human',
233251
'type' => 'Variation',
234252
'action' => 'Explore',
235253
'v' => $variant_name
236-
}));
254+
});
237255
}
238256
}
239257
}
@@ -248,12 +266,12 @@ sub psychic {
248266
if (defined $variant){
249267
my $variant_name = $variant->name();
250268
$flag = 1;
251-
return $self->redirect($site.$hub->url({
269+
return $site.$hub->url({
252270
'species' => 'human',
253271
'type' => 'Variation',
254272
'action' => 'Explore',
255273
'v' => $variant_name
256-
}));
274+
});
257275
}
258276
}
259277
}
@@ -279,7 +297,7 @@ sub psychic {
279297
$url .= join(";",map {; "$_=".$hub->param($_) } @params).$extra;
280298
}
281299

282-
$self->redirect($site . $url);
300+
return $site . $url;
283301
}
284302

285303
sub psychic_gene_location {
@@ -289,7 +307,7 @@ sub psychic_gene_location {
289307
my $adaptor = $hub->get_adaptor('get_GeneAdaptor', $hub->param('db'));
290308
my $gene = $adaptor->fetch_by_stable_id($query) || $adaptor->fetch_by_display_label($query);
291309
my $url;
292-
310+
293311
if ($gene) {
294312
$url = $hub->url({
295313
%{$hub->multi_params(0)},
@@ -299,7 +317,7 @@ sub psychic_gene_location {
299317
});
300318
} else {
301319
$url = $hub->referer->{'absolute_url'};
302-
320+
303321
$hub->session->set_record_data({
304322
type => 'message',
305323
function => '_warning',
@@ -308,7 +326,7 @@ sub psychic_gene_location {
308326
});
309327
$hub->session->store_records;
310328
}
311-
329+
312330
$self->redirect($url);
313331
}
314332

0 commit comments

Comments
 (0)