mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-10-03 20:20:35 +00:00
Add action on glossary term in the page
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
define([
|
||||
"jQuery",
|
||||
"lodash",
|
||||
"core/state"
|
||||
], function($, _, state) {
|
||||
var index = null;
|
||||
|
||||
// Use a specific idnex
|
||||
var useIndex = function(data) {
|
||||
index = data;
|
||||
};
|
||||
|
||||
// Load complete index
|
||||
var loadIndex = function() {
|
||||
return $.getJSON(state.basePath+"/glossary_index.json")
|
||||
.then(useIndex);
|
||||
};
|
||||
|
||||
// Get index and return a promise
|
||||
var getIndex = function() {
|
||||
var d = $.Deferred();
|
||||
|
||||
if (index) {
|
||||
d.resolve(index);
|
||||
} else {
|
||||
loadIndex().done(function(){
|
||||
d.resolve(index);
|
||||
}).fail(d.reject);
|
||||
}
|
||||
|
||||
return d.promise();
|
||||
}
|
||||
|
||||
var init = function() {
|
||||
// Bind click on glossary item
|
||||
$(document).on("click", ".book-body .page-wrapper .page-inner .glossary-term", function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
location.href = state.basePath+"/GLOSSARY.html#"+$(e.currentTarget).data("glossary-term");
|
||||
});
|
||||
};
|
||||
|
||||
var replaceTerm = function($el, term) {
|
||||
$el.find("p:contains('"+term.name+"')").each( function( i, element ) {
|
||||
element = $(element);
|
||||
|
||||
var content = $(element).html();
|
||||
content = content.replace(term.name, '<span class="glossary-term" data-glossary-term="' + term.id + '" title="' + term.description + '">' + term.name + '</span>');
|
||||
element.html(content);
|
||||
});
|
||||
};
|
||||
|
||||
var prepare = function() {
|
||||
getIndex()
|
||||
.done(function() {
|
||||
_.each(index, _.partial(replaceTerm, $(".book-body .page-wrapper .page-inner")));
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
init: init,
|
||||
prepare: prepare
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user