Skip to content

Commit 1c5279d

Browse files
authored
Merge pull request #326 from canjs/fix-search-urls
Make search links relative
2 parents e42d39e + 37014a5 commit 1c5279d

File tree

2 files changed

+42
-31
lines changed

2 files changed

+42
-31
lines changed

static/canjs.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ function init() {
9595
window.history.pushState(null, null, href);
9696
navigate(href);
9797
},
98-
pathPrefix: '/doc',
98+
pathPrefix: window.pathPrefix,
9999
animateInOnStart: !hasShownSearch
100100
});
101101
}
@@ -237,6 +237,11 @@ function navigate(href) {
237237

238238
init();
239239
setDocTitle();
240+
241+
searchControl.options.pathPrefix = window.pathPrefix;
242+
if(searchControl.searchResultsCache){
243+
searchControl.renderSearchResults(searchControl.searchResultsCache);
244+
}
240245
},
241246
error: function() {
242247
// just reload the page if this fails

static/search.js

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ var Search = Control.extend({
5959

6060
storageFallback: {},
6161
useLocalStorage: false,
62+
searchResultsCache: null,
6263

6364
// ---- END PROPERTIES ---- //
6465

@@ -502,40 +503,45 @@ var Search = Control.extend({
502503
var self = this;
503504
this.searchDebounceHandle = setTimeout(function(){
504505
self.searchEngineSearch(value).then(function(results) {
505-
var numResults = results.length;
506-
if (numResults > 50) {
507-
numResults = '50+';
508-
results = results.slice(0, 50);
506+
self.searchResultsCache = results;
507+
self.renderSearchResults(results);
508+
});
509+
}, this.options.searchTimeout);
510+
},
511+
512+
renderSearchResults: function(results){
513+
var self = this;
514+
var numResults = results.length;
515+
if (numResults > 50) {
516+
numResults = '50+';
517+
results = results.slice(0, 50);
518+
}
519+
var resultsFrag = this.options.resultsRenderer({
520+
results: results,
521+
numResults: numResults,
522+
searchValue: this.searchTerm
523+
},{
524+
docUrl: function(){
525+
if(self.options.pathPrefix){
526+
return self.options.pathPrefix + "/" + this.url;
509527
}
510-
var resultsFrag = self.options.resultsRenderer({
511-
results: results,
512-
numResults: numResults,
513-
searchValue:value,
514-
pathPrefix: (self.options.pathPrefix === '.') ? '' : '/' + self.options.pathPrefix + '/'
515-
},{
516-
docUrl: function(){
517-
if(self.options.pathPrefix){
518-
return self.options.pathPrefix + "/" + this.url;
519-
}
520-
521-
if(this.url.substr(-1) === "/"){
522-
return this.url;
523-
}
524528

525-
return "/" + this.url;
526-
}
527-
});
529+
if(this.url.substr(-1) === "/"){
530+
return this.url;
531+
}
528532

529-
self.$resultsWrap.empty();
530-
self.$resultsWrap[0].appendChild(resultsFrag);
533+
return "/" + this.url;
534+
}
535+
});
531536

532-
//refresh necessary dom
533-
self.$resultsList = null;
534-
if(numResults){
535-
self.$resultsList = self.$resultsWrap.find(".search-results > ul");
536-
}
537-
});
538-
}, this.options.searchTimeout);
537+
this.$resultsWrap.empty();
538+
this.$resultsWrap[0].appendChild(resultsFrag);
539+
540+
//refresh necessary dom
541+
this.$resultsList = null;
542+
if(numResults){
543+
this.$resultsList = this.$resultsWrap.find(".search-results > ul");
544+
}
539545
},
540546

541547
// ---- SHOW/HIDE ---- //

0 commit comments

Comments
 (0)