Skip to content

Commit

Permalink
Fixes #712: Fix BLT's ReadTheDocs search. (#713)
Browse files Browse the repository at this point in the history
  • Loading branch information
geerlingguy authored and grasmash committed Nov 29, 2016
1 parent 0193f06 commit 8aeb057
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
3 changes: 3 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ site_description: 'BLT - Acquia Build & Launch Tools'
theme: readthedocs
strict: true

extra_javascript:
- readme/js/fix_search.js

markdown_extensions:
- toc:
permalink: True
Expand Down
44 changes: 44 additions & 0 deletions readme/js/fix_search.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
(function (){
var MutationObserver = (function () {
var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']
for (var i=0; i < prefixes.length; i++) {
if (prefixes[i] + 'MutationObserver' in window) {
return window[prefixes[i] + 'MutationObserver'];
}
}
return false;
}());

/*
* RTD messes up MkDocs' search feature by tinkering with the search box defined in the theme, see
* https://github.com/rtfd/readthedocs.org/issues/1088. This function sets up a DOM4 MutationObserver
* to react to changes to the search form (triggered by RTD on doc ready). It then reverts everything
* the RTD JS code modified.
*
* @see https://github.com/rtfd/readthedocs.org/issues/1088#issuecomment-224715045
*/
$(document).ready(function () {
if (!MutationObserver) {
return;
}
var target = document.getElementById('rtd-search-form');
var config = {attributes: true, childList: true};

var observer = new MutationObserver(function(mutations) {
// if it isn't disconnected it'll loop infinitely because the observed element is modified
observer.disconnect();
var form = $('#rtd-search-form');
var path = window.location.pathname;
var branch = path.split('/')[2];
form.empty();
form.attr('action', window.location.origin + '/en/' + branch + '/search.html');
$('<input>').attr({
type: "text",
name: "q",
placeholder: "Search docs"
}).appendTo(form);
});

observer.observe(target, config);
});
}());

0 comments on commit 8aeb057

Please sign in to comment.