Commit b62349c6 authored by Cédric Anne's avatar Cédric Anne Committed by Johan Cwiklinski
Browse files

Bundle libraries to reduce CSS/JS requests

parent 8db96ed2
......@@ -35,9 +35,8 @@ include ('../inc/includes.php');
header("Content-Type: text/html; charset=UTF-8");
Html::header_nocache();
echo Html::css("public/lib/prismjs/themes/prism-coy.css");
echo Html::script("public/lib/prismjs/components/prism-core.js");
echo Html::script("public/lib/prismjs/components/prism-json.js");
echo Html::css("public/lib/prism.css");
echo Html::script("public/lib/prismjs.js");
$infos = Telemetry::getTelemetryInfos();
echo "<p>" . __("We only collect the following data : plugins usage, performance and responsiveness statistics about user interface features, memory, and hardware configuration.") . "</p>";
......
......@@ -2293,13 +2293,8 @@ abstract class API extends CommonGLPI {
*/
public function inlineDocumentation($file) {
self::header(true, __("API Documentation"));
echo Html::css("public/lib/prismjs/themes/prism-coy.css");
echo Html::script("public/lib/prismjs/components/prism-core.js");
echo Html::script("public/lib/prismjs/components/prism-apacheconf.js");
echo Html::script("public/lib/prismjs/components/prism-bash.js");
echo Html::script("public/lib/prismjs/components/prism-clike.js");
echo Html::script("public/lib/prismjs/components/prism-json.js");
echo Html::script("public/lib/prismjs/components/prism-nginx.js");
echo Html::css("public/lib/prism.css");
echo Html::script("public/lib/prismjs.js");
echo "<div class='documentation'>";
$documentation = file_get_contents(GLPI_ROOT.'/'.$file);
......
......@@ -1118,7 +1118,7 @@ class Entity extends CommonTreeDropdown {
echo "<script type='text/javascript'>";
echo " $(function() {
$.getScript('{$CFG_GLPI["root_doc"]}/public/lib/jstree/jstree.js').done(function(data, textStatus, jqxhr) {
$.getScript('{$CFG_GLPI["root_doc"]}/public/lib/jstree.js').done(function(data, textStatus, jqxhr) {
$('#tree_projectcategory$rand')
// call `.jstree` with the options object
.jstree({
......
......@@ -1178,24 +1178,15 @@ class Html {
// auto desktop / mobile viewport
echo "<meta name='viewport' content='width=device-width, initial-scale=1'>";
echo Html::css('public/lib/jquery-ui/jquery-ui.css');
echo Html::css('public/lib/base.css');
//JSTree JS part is loaded on demand... But from an ajax call to display entities. Need to have CSS loaded.
echo Html::css('css/jstree-glpi.css');
echo Html::css('public/lib/select2/css/select2.css');
echo Html::css('public/lib/qtip2/jquery.qtip.css');
echo Html::css('public/lib/jquery-ui-timepicker-addon/jquery-ui-timepicker-addon.css');
echo Html::css('public/lib/fontawesome-free/css/all.css');
if (isset($CFG_GLPI['notifications_ajax']) && $CFG_GLPI['notifications_ajax']) {
Html::requireJs('notifications_ajax');
}
echo Html::css('public/lib/leaflet/leaflet.css', ['media' => '']);
echo Html::css('public/lib/leaflet.markercluster/MarkerCluster.css', ['media' => '']);
echo Html::css('public/lib/leaflet.markercluster/MarkerCluster.Default.css', ['media' => '']);
echo Html::css('public/lib/leaflet.awesome-markers/leaflet.awesome-markers.css', ['media' => '']);
echo Html::css('lib/leaflet/plugins/leaflet-control-osm-geocoder/Control.OSMGeocoder.css');
echo Html::css('public/lib/leaflet-fullscreen/leaflet.fullscreen.css');
echo Html::css('public/lib/leaflet.css');
Html::requireJs('leaflet');
//on demand JS
......@@ -1214,31 +1205,30 @@ class Html {
}
if (in_array('fullcalendar', $jslibs)) {
echo Html::css('public/lib/fullcalendar/fullcalendar.css',
echo Html::css('public/lib/fullcalendar.css',
['media' => '']);
echo Html::css('public/lib/fullcalendar/fullcalendar.print.css',
echo Html::css('public/lib/fullcalendar.print.css',
['media' => 'print']);
Html::requireJs('fullcalendar');
}
if (in_array('gantt', $jslibs)) {
echo Html::css('lib/jqueryplugins/jquery-gantt/css/style.css');
echo Html::css('public/lib/jquery-gantt.css');
Html::requireJs('gantt');
}
if (in_array('rateit', $jslibs)) {
echo Html::css('public/lib/jquery.rateit/rateit.css');
echo Html::css('public/lib/jquery.rateit.css');
Html::requireJs('rateit');
}
if (in_array('colorpicker', $jslibs)) {
echo Html::css('public/lib/spectrum-colorpicker/spectrum.css');
echo Html::css('public/lib/spectrum-colorpicker.css');
Html::requireJs('colorpicker');
}
if (in_array('gridstack', $jslibs)) {
echo Html::css('public/lib/gridstack/gridstack.css');
echo Html::css('public/lib/gridstack/gridstack-extra.css');
echo Html::css('public/lib/gridstack.css');
Html::requireJs('gridstack');
}
......@@ -1255,9 +1245,8 @@ class Html {
}
if (in_array('charts', $jslibs)) {
echo Html::css('public/lib/chartist/chartist.css');
echo Html::css('public/lib/chartist.css');
echo Html::css('css/chartists-glpi.css');
echo Html::css('public/lib/chartist-plugin-tooltips/chartist-plugin-tooltip.css');
Html::requireJs('charts');
}
......@@ -1268,7 +1257,7 @@ class Html {
}
if (Session::getCurrentInterface() == "helpdesk") {
echo Html::css('public/lib/jquery.rateit/rateit.css');
echo Html::css('public/lib/jquery.rateit.css');
Html::requireJs('rateit');
}
......@@ -1284,7 +1273,7 @@ class Html {
echo Html::css('css/jquery-glpi.css');
if (CommonGLPI::isLayoutWithMain()
&& !CommonGLPI::isLayoutExcludedPage()) {
echo Html::css('/lib/jqueryplugins/jquery-ui-scrollable-tabs/css/jquery.scrollabletab.css');
echo Html::css('public/lib/scrollable-tabs.css');
}
// CSS link
......@@ -1336,21 +1325,12 @@ class Html {
}
// AJAX library
echo Html::script('public/lib/jquery/jquery.js');
echo Html::script('public/lib/jquery-ui-dist/jquery-ui.js');
// PLugins jquery
//use full for compat; see https://select2.org/upgrading/migrating-from-35
echo Html::script('public/lib/select2/js/select2.full.js');
echo Html::script('public/lib/qtip2/jquery.qtip.js');
echo Html::script('public/lib/jquery-ui-timepicker-addon/jquery-ui-timepicker-addon.js');
echo Html::script('public/lib/jquery.autogrow-textarea/jquery.autogrow-textarea.js');
echo Html::script('public/lib/base.js');
// layout
if (CommonGLPI::isLayoutWithMain()
&& !CommonGLPI::isLayoutExcludedPage()) {
echo Html::script('public/lib/jquery-mousewheel/jquery.mousewheel.js');
echo Html::script('lib/jqueryplugins/jquery-ui-scrollable-tabs/js/jquery.scrollabletab.js');
echo Html::script('public/lib/scrollable-tabs.js');
}
// End of Head
......@@ -3580,9 +3560,6 @@ class Html {
// init tinymce
$js = "$(function() {
// additional plugins
tinymce.PluginManager.load('stickytoolbar','".$CFG_GLPI['root_doc'].
"/lib/tiny_mce/custom_plugins/stickytoolbar/plugin.js');
// init editor
tinyMCE.init({
language_url: '$language_url',
......@@ -5872,10 +5849,10 @@ class Html {
$_SESSION['glpi_js_toload'][$name][] = 'js/clipboard.js';
break;
case 'tinymce':
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/tinymce/tinymce.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/tinymce.js';
break;
case 'fullcalendar':
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/moment/moment.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/fullcalendar.js';
if (isset($_SESSION['glpilanguage'])) {
foreach ([2, 3] as $loc) {
$filename = "public/lib/moment/locale/".
......@@ -5886,7 +5863,6 @@ class Html {
}
}
}
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/fullcalendar/fullcalendar.js';
if (isset($_SESSION['glpilanguage'])) {
foreach ([2, 3] as $loc) {
$filename = "public/lib/fullcalendar/locale/".
......@@ -5899,16 +5875,16 @@ class Html {
}
break;
case 'jstree':
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/jstree/jstree.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/jstree.js';
break;
case 'gantt':
$_SESSION['glpi_js_toload'][$name][] = 'lib/jqueryplugins/jquery-gantt/js/jquery.fn.gantt.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/jquery-gantt.js';
break;
case 'rateit':
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/jquery.rateit/jquery.rateit.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/jquery.rateit.js';
break;
case 'colorpicker':
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/spectrum-colorpicker/spectrum.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/spectrum-colorpicker.js';
break;
case 'fileupload':
$_SESSION['glpi_js_toload'][$name][] = 'lib/jqueryplugins/jquery-file-upload/js/jquery.fileupload.js';
......@@ -5916,32 +5892,21 @@ class Html {
$_SESSION['glpi_js_toload'][$name][] = 'js/fileupload.js';
break;
case 'charts':
$_SESSION['glpi_js_toload']['charts'][] = 'public/lib/chartist/chartist.js';
$_SESSION['glpi_js_toload']['charts'][] = 'public/lib/chartist-plugin-legend/chartist-plugin-legend.js';
$_SESSION['glpi_js_toload']['charts'][] = 'public/lib/chartist-plugin-tooltips/chartist-plugin-tooltip.js';
$_SESSION['glpi_js_toload']['charts'][] = 'public/lib/chartist.js';
break;
case 'notifications_ajax';
$_SESSION['glpi_js_toload']['notifications_ajax'][] = 'js/notifications_ajax.js';
break;
case 'fuzzy':
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/fuzzy/fuzzy.js';
$_SESSION['glpi_js_toload'][$name][] = 'lib/jqueryplugins/jquery.hotkeys.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/fuzzy.js';
$_SESSION['glpi_js_toload'][$name][] = 'js/fuzzysearch.js';
break;
case 'gridstack':
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/lodash/lodash.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/gridstack/gridstack.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/gridstack/gridstack.jQueryUI.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/gridstack.js';
$_SESSION['glpi_js_toload'][$name][] = 'js/rack.js';
break;
case 'leaflet':
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/leaflet/leaflet.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/spin.js/spin.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/leaflet-spin/leaflet.spin.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/leaflet.markercluster/leaflet.markercluster-src.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/leaflet.awesome-markers/leaflet.awesome-markers.js';
$_SESSION['glpi_js_toload'][$name][] = 'lib/leaflet/plugins/leaflet-control-osm-geocoder/Control.OSMGeocoder.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/leaflet-fullscreen/Leaflet.fullscreen.js';
$_SESSION['glpi_js_toload'][$name][] = 'public/lib/leaflet.js';
break;
case 'log_filters':
$_SESSION['glpi_js_toload'][$name][] = 'js/log_filters.js';
......
......@@ -188,8 +188,7 @@ class KnowbaseItem_Revision extends CommonDBTM {
echo "</tr>";
}
echo Html::script("public/lib/diff-match-patch/index.js");
echo Html::script("public/lib/jquery-prettytextdiff/jquery.pretty-text-diff.js");
echo Html::script("public/lib/jquery-prettytextdiff.js");
echo "<script type='text/javascript'>
$(function() {
$('.restore').on('click', function(e) {
......
......@@ -89,8 +89,8 @@ if (!file_exists(GLPI_CONFIG_DIR . "/config_db.php")) {
}
$theme = isset($_SESSION['glpipalette']) ? $_SESSION['glpipalette'] : 'auror';
echo Html::scss('css/palettes/' . $theme);
// font awesome icons
echo Html::css('public/lib/fontawesome-free/css/all.css');
// external libs CSS
echo Html::css('public/lib/base.css');
// CFG
echo Html::scriptBlock("
......@@ -100,10 +100,8 @@ if (!file_exists(GLPI_CONFIG_DIR . "/config_db.php")) {
};
");
echo Html::script('public/lib/jquery/jquery.js');
echo Html::script('public/lib/select2/js/select2.full.js');
echo Html::script("public/lib/fuzzy/fuzzy.js");
echo Html::css('public/lib/select2/css/select2.css');
echo Html::script("public/lib/base.js");
echo Html::script("public/lib/fuzzy.js");
echo Html::script('js/common.js');
echo "</head>";
......
......@@ -64,15 +64,12 @@ function header_html($etape) {
");
// LIBS
echo Html::script("public/lib/jquery/jquery.js");
echo Html::script('public/lib/jquery-ui-dist/jquery-ui.js');
echo Html::script("public/lib/select2/js/select2.full.js");
echo Html::script("public/lib/fuzzy/fuzzy.js");
echo Html::script("public/lib/base.js");
echo Html::script("public/lib/fuzzy.js");
echo Html::script("js/common.js");
// CSS
echo Html::css('public/lib/jquery-ui/jquery-ui.css');
echo Html::css("public/lib/select2/css/select2.css");
echo Html::css('public/lib/base.css');
echo Html::css("css/style_install.css");
echo "</head>";
echo "<body>";
......
......@@ -523,11 +523,10 @@ echo "<meta http-equiv='Content-Script-Type' content='text/javascript'>";
echo "<meta http-equiv='Content-Style-Type' content='text/css'>";
echo "<title>Setup GLPI</title>";
//JS
echo Html::script("public/lib/jquery/jquery.js");
echo Html::script('public/lib/jquery-ui-dist/jquery-ui.js');
echo Html::script("public/lib/base.js");
// CSS
echo "<link rel='stylesheet' href='../css/style_install.css' type='text/css' media='screen' >";
echo Html::css('public/lib/jquery-ui/jquery-ui.css');
echo Html::css('public/lib/base.css');
echo Html::css('css/style_install.css');
echo "</head>";
echo "<body>";
echo "<div id='principal'>";
......
......@@ -33,7 +33,7 @@ var timeoutglobalvar;
if (typeof(String.prototype.normalize) !== 'function') {
$.ajax({
type: "GET",
url: CFG_GLPI.root_doc + "/public/lib/unorm/unorm.js",
url: CFG_GLPI.root_doc + "/public/lib/unorm.js",
dataType: "script",
cache: true
});
......
/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2018 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
// Font-Awesome
require('@fortawesome/fontawesome-free/css/all.css');
// jQuery
// '$' and 'jQuery' objects have to be declared in global scope
window.$ = window.jQuery = require('jquery');
// jQuery UI
// Requirement order has been inspired by jquery-ui-dist build.
require('jquery-ui/ui/version');
require('jquery-ui/ui/ie');
require('jquery-ui/ui/plugin');
require('jquery-ui/ui/safe-active-element');
require('jquery-ui/ui/safe-blur');
require('jquery-ui/ui/widget');
require('jquery-ui/ui/position');
require('jquery-ui/ui/data');
require('jquery-ui/ui/disable-selection');
require('jquery-ui/ui/effect');
require('jquery-ui/ui/effects/effect-blind');
require('jquery-ui/ui/effects/effect-bounce');
require('jquery-ui/ui/effects/effect-clip');
require('jquery-ui/ui/effects/effect-drop');
require('jquery-ui/ui/effects/effect-explode');
require('jquery-ui/ui/effects/effect-fade');
require('jquery-ui/ui/effects/effect-fold');
require('jquery-ui/ui/effects/effect-highlight');
require('jquery-ui/ui/effects/effect-puff');
require('jquery-ui/ui/effects/effect-pulsate');
require('jquery-ui/ui/effects/effect-scale');
require('jquery-ui/ui/effects/effect-shake');
require('jquery-ui/ui/effects/effect-size');
require('jquery-ui/ui/effects/effect-slide');
require('jquery-ui/ui/effects/effect-transfer');
require('jquery-ui/ui/focusable');
require('jquery-ui/ui/form');
require('jquery-ui/ui/jquery-1-7');
require('jquery-ui/ui/keycode');
require('jquery-ui/ui/labels');
require('jquery-ui/ui/scroll-parent');
require('jquery-ui/ui/tabbable');
require('jquery-ui/ui/unique-id');
require('jquery-ui/ui/widgets/accordion');
require('jquery-ui/ui/widgets/menu');
require('jquery-ui/ui/widgets/autocomplete');
require('jquery-ui/ui/widgets/controlgroup');
require('jquery-ui/ui/widgets/checkboxradio');
require('jquery-ui/ui/widgets/button');
require('jquery-ui/ui/widgets/datepicker');
require('jquery-ui/ui/widgets/mouse');
require('jquery-ui/ui/widgets/draggable');
require('jquery-ui/ui/widgets/resizable');
require('jquery-ui/ui/widgets/dialog');
require('jquery-ui/ui/widgets/droppable');
require('jquery-ui/ui/widgets/progressbar');
require('jquery-ui/ui/widgets/selectable');
require('jquery-ui/ui/widgets/selectmenu');
require('jquery-ui/ui/widgets/slider');
require('jquery-ui/ui/widgets/sortable');
require('jquery-ui/ui/widgets/spinner');
require('jquery-ui/ui/widgets/tabs');
require('jquery-ui/ui/widgets/tooltip');
require('jquery-ui/themes/base/all.css');
// jQuery(UI) plugins
require('jquery-ui-timepicker-addon');
require('jquery-ui-timepicker-addon/dist/jquery-ui-timepicker-addon.css');
require('jquery.autogrow-textarea');
// qTip2
require('qtip2');
require('qtip2/dist/jquery.qtip.css');
// Select2
// use full for compat; see https://select2.org/upgrading/migrating-from-35
require('select2/dist/js/select2.full');
require('select2/dist/css/select2.css');
/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2018 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
// Chartist base lib
// 'Chartist' object has to be declared in global scope
window.Chartist = require('chartist');
require('chartist/dist/chartist.css');
// Chartist plugins
require('chartist-plugin-legend');
require('chartist-plugin-tooltips');
require('chartist-plugin-tooltips/dist/chartist-plugin-tooltip.css');
/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2018 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
// Moment dependency
// 'moment' object has to be declared in global scope
window.moment = require('moment');
// Fullcalendar jQuery plugin
require('fullcalendar');
require('fullcalendar/dist/fullcalendar.css');
/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2018 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
// Fullcalendar print CSS
require('fullcalendar/dist/fullcalendar.print.css');
/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2018 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
// Fuzzy base lib
// 'fuzzy' object has to be declared in global scope
window.fuzzy = require('fuzzy');
// Required to open search menu with "CTRL+ALT+G"
require('../jqueryplugins/jquery.hotkeys');
/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2018 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/