$(document).ready(function(){
if($.urlParam('title')!=null){
window.parent.document.title = decodeURI($.urlParam('title'));
}
var page = $.page();
page = page == '' ? 'index' : page;
var init = 'init_'+page;
init = init.replace(/[^a-z_0-9]/g,'_');
init_components();
if($.urlParam('module')==null){
if(window[init]!=null) window[init]($.urlParam());
} else {
var mod = $.urlParam('module').replace(/[^a-z_0-9]/g,'_');
var init = 'init_plugin_'+mod;
if(window[init]!=null) window[init]($.urlParam());
}
//SHOW HTTP ERROR/NOTICE
if ($.urlParam('error') != null) {
$.message('error', decodeURIComponent($.urlParam('error')), 0);
$.urlParam('error', false);
}
if ($.urlParam('info') != null) {
$.message('info', decodeURIComponent($.urlParam('info')));
$.urlParam('info', false);
}
if ($.urlParam('success') != null) {
$.message('success', decodeURIComponent($.urlParam('success')));
$.urlParam('success', false);
}
//Icône menu mobile
$('#mainMenu > button').on('click', function(e){
$('.menu').toggleClass('open');
});
$('.navbar-toggler').on('click', function(e){
if($(e.target).closest('#mainMenu').length) return;
$('#navbarCollapse').collapse('hide');
$('.menu').removeClass('open');
});
//Positionnement nom de l'utilisateur
if($(document).width() <= 767){
var userFullname = $('#loginHeader > .user-dropdown-menu .user-fullname').detach();
$('#loginHeader > .user-dropdown-menu > button.dropdown-toggle').append(userFullname);
}
});
//Changement positionnement nom de l'utilisateur
//connecté au redimensionnement de la fenêtre
$(window).resize(function(event) {
if($(document).width() > 767){
var userFullname = $('#loginHeader > .user-dropdown-menu > button.dropdown-toggle > .user-fullname').detach();
$('#loginHeader > .user-dropdown-menu > .dropdown-menu').prepend(userFullname);
}
if($(document).width() <= 767){
var userFullname = $('#loginHeader > .user-dropdown-menu .user-fullname').detach();
$('#loginHeader > .user-dropdown-menu > button.dropdown-toggle').append(userFullname);
}
});
/* COMPOSANT */
function init_components(selector){
var selected = selector ? $('[data-type]',selector) : '[data-type]';
$(selected).each(function(i,input){
var input = $(input);
switch($(input).attr('data-type')){
case 'date':
input.date();
break;
/**
* data-step : L'intervalle entre 2 valeurs en minutes
*/
case 'hour':
input.hour();
break;
case 'image':
if(input.closest('.type-image-bloc').length!=0) break;
input.wrap( "
'+name+'';
html += '
';
return html;
},
highlight : function(item){
return item;
},
onClick : function(selected,element){
picker.val('');
selected.label = selected.name;
pickerFunctions.addTag(container,selected);
input.trigger('click').trigger('change');
},
onBlur : function(selected){
if(input.attr('data-force')!='false' && input.val() == '') picker.val('');
}
});
break;
case 'user':
var userContainer;
var userPicker;
var pickerLi;
if(!input.data("data-component")){
userContainer = $('
');
input.before(userContainer);
input.data("data-component", userContainer);
if(input.attr("required")) userContainer.attr("required","");
} else {
userContainer = input.data("data-component");
}
userPicker = userContainer.find('input:eq(0)');
pickerLi = userContainer.find('ul li.user-picker-li');
userContainer.find('.user-picker-tag').remove();
pickerLi.show();
var pickerFunctions = {
//Récuperation des valeurs sélectionnées (objet et uid) en fonction des tags visuels présents
getValues : function(userContainer){
var tags = userContainer.find('ul .user-picker-tag');
var values = {object:[],uid:[]};
tags.each(function(i,element){
if($(element).attr('data-uid') == '') return;
var object = $(element).data();
values['object'].push(object);
values['uid'].push(object.uid);
});
return values;
},
//Ajout d'un tag visuel et mise à jour de l'input brut en fonction de l'objet user fournis
addTag : function(userContainer,user){
pickerLi = userContainer.find('ul li.user-picker-li');
if(userContainer.find('li[data-uid="'+user.uid+'"]').length>0) return;
var tag = $('
'+user.fullname+'
');
pickerLi.before(tag);
var values = pickerFunctions.getValues(userContainer);
input.val(values['uid'].join(','));
input.data('values',values['object']);
if((values['uid'].length) == 1 && input.attr('data-multiple') == null){
pickerLi.hide();
}else{
pickerLi.show();
}
tag.find('i').click(function(){
$(this).closest('.user-picker-tag').remove();
var values = pickerFunctions.getValues(userContainer);
input.val(values['uid'].join(','));
input.data('values',values['object']);
if((values['uid'].length-1) ==1 && input.attr('data-multiple') == null){
pickerLi.hide();
}else{
pickerLi.show();
}
});
}
}
//Gestion des champs déja remplis au chargement de la page
if(input.val() !=''){
var login = input.val();
userContainer.find('ul').append('
Chargement...');
userPicker.hide();
$.action({
action : 'user_by_uid',
login : login
},function(r){
userContainer.find('.user-picker-loader').remove();
userPicker.show();
for(var key in r.users)
pickerFunctions.addTag(userContainer,r.users[key]);
});
}
//Sélectionne l'input d'auto-completion ou que l'on clique dans le composant
userContainer.find('ul').click(function(e){
userPicker.focus();
e.stopPropagation();
});
//Selectionne l'item dropdown actif lors de l'appuis sur entré
userPicker.keyup(function(e){
if(e.keyCode!=13 || input.is('[readonly]')) return;
var active = $('.user-picker-li .dropdown-menu .active');
if(active.length==0) return;
active.trigger('click');
input.val('');
});
var types = ['user'];
if(input.data('types') && input.data('types')!='')
types = input.data('types').split(',');
//aucompletion sur le nom des users / rangs
userPicker.autocomplete({
action : 'user_autocomplete',
data : {
types : types
},
skin : function(item){
var html = '';
var re = new RegExp(userPicker.val(),"gi");
name = item.name.replace(re, function (x) {
return '
'+x+'';
});
if(item.type=='user'){
if(item.avatar) html += '
';
html += '
'+name+' - Utilisateur';
html += item.function ? '
'+item.function+'
' : '
';
html += '