diff --git a/app/javascript/src/javascripts/autocomplete.js.erb b/app/javascript/src/javascripts/autocomplete.js.erb index 5d6a4e7be..11a0fcb33 100644 --- a/app/javascript/src/javascripts/autocomplete.js.erb +++ b/app/javascript/src/javascripts/autocomplete.js.erb @@ -246,6 +246,10 @@ Autocomplete.initialize_wiki_autocomplete = function($fields) { }; Autocomplete.normal_source = function(term, resp) { + if (Utility.is_global_hook_defined("Danbooru.Autocomplete.normal_source")) { + return window.Danbooru.Autocomplete.normal_source(term, resp); + } + var key = "ac-" + term.replace(/\./g,'\uFFFF'); $.ajax({ @@ -432,6 +436,10 @@ Autocomplete.static_metatag_source = function(term, resp, metatag) { } Autocomplete.user_source = function(term, resp, metatag) { + if (Utility.is_global_hook_defined("Danbooru.Autocomplete.user_source")) { + return window.Danbooru.Autocomplete.user_source(term, resp, metatag); + } + $.ajax({ url: "/users.json", data: { @@ -466,6 +474,10 @@ Autocomplete.user_source = function(term, resp, metatag) { } Autocomplete.pool_source = function(term, resp, metatag) { + if (Utility.is_global_hook_defined("Danbooru.Autocomplete.pool_source")) { + return window.Danbooru.Autocomplete.pool_source(term, resp, metatag); + } + $.ajax({ url: "/pools.json", data: { @@ -489,6 +501,10 @@ Autocomplete.pool_source = function(term, resp, metatag) { } Autocomplete.favorite_group_source = function(term, resp, metatag) { + if (Utility.is_global_hook_defined("Danbooru.Autocomplete.favorite_group_source")) { + return window.Danbooru.Autocomplete.favorite_group_source(term, resp, metatag); + } + $.ajax({ url: "/favorite_groups.json", data: { @@ -509,6 +525,10 @@ Autocomplete.favorite_group_source = function(term, resp, metatag) { } Autocomplete.saved_search_source = function(term, resp) { + if (Utility.is_global_hook_defined("Danbooru.Autocomplete.saved_search_source")) { + return window.Danbooru.Autocomplete.saved_search_source(term, resp); + } + return SavedSearch.labels(term).then(function(labels) { resp(labels.map(function(label) { return { diff --git a/app/javascript/src/javascripts/utility.js b/app/javascript/src/javascripts/utility.js index 14a9d586d..8dcd85a6e 100644 --- a/app/javascript/src/javascripts/utility.js +++ b/app/javascript/src/javascripts/utility.js @@ -138,6 +138,18 @@ Utility.sorttable = function(table) { }); }; +Utility.is_global_hook_defined = function(path) { + let objs = path.split(/\./g); + let obj = window; + objs.forEach(x => { + if (obj) { + obj = obj[x] + } + }); + + return typeof obj === 'function'; +} + String.prototype.hash = function() { var hash = 5381, i = this.length; diff --git a/app/views/layouts/default.html.erb b/app/views/layouts/default.html.erb index 721f3398d..37a37740c 100644 --- a/app/views/layouts/default.html.erb +++ b/app/views/layouts/default.html.erb @@ -72,15 +72,16 @@