diff --git a/public/src/admin.js b/public/src/admin.js
index fba077dced..77dbe50947 100644
--- a/public/src/admin.js
+++ b/public/src/admin.js
@@ -1,11 +1,9 @@
"use strict";
-/*global define, app, ajaxify, socket, Mousetrap, Hammer, RELATIVE_PATH*/
+/*global define, socket, app, Mousetrap, Hammer, RELATIVE_PATH*/
var admin = {};
(function() {
- admin.searchIndex = null;
-
admin.enableColorPicker = function(inputEl, callback) {
(inputEl instanceof jQuery ? inputEl : $(inputEl)).each(function() {
var $this = $(this);
@@ -30,7 +28,9 @@ var admin = {};
setupKeybindings();
if(!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
- getSearchIndex();
+ require(['admin/modules/search'], function(search) {
+ search.init();
+ });
} else {
activateMobile();
}
@@ -142,113 +142,4 @@ var admin = {};
$('#breadcrumbs').html(caret + Array.prototype.slice.call(arguments).join(caret));
}
-
- function getSearchIndex() {
- $.getJSON(RELATIVE_PATH + '/templates/indexed.json', function (data) {
- admin.searchIndex = data;
- for (var file in admin.searchIndex) {
- if (admin.searchIndex.hasOwnProperty(file)) {
- admin.searchIndex[file] = admin.searchIndex[file].replace(/' + admin.searchIndex[file] + '');
- admin.searchIndex[file].find('script').remove();
-
- admin.searchIndex[file] = admin.searchIndex[file].text().toLowerCase().replace(/[ |\r|\n]+/g, ' ');
- }
- }
-
- delete admin.searchIndex['/admin/header.tpl'];
- delete admin.searchIndex['/admin/footer.tpl'];
-
- setupACPSearch();
- });
- }
-
- function setupACPSearch() {
- var menu = $('#acp-search .dropdown-menu'),
- routes = [],
- input = $('#acp-search input'),
- firstResult = null;
-
- input.on('keyup', function() {
- $('#acp-search .dropdown').addClass('open');
- });
-
- $('#acp-search').parents('form').on('submit', function(ev) {
- var input = $(this).find('input'),
- href = firstResult ? firstResult : RELATIVE_PATH + '/search/' + input.val();
-
- ajaxify.go(href.replace(/^\//, ''));
-
- setTimeout(function() {
- $('#acp-search .dropdown').removeClass('open');
- $(input).blur();
- }, 150);
-
- ev.preventDefault();
- return false;
- });
-
- $('.sidebar-nav a').each(function(idx, link) {
- routes.push($(link).attr('href'));
- });
-
- input.on('blur', function() {
- $(this).val('').attr('placeholder', '/');
- });
-
- input.on('keyup focus', function() {
- var $input = $(this),
- value = $input.val().toLowerCase(),
- menuItems = $('#acp-search .dropdown-menu').html('');
-
- function toUpperCase(txt){
- return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
- }
-
- $input.attr('placeholder', '');
-
- firstResult = null;
-
- if (value.length >= 3) {
- for (var file in admin.searchIndex) {
- if (admin.searchIndex.hasOwnProperty(file)) {
- var position = admin.searchIndex[file].indexOf(value);
-
- if (position !== -1) {
- var href = file.replace('.tpl', ''),
- title = href.replace(/^\/admin\//, '').split('/'),
- description = admin.searchIndex[file].substring(Math.max(0, position - 25), Math.min(admin.searchIndex[file].length - 1, position + 25))
- .replace(value, '' + value + '');
-
- for (var t in title) {
- if (title.hasOwnProperty(t)) {
- title[t] = title[t]
- .replace('-', ' ')
- .replace(/\w\S*/g, toUpperCase);
- }
- }
-
- title = title.join(' > ');
- href = RELATIVE_PATH + href;
- firstResult = firstResult ? firstResult : href;
-
- if ($.inArray(href, routes) !== -1) {
- menuItems.append('
...' + description + '......' + description + '...