function sfish(){
var elist = [
'sclick',
'sclick2',
'documents',
'sidemenu'
];
var toggleover = function(ev){
var li = $(this).closest(ev.data.elm);
var eid = ev.data.eid;
if(li.hasClass('over')) {
li.removeClass('over');
$(document).unbind('click.closesclick' + eid);
} else {
li.siblings('li').removeClass('over');
$.each(elist,function(num, eli){
if(eli != eid){
$('.' + eli).find('.over').removeClass('over');
$('.' + eli).removeClass('over');
}
});
$(document).unbind('click.closesclick' + eid);
li.addClass('over');
$(document).one('click.closesclick' + eid, function(){
li.removeClass('over');
});
li.bind('click.closesclick' + eid, function(e){
e.stopPropagation();
});
}
};
var togglemnu = function(ev){
var li = $(this).closest(ev.data.elm);
var eid = ev.data.eid;
if(li.hasClass('over')) {
li.removeClass('over');
li.find('.over').removeClass('over');
$(document).unbind('click.closesclick' + eid);
} else {
li.siblings('li').removeClass('over');
li.siblings('li').find('.over').removeClass('over');
$.each(elist,function(num, eli){
if(eli != eid){
$('.' + eli).find('.over').removeClass('over');
$('.' + eli).removeClass('over');
}
});
$(document).unbind('click.closesclick' + eid);
li.addClass('over');
$(document).one('click.closesclick' + eid, function(){
$('.' + eid).find('.over').removeClass('over');
$('.' + eid).removeClass('over');
});
li.click(function(e){
e.stopPropagation();
});
}
if(li.hasClass('more')){
return false;
}
};
$('.sclick').children('li').children('a').click({elm:'li', eid:'sclick'}, toggleover);
$('.sclick2').children('li').children('a').click({elm:'li', eid:'sclick2'}, toggleover);
$('.documents').children('a').click({elm:'div', eid:'documents'}, toggleover);
$('.sidemenu li.more').children('a').click({elm:'li', eid:'sidemenu'}, togglemnu);
}
function newbasket() {
$(document).on('click','.basket-add .add .kent-ico',function () {
var elt=$(this);
var rec = $(this).prev('input').attr('id');
var val = $(this).prev('input').val();
if(val == '')
{
alert('Vous devez renseigner un nom de sélection.');
return false;
}
$.post(
'RecordBasket.htm', /* rank update URL */
'rec2b='+encodeURIComponent(rec)+'&sel_act=new&select_name='+encodeURIComponent(val)+'&cx_set='+kParams.context+'&isAjax=true', /* post variables */
function(data) {
if(data.search(/Erreur/)<0)
{
let displayVal=val.replace(//g,'>');
var newBasket = new Basket({id:parseInt(data),name:displayVal,comment:'',count:0,niv:0});
newBasket.add(rec.match(/_([0-9]+)$/)[1]);
basketList.unshift(newBasket);
$(document).trigger('loadBaskets');
}
else return false;
});
return false;
});
$(document).on('keyup','.contents .basket-add .add input',function (event) { //enter key press
if(event.keyCode==13) $(this).parent().find('a.kent-ico').click();
});
}
function loadBaskets(elt,attrs,callback)
{
/* create basket list
elt= parent element to create the list in
attrs= (object)
synth(bool) full list or just baskets count
docs(bool) if synth==1, whether to display nb of documents in all baskets
checkboxes(bool) whether to display checkboxes
quickedit(bool) whether to display buttons to delete or empty basket
recnum(string) recnum of the current document, so checkboxes are checked accordingly
format(string) format of the string to send back for each basket - use [name],[comment],[url],[num],[count],[box],[edit],[style] to replace with basket data
niv (int, bool) formula to apply to calculate string to display hierarchy ([niv] will be replaced by level), set to false to not display hierarchy
readonly(bool) include readonly baskets (defaults to true)*/
if (typeof basketList=='undefined') return false;
var data='';
if(attrs.readonly===undefined) attrs.readonly=true;
if(attrs.synth=='true') //synthesis
{
if(basketList.length==0) data+='Aucun favori créé';
else
{
data+=basketList.length + ' Favoris';
if(attrs.docs=='true')
{
var tot=0;
for(x in basketList) if(attrs.readonly || !(basketList[x].readonly)) tot+=basketList[x].count;
data+= ' ['+tot+']';
}
}
}
else //list
{
for(x in basketList)
{
if(attrs.readonly || !(basketList[x].readonly)) {
if(attrs.format===undefined)
attrs.format='
La fenêtre de téléchargement a rencontré un problème. Veuillez vérifier qu\'elle n\'a pas été bloquée par votre navigateur ou fermée trop rapidement et re-déposer vos documents.
',{type:'error',title:'Erreur lors du glisser-déposer',buttonOK:true});
}
})();
}
else
{
//java uploader
}
} //end auto upload
}
function showGedToolbox() {
var triggerSelector='.toolboxOpener';
$('body').on('click',function (e) {
var args={};
if($(e.target).closest('#gedToolbox,#modalPopup').length>0) return true; //close toolbox on click in body (not popup)
var elt=$(e.target).closest(triggerSelector);
var trigger=$(e.target).closest('.toolboxOpenerTrigger');
//children preview
if(trigger.is('.child')) {
let $child=trigger.data('tbPreviewFor')
gedPlusToggleFolder($child.parentsUntil(trigger.closest('li.folder'),'li.folder').add(trigger.closest('li.folder')),{open:true,callback:function () {
$child.first().trigger('click');
}});
return false;
}
if(trigger.length>0) {
elt=trigger.closest('li,p').find(triggerSelector);
if(elt.length===0) { //get record
args.record=getRN(elt);
elt=trigger;
if(elt.is('.section>.iconsInfo .wfIcon')) args.tabs='workflow';
}
if(trigger.data('toolboxOpen')) args.tab=trigger.data('toolboxOpen');
}
if(elt.length==0 || gedToolbox.isOn(elt)) gedToolbox.show(false);
else {
args.target=elt;
if(args.record!=undefined) true;
else if(elt.is('.toolboxRecord')) {
args.record=getRN();
args.position='below';
args.arrow=false;
args.shift=-6;
if(elt.closest('.record').is('.monoGed')) args.monoGed=true;
}
else if(elt.closest('li').is('.folder')) {
args.folderKey=elt.closest('.folder').data('key');
args.folderCode=elt.closest('.folder').data('code');
}
else args.archive=elt.closest('li').attr('id').substr(7);
if(e.shiftKey) args.force=true;
if(window.location.pathname.toLowerCase().indexOf('listrecord.htm')>=0) args.gedContext='listRecord';
gedToolbox.show(args);
}
});
//press "Esc" to close
$(document).on('keyup',function (e) {
if(e.keyCode==27) gedToolbox.show(false);
});
}
function GedToolbox() //GedToolBox Class
{
var targetList=[];
var myClass=this;
var actions=[];
var getTargetIndex = function(obj)
{
var i =0;
while(i=targetList.length) return -1;
else return i;
}
var deleteCont = function (i)
{
targetList[i]=$();
$('#gedToolbox>.wrapper.toolbox'+i).remove();
}
this.show = function (args)
{
/*
args.archive : I_Key of archive to load
args.record : record num of record to load
args.folderCode : code of folder to load
args.folderKey : key of folder to load
args.target : jQuery object of the element where to point toolbox at
args.shift : number of pixels by which to shift box horizontally compared to default position
args.tab : Tab to open - first one open by default
args.force : true to force reload
args.hide : hide box if true (ignores other arguments)
args.gedContext : defines where toolbox is loaded (list, record, transitMini, transit...). Can use several values separated by ;
args.tabs : which tabs to show (infos,edit,workflow) separated by ;
args.position : 'left' or 'below' to show toolbox under or on the left of element
args.arrow: true by default, hide arrow if false
*/
if(args === 0 || args === false) var hide=true;
else var hide=false;
if (typeof args != 'object') args={};
if(args.hide===undefined) args.hide=hide;
if (args.force===undefined) args.force=false;
if(args.tabs===undefined) args.tabs='';
var box=$('#gedToolbox');
if(box.length==0)
{
box=$('
');
}
$('#mainCol>.contents').before(temp);
if($(document).scrollTop()>temp.offset().top)
$(document).scrollTop(temp.offset().top)
function changeOnChange(elt) {
elt.each(function () {
var url=$(this).attr('onchange').replace(/window\.location=(.+);/,'$1');
$(this).attr('onchange','ajax_loadList('+url+');');
});
}
if(pushState) kPushState(url,{ajaxLoadList:true});
if(url.match(/ajax_(list)?record.htm/i)===null) url=url.replace(/((?:list)?record\.htm)/i,'ajax_$1');
kAjax(url,'',function (data) {
if(queue!=window.ajaxLoadQueue.id) return false;
$('#rightCol,#breadcrumb,#mainCol>.header').remove();
temp.remove();
$('#mainCol>.contents').replaceWith(data);
$('#mainCol>.contents').addClass('ajax_loaded');
if(list) {
changeOnChange($('#mainCol>.contents.ajax_loaded>.header .orderby select,#mainCol>.contents.ajax_loaded>.footer select[onchange]'));
kParams.idlist=$('#mainCol .contents.ajax_loaded').data('idlist');
$(document).trigger('listLoaded');
}
else {
gedDragDrop();
$(document).trigger('recordLoaded');
}
$(document).trigger('loadBaskets');
if($('#menu_k2').length>0) {
if(list) {
$('#menu_k2').data('idlist',kParams.idlist);
$('#menu_k2').attr('data-record','');
$('#menu_k2_2').remove();
$('#menu_k2_3').remove();
menuK2_goTo(0);
if(!$('#menu_k2').hasEvent('click.classification')) {
$('#menu_k2').on('click.classification','.categories a',function (e) {
e.preventDefault();
ajax_loadList($(this).attr('href'));
});
$('#menu_k2').on('submit.classification','.categories form',function (e) {
e.preventDefault();
ajax_loadList('ajax_listrecord.htm?'+$(this).kSerialize());
});
}
} //end menu_k2/list
else {
$('#menu_k2').attr('data-record',$('#mainCol .contents.ajax_loaded').attr('data-rn'));
$('#menu_k2_3').remove();
menuK2_goTo(2);
}//end menu_k2/record
}
},function (error) {
temp.remove();
$('#mainCol>.contents').css('display','');
popup(error,{type:'error',title:'Chargement de liste',buttonOK:true});
});
}
function listRecordAjax()
{
$(document).on('click','.contents.ajax_loaded a',function (e) {
var link=$(this).attr('href');
if (link.match(/(\/|^)(ajax_)?(list)?Record\.htm/i)!==null && this.target!=='_blank') {
e.preventDefault();
ajax_loadList(link);
}
});
}
function recordDragDrop() {//drag drop notice
if(typeof DD==='undefined') return true;
var targets='#menu_folderView li>a';
function recordDragDoDrop(mess,params) {
kAjax('ajax_Classification_act.htm',params,function (data) {
if(mess.folder==mess.team && params.act2==undefined) var message='$$doc a été ajouté à l\\\'équipe $$team';
else if(params.act2==undefined) var message='$$doc a été ajouté au dossier $$folder';
else if(mess.folder==mess.team) var message='$$doc a été déplacé vers l\'équipe $$team';
else var message='$$doc a été déplacé vers le dossier $$folder';
kMessageBox.send(message.replace('$$doc',mess.doc).replace('$$team',mess.team).replace('$$folder',mess.folder));
},function (error) {
popup(error,{title:'Error',type:'error',buttonOK:true})
});
}
function recordDragDropAllowed(target) {
return (target.closest('[data-role]').data('role')<4) || (target.closest('.team').attr('data-rn')==recDrop.elt.data('team-rn') && (target.closest('li').attr('data-pc-rn')==recDrop.elt.data('box-rn') || (target.closest('li').is('.team') && recDrop.elt.data('box-rn')==null)));
}
var recDrop = new DD(function (drag,trigger) { //initdrag
drag.append(trigger.closest('.article').find('.figure').first().clone()).append(''+trigger.find('.title').text()+'').addClass("recordDragger").data({'rn':String(getRN(trigger)),'recordAut':trigger.data('recordAut'),teamRn:trigger.attr('data-team-rn'),boxRn:trigger.attr('data-box-rn')});
drag.find('.figure').find('.hover').remove();
},function (target) { //dropAction
if(target.length==0 || recordDragDropAllowed(target)) return false;
var mess={doc:recDrop.elt.find('.title').text(),folder:target.find('.lib').text(),team:target.closest('.team').find('.lib').first().text()};
var params={act:'SubfolderDropRecord',team:target.closest('.team').attr('data-rn'),linkto:target.closest('li').attr('data-rn'),recnum:recDrop.elt.data('rn')};
//calculate action : alias (0), move (1), both possible (2)
var act=2;
if(recDrop.elt.data('recordAut')<2) act=0;
else { //in same team, from team to pc or reverse : move only
var elt={team:recDrop.elt.data('team-rn'),box:recDrop.elt.data('box-rn')};
var targetData={team:target.closest('.team').attr('data-rn'),isTeam:target.closest('li').is('.team')};
if(elt.team==targetData.team && (targetData.isTeam || elt.box==undefined))
act=1;
}
if(act==0)
recordDragDoDrop(mess,params);
else if(act==1) {
params.act2='move';
recordDragDoDrop(mess,params);
}
else {
addContextHelp('DEPLACEDOC');
popup('popup_classif_drop.htm',{width:600,callback:function () {
$('#modalPopup .submit').on('click','input',function () {
if($(this).is(':first-child')) popup(0);
else {
popup(0);
if($(this).is(':nth-child(3)')) params.act2='move';
recordDragDoDrop(mess,params);
}
});
}});
}
},targets);
$('body').dd_bind(recDrop,'#listRecord .article:not(#listRecTab *)');
$('body').on('dragEnter',targets,function (e) {
$(this).append('');
});
$('body').on('dragLeave',targets,function (e) {
$(this).children('.recordDropTarget').remove();
});
} //END recordDragDrop
function setUserPrefs(prefs,temp,onOk,onError)
{
/* Save user prefs into database
temp is optional and can be :
boolean : save in temporary folder
int (or text containg num) : save related to idlist
*/
if(typeof temp==='function') {
onError=onOk;
onOk=temp;
}
let query={params:JSON.stringify(prefs),user:kParams.ident,user_temp:kParams.identTemp};
if(temp===true) query.temp=1;
else if ((typeof temp==='number') || Number(temp)!==NaN) query.list=Number(temp);
kAjax('engine/ajax_setUserPrefs.htm',query,function (data) {
if(typeof onOk=='function') onOk(data);
},function (error) {
if(typeof onError=='function') onError(error);
});
}
function deconnectInactive()
{
if(typeof kParams==='undefined' || kParams.deconnectInactive==0 || kParams.ident=='') return false;
triggerOnIdle(function () {
window.location='/CONNECTD?id2=deconnect&getdoc=main.htm';
},kParams.deconnectInactive*60,false);
}
function resizeSupermenus()
{
$('.super-menu').each(function () {
if($(this).children('.padding').length==0) {
//resize menu
$(this).css('visibility','hidden').parent().addClass('hover');
var w=0;
var children=$(this).children('div');
for(i=0;i ($(window).width() - 5) && relative + pos.left > 0)
pos.left-=50;
if(pos.left + w < opener.width()) pos.left=opener.width()-w;
if(pos.left<-relative) pos.left=-relative; //check menu does not disappear on the left
$(this).css(pos);
$(this).parent('li').children('a').children('span').append('');
if($(this).parent('li').children('a').next('.arrow').length===0)
$(this).parent('li').children('a').after('');
});
}
function fixSortOrder() { //change link on sort order when changing sort field, so field is always included in order -> fixes bug where changing the sort order did not take the current field into account
$('.orderby').on('click','a',function (e) {
var field=$(this).closest('.orderby').find('select');
var obj={};
obj[field.attr('name')]=field.val();
$(this).attr('href',kSetParam(obj,$(this).attr('href')));
});
}
function form_imageInput() {
$(document).on('change','.kForm-image input[type="file"]',function (e) {
var display=this.parentNode.querySelector('.kForm-imageDisplay');
if(this.files.length>0)
{
var reader=new FileReader();
reader.addEventListener('load',function () {
display.style.backgroundImage='url(\''+reader.result+'\')';
});
reader.readAsDataURL(this.files.item(0));
}
});
}
function checkList_update()
{
$('.contents').on('change','.article input[type=checkbox][name="cid[]"]',function () {
var idlist=kParams.idlist;
var recnum=$(this).val();
var action = ($(this).is(':checked'))?'ADD':'DEL';
$.post('list_item_check.htm',{idxlist:idlist,xRecord:recnum,act:action},function (data) {
$('body').append('
'+data+'
');
$('.selectCount').html($('#TEMP').find('.selectCount').html());
$('#TEMP').remove();
});
if(action=='ADD')
kParams.listSelected.push(recnum);
else {
var p=array_find(kParams.listSelected,recnum);
if(p>0) kParams.listSelected.splice(p,1);
}
});
$('.contents').on('change','.article input.cb-cid2',function (e) {
$(this).closest('.article').find('input[type=checkbox][name="cid[]"]').prop('checked',$(this).is(':checked')).trigger('change');
});
}
function checkList_selectAll() {
$('#listRecord .selectall a').on('click',function (e) {
e.preventDefault();
var idlist=kParams.idlist;
if($(this).attr('href')=='#all') {
var recnum=-1;
var action='ADD';
$('.article input[type="checkbox"][name="cid[]"]').each(function () {
kParams.listSelected.push($(this).val());
});
}
else if($(this).attr('href')=='#none') {
var recnum=-9;
var action='DEL';
kParams.listSelected=[];
}
kAjax('list_item_check.htm',{idxlist:idlist,xRecord:recnum,act:action},function (data) {
$('body').append('
'+data+'
');
$('.selectCount').html($('#TEMP').find('.selectCount').html());
$('#TEMP').remove();
//select checkboxes
$('#listRecord .article input[type="checkbox"][name="cid[]"],#listRecord .article input[type="checkbox"].cb-cid2').prop('checked',(action==='ADD'));
}, function (error) {
popup(error,{type:'error',buttonOK:true});
});
});
}
function checkList_checkGhost() {
$('#listRecord .article input[type=checkbox][name="cid[]"]:checked').closest('.article').find('.cb-cid2').prop('checked',true);
}
function checkList_basketPop()
{
$('#listselect #baskets').change(function () {
if($(this).val()=='') return true;
var act=$(this).val();
$(this).val('');
if($('.selectCount').first().html()=='0')
{
alert('Sélectionnez au moins une ligne');
return true;
}
if(act == 's') //sub selection
{
popup(1);
setTimeout(function () {location.search='?idlist='+kParams.idlist+'&selectedonly=on&numselect=s&list=recordnums';},0);
}
else if(act == 'g') //apply formula
{
popup('ajax_Apply_Formula.htm?idlist='+kParams.idlist+'&selectedonly=on',{width:800,callback:function () {
$('#modalPopup .kForm').find('input:not([type="checkbox"]),select,textarea').each(function () {
if($(this).is('[type="hidden"],.submit *')) return true;
if(!$(this).is('.autocomplete') && $(this).data('comment')!='') $(this).autocomplete({
noServer:true,
query_title:$(this).siblings('label').text(),
query_comment:$(this).data('comment')
}); //end comment only
else if($(this).is('.autocomplete')) {
$(this).autocomplete({
query_type:'applyFormula',
query_title:$(this).siblings('label').text(),
query_comment:$(this).data('comment'),
field:$(this).attr('id'),
code:$(this).siblings('input[type="hidden"]').val(),
locked:true
});
}
});
$('#modalPopup form').on('submit',function (e) {
e.preventDefault();
$(this).formAjax({init:function () {popup(1);},
success:function (data) {
popup(0);
try {
var data=JSON.parse(data);
}
catch (err) {
kMessageBox.send(data,{type:'error'})
}
if(data.message) {
var mess='';
if(data.message.modif_ok) mess+='$ enregistrement(s) modifié(s) '.replace('$',data.message.modif_ok);
if(data.message.no_access) mess+='Vous n\'avez pas les droits de modifier $ enregistrements. Ils n\'ont pas été modifiés. '.replace('$',data.message.no_access);
if(data.message.records_locked) mess+='$ enregistrements étaient verrouillés. Ils n\'ont pas été modifiés. '.replace('$',data.message.records_locked);
kMessageBox.send(mess);
}
ajax_loadList('listrecord.htm?idlist='+kParams.idlist);
}, error:function (error) {
popup(0);
kMessageBox.send(error,{type:'error'});
}
});
});
} //END callback on apply formula
});
}
else if (act.indexOf('f:')==0) //apply script
{
var callbackSuccess=$(this).data('success');
var callbackError=$(this).data('error');
popup(1);
kAjax('ajax_act.htm',{action:'applyformula',formula:act.substr(2),idlist:kParams.idlist,selectedonly:'on',dataType:'json'},function (data) {
popup(0);
kMessageBox.send(data.message.replace(/\r\n?/,' '));
if(callbackSuccess) eval(callbackSuccess);
},function (error,message) {
popup(0);
kMessageBox.send(message,{type:'error'});
if(callbackError) eval(callbackError);
});
}
else if(act=='d') //delete
{
if(confirm('Voulez-vous vraiment supprimer '+$('.selectCount').first().html()+' enregistrement(s) ?')) {
if(confirm('Etes-vous certain ?')) {
popup(1);
kAjax('ajax_act.htm',{idlist:kParams.idlist,selectedonly:'on',action:'deleteList',dataType:'json'},function (data) {
popup(0);
kMessageBox.send(data.message);
ajax_loadList('ListRecord.htm?idlist='+data.idlist);
},function (error,message) {
if(error==5 || error==1) popup(message,{buttonOK:true,onOK:function () {window.location='Main.htm'}});
else popup(error,{type:'error',buttonOK:true});
});
}
else
alert('Suppression annulée');
}
}
else if(act == 'n') //new basket
popup('newSelect.htm',{width:530,height:'auto',
callback:function () {
$('#modalPopup form').on('submit',function (e) {
e.preventDefault();
var form=$('form[name="newselect"]').kSerialize();
form+='&idlist='+$('form[name="adminForm"] input[name="idlist"]').val()+'&selectedonly=on&sel_act=addlist&numselect=n&isAjax=true';
popup(1);
kAjax('recordBasket.htm',form,function (data)
{
var oData=JSON.parse(data);
var newBasket = new Basket({id:oData.basketNum,name:oData.basketLib,comment:'',count:0,niv:0});
for(x in oData.records) newBasket.add( oData.records[x]);
basketList.unshift(newBasket);
$(document).trigger('loadBaskets');
popup(0);
kMessageBox.send(' éléments ajoutés au dossier de favoris '.replace('$$$',oData.records.length)+oData.basketLib);
},function (error) {
popup(0);
kMessageBox.send('Ajouter des éléments aux favoris :'+error,{type:'error'});
});
});
}
}); //END new basket
else if(act.match(/^[0-9]+$/)) // baskets
{
kAjax('recordBasket.htm',{sel_act:'addlist',selectedonly:'on',idlist:kParams.idlist,numselect:act,isAjax:true},function (data) {
var oData=JSON.parse(data);
for(i=0;i');
bubble.append('');
$('#help').append(bubble);
}
function popContextHelp(id) {
if(window.contextHelp.length===0) return true;
if(id===undefined) id=window.contextHelp[0].id;
var p;
if(window.contextHelp[0].id===id) p=0;
else p=array_find(window.contextHelp,id,0,searchInContext);
if(p>=0)
window.contextHelpSeen.push(window.contextHelp.splice(p,1)[0]);
}
function getSvg(elt) {
if(!(elt instanceof jQuery)) elt=$(elt);
var w=$(document).width();
var h=$(document).height();
var ret='';
return ret;
}
function displayContextHelpArrow() {
var elt=$($('#contextHelp').find('.contents').data('args').elt);
var arrow=$('#contextHelp>.kent-ico');
arrow.removeClass('hide');
var css={top:'',bottom:'',display:'',transform:''};
if (elt.length==0 || (elt.offset().top < ($(window).scrollTop() + $(window).height()) && (elt.last().offset().top+elt.last().height() > $(window).scrollTop()))) css={display:'none'};
else {
if(elt.last().offset().top+elt.last().height() < $(window).scrollTop()) {
css.top='30px';
css.transform='rotateZ(180deg)';
}
else if(elt.offset().top > ($(window).scrollTop() + $(window).height()))
css.bottom='30px';
css.left=elt.offset().left-$(window).scrollLeft()+(elt.width()/2)-(arrow.width()/2);
}
arrow.css(css);
}
function hideHelper() {
$('#contextHelp').addClass('hide').find('.contents').removeData('id');
}
function displayContextHelp(code) {
defHelp=(window.contextHelp.length==0 && code===undefined);
var helper=$('#contextHelp');
$(window).on('scroll.displayHelp',function () {
displayContextHelpArrow();
});
if(helper.length==0) {
helper=$('
Bonjour, je suis Kent, votre assistant sur ce portail.
');
$('body').prepend(helper);
}
helper.removeClass('hide left');
var content=helper.find('.contents');
content.kLoader({type:'circle'});
var oldCodes='';
var cxHelp;
if(defHelp) {
cxHelp={id:'DEFAULT'}
var t=[];
for(i in window.contextHelpSeen) t.push(window.contextHelpSeen[i].id);
oldCodes='&getLib='+t.join(';');
}
else if(code!==undefined) {
if(typeof code==='object') cxHelp=code;
else {
var p=array_find(window.contextHelpSeen,code,0,searchInContext);
if(p>=0) cxHelp=window.contextHelpSeen[p];
else {
p=array_find(window.contextHelp,code,0,searchInContext);
if(p>=0) cxHelp=window.contextHelpSeen[p];
else cxHelp={id:code};
}
}
}
else cxHelp=window.contextHelp[0];
if (cxHelp.args===undefined) cxHelp.args={};
if(!defHelp) content.data({'id':cxHelp.id,'args':cxHelp.args});
else content.data({args:{}});
$('html,body').animate({scrollTop:0},300);
if(cxHelp.args.elt!==undefined && $(cxHelp.args.elt).length>0 && $(cxHelp.args.elt).offset().left >=content.offset().left) helper.addClass('left');
kAjax('engine/ajax_contextHelp.htm','lang='+kParams.lang+'&id='+cxHelp.id+oldCodes,function (data) {
content.html(data);
displayContextHelpArrow();
if(cxHelp.args.elt!==undefined && $(cxHelp.args.elt).length>0){
helper.children('div:first-child').addClass('contour').html(getSvg(cxHelp.args.elt));
}
else {
helper.children('div:first-child').removeClass('contour').html('');
}
var submit=$('');
if(defHelp) {
submit.append('');
}
if (!kParams.contextHelp) submit.append('')
else submit.append('')
submit.append('
');
},function ($target) {
let $ghost=$('#popupListRecTabSettings #ghost');
if($ghost.length>0) {
$ghost.replaceWith($('#popupListRecTabSettings .dragged').removeClass('dragged'));
}
},'#popupListRecTabSettings>div:first-child>a',{
scrollDist:0
});
$('#popupListRecTabSettings>div:first-child').dd_bind(moveFields,'a');
$(document).on('dragOver','#popupListRecTabSettings a',function (e,pos) {
let $ghost=$('#popupListRecTabSettings #ghost');
let $dragged=$('#popupListRecTabSettings .dragged');
let coords=this.getBoundingClientRect();
let y=coords.top+window.scrollY+(coords.height/2);
if(pos.ydiv:first-child a').each(function (i) {
data+='&col_'+(Number(i+1))+'='+$(this).data('code').replace('#','%23');
});
data+='&showPreviews='+($('#listRecTabHideImages').is(':checked')?'1':'0');
popup(1);
window.location=data;
},buttonOK:true,buttonCancel:true,title:'Paramétrage des colonnes'});
});
}
function listTabEditMode() { //listrecord table edit mode
// +some display functions
let tabTimer=null;
let tabQueue=0;
let tabCustom={}; //used to add custom treatment of columns
function tabEdit_getCellInfos(cell) {
return listRecTabFieldsInfos[$($(cell).closest('tr').find('td,th')).index(cell)];
}
function tabEdit_canEditCell(cell) {
if($(cell).closest('tr').is('.editModeOff')) return 'Vous n\'avez pas le droit de modifier cet enregistrement.';
else if (!tabEdit_getCellInfos(cell).editable) return 'Cette rubrique n\'est pas modifiable, ou vous n\'avez pas le droit de la modifier.';
else return true;
}
function tabEdit_getCellCode(cell) {
return tabEdit_getCellInfos(cell).code;
}
function tabEdit_getCellRn(cell) {
return $(cell).closest('tr').attr('data-record');
}
function tabEdit_selectCell(cell) {
if($(cell).closest('table').find('.editModeFocused').length>0)
tabEdit_exitCell($(cell).closest('table').find('.editModeSelected')[0]);
$(cell).closest('table').find('.editModeSelected').removeClass('editModeSelected');
if($(cell).is('.lastcol,.firstcol')) return true;
$(cell).addClass('editModeSelected');
}
function tabEdit_getValues(cell) {
return listRecTabValues[tabEdit_getCellRn(cell)][tabEdit_getCellCode(cell)];
}
function tabEdit_autocompletePosition(cell,hide) {
$box=$('#tabAutocomplete');
if(arguments.length===1 || !hide) {
if($box.length===0) {
$box=$('
');
$(cell).closest('table').after($box);
}
if(!$(cell).is('.autocompleteHere')) {
$(cell).closest('table').find('td.autocompleteHere').removeClass('autocompleteHere');
$(cell).addClass('autocompleteHere');
}
$box.css({
left:$(cell).position().left+'px',
top:($(cell).closest('tr').position().top+$(cell).outerHeight())+'px',
width:Math.max($(cell).width(),200)+'px'
});
$box.removeClass('hide');
}
else $box.addClass('hide');
return $box;
}
function tabEdit_autocompleteDisplay(cell,data) {
let $box=tabEdit_autocompletePosition(cell);
let txt='';
for(v of data.values) {
if($(cell).find('.tag[data-code="'+v.Code_Valeur+'"]').length===0) //if not already in values
txt+=''+v.Libelle_Valeur+'';
}
if(data.values.length===0)
txt='
Aucun enregistrement n\'a été trouvé
';
else if(!$(cell).is('.editModeMultiple') && !$(cell).is('.editModeRequired')) {
txt='Vider la valeur'+txt;
}
if($box.children('input').length===0 && data.values.length>10) $box.prepend('');
$box.children('div').html(txt);
}
function tabEdit_autocompleteLoad(cell,query) {
if(arguments.length<2) query={};
if(typeof query!=='object') query={search:query};
if(query.field===undefined) query.field=tabEdit_getCellCode(cell);
if(query.rn===undefined) query.rn=tabEdit_getCellRn(cell);
if(query.dataType===undefined) query.dataType='json';
tabQueue++;
let tabQueue_local=tabQueue
kAjax('ajax_listTabLoad.htm',query,function (data) {
if(tabQueue_local===tabQueue)
tabEdit_autocompleteDisplay(cell,data);
},function (error) {
kMessageBox.send('Error getting values: '+error,{type:'error'});
tabEdit_exitCell(cell,true); //reset values
});
}
function tabEdit_openPopup(cell) {
let txt='';
let infos=tabEdit_getCellInfos(cell);
let id=0;
let fieldMask;
if(infos.type==='date') fieldMask='';
else fieldMask='';
fieldMask='
'+fieldMask+'
';
for(val of tabEdit_getValues(cell).displayValue)
txt+=fieldMask.replace('$val',val).replace('$id',++id);
txt+=fieldMask.replace('$val','').replace('$id',++id); //add empty value
txt='';
popup(txt,{
buttonOK:true,
buttonCancel:true,
width:1000,
title:$(cell).closest('table').find('th').eq($(cell).getCellCoord().left).find('label').text(),
onOK:function () {
let txt='';
let vals=[]
$('#modalPopup .kForm').find('input,textarea').each(function () {
if(this.value!='') vals.push(this.value);
});
for(v of vals)
txt+='';
$(cell).find('.value').append(txt);
tabEdit_exitCell(cell);
popup(0);
},
onCancel:function () {
$(cell).removeClass('editModeFocused');
popup(0);
},
callback:function () {
$('#popupTabEditMore').find('input,textarea').makeMultivalue();
}
});
}
window.tabEdit_addProcess=function (field,callbacks) { //use to add special processing for field whose code is "field"
//callbacks is object that can receive :
// focus : function to apply on focus in cell, this is current cell, receives (cell values,cell infos,callback on cell exit, to call if async, with cell as argument) as arguments, returns element to insert in cell, or nothing to leave cell untouched
// exit : function to apply on exiting cell (calculate query then sent to ajax_listTabEdit.htm), this is current cell, receives current calculated query. Can return true if no change and cell display need to be reset to original value.
// exitTarget : URl to call if not calling ajax_listTabEdit.htm
//callback receives "query" and can return "true" if needs to reset value instead of setting it
if(typeof field!=='object') field=[field];
for(f of field) {
if(typeof f==='number') f='='+f;
tabCustom[f]=callbacks;
}
};
function tabEdit_focusCell(cell) {
if(!$(cell).is('.editModeSelected')) tabEdit_selectCell(cell);
var canEdit=tabEdit_canEditCell(cell);
if(canEdit===true) {
var $edit=$(cell).find('.value').first();
$(cell).addClass('editModeFocused');
$(cell).data('originalValue',$(cell).find('.value').first().html());
$value=$(cell).find('.value').first();
infos=tabEdit_getCellInfos(cell);
var $elt=$();
if(tabCustom[infos.code]!==undefined && typeof tabCustom[infos.code].focus==='function') {
let ret=tabCustom[infos.code].focus.apply(cell,[tabEdit_getValues(cell),infos,tabEdit_exitCell]);
if(ret instanceof jQuery || ret instanceof Element) $elt=$(ret);
} else {
switch(infos.type) {
case 'text':
if(!infos.multiple) {
$elt=$('l');
$elt.filter('textarea').css({height:$(cell).innerHeight(),width:$(cell).innerWidth()});
} else
tabEdit_openPopup(cell);
break;
case 'date':
if(!infos.multiple)
$elt=$('');
else
tabEdit_openPopup(cell);
break;
case 'code':
let txt='';
let vals=tabEdit_getValues(cell);
for(i in vals.value)
txt+=''+vals.displayValue[i]+(infos.multiple?'':'')+'';
if(infos.multiple) txt+='';
if(txt==='') txt='';
$elt=$(txt);
break;
case 'link':
kMessageBox.send('This datatype is not yet supported.',{type:'error'});
break;
}
}
if($elt.length>0) {
if(infos.multiple) $(cell).addClass('editModeMultiple');
if(infos.required) $(cell).addClass('editModeRequired');
$value.html('').append($elt);
$value.find('input,textarea').first().trigger('focus').each((i,a)=>{a.setSelectionRange(a.value.length,a.value.length)});
if(infos.type==='code' && !infos.multiple) {
let $box=tabEdit_autocompletePosition(cell);
$box.children().kLoader();
tabEdit_autocompleteLoad(cell);
}
}
}
else {
kMessageBox.send(canEdit,{type:'error'});
}
}
function tabEdit_exitCell(cell,reset) {
if(arguments.length<2) reset=false;
$(cell).removeClass('editModeFocused');
let $value=$(cell).find('.value').first();
var query={
act:'val',
record:tabEdit_getCellRn(cell),
field:tabEdit_getCellCode(cell)
};
if(tabCustom[infos.code]!==undefined && typeof tabCustom[query.field].exit==='function') {
reset=tabCustom[query.field].exit.apply(cell,[query]);
} else {
switch(tabEdit_getCellInfos(cell).type) {
case 'text':
case 'date':
let $fields=$value.find('textarea,input');
if($fields.length===1) {
query.val=$fields.val();
if(query.val==='') query.replace=1;
}
else {
query.val='$multiple:'+$fields.length;
$fields.each(function (i) {
query['val'+(i+1)]=this.value;
});
query.replace=1;
}
break;
case 'code':
query.val=$(cell).find('a.tag:not(.add)').toArray().map(a=>a.dataset.code).join(';');
query.replace=1;
break;
case 'link':
kMessageBox.send('This datatype is not yet supported.',{type:'error'});
break;
}
}
if(reset || (query.val!==undefined && query.val!==tabEdit_getValues(cell).value.join(';'))) {
let url='ajax_listTabEdit.htm';
if(tabCustom[infos.code]!==undefined && typeof tabCustom[infos.code].exitTarget!=='undefined')
url=tabCustom[infos.code].exitTarget;
kAjax(url,query,function (data) {
let $data=$('').html(data);
$value.html($data.find('#result_html .value').html());
let vals=JSON.parse($data.find('#result_code').text());
tabEdit_getValues(cell).value=vals.value;
tabEdit_getValues(cell).displayValue=vals.displayValue;
kMessageBox.send('Modification enregistrée');
},function (error) {
kMessageBox.send(error,{type:'error'});
$value.html($(cell).data('originalValue'));
});
}
else {
$value.html($(cell).data('originalValue'));
}
tabEdit_autocompletePosition(cell,true);
}
$(document).on('click','.listTabToggleEditMode',function (e) {
var mode=$(this).data('action');
$('.listTabToggleEditMode[data-action="'+mode+'"]').addClass('hide');
$('.listTabToggleEditMode:not([data-action="'+mode+'"])').removeClass('hide');
if(mode==='on') {
$('#listRecTab').addClass('editMode');
setUserPrefs({editMode:true},kParams.idlist);
}
else {
$('#listRecTab').removeClass('editMode');
setUserPrefs({editMode:false},kParams.idlist);
}
});
$(document).on('click','#listRecTab.editMode td',function (e) {
e.preventDefault();
if(!this.matches('.editModeSelected')) tabEdit_selectCell(this);
else if(!this.matches('.editModeFocused')) tabEdit_focusCell(this);
else if($(e.target).is('.fullSize')) {
var $target=$(e.target).closest('td').find('.value textarea');
popup('',{
buttonOK:true,
buttonCancel:true,
width:800,
onOK:function () {
$target.val($('#modalPopup textarea').val());
tabEdit_exitCell($target.closest('td')[0]);
popup(0);
}});
}
});
$(document).on('keypress keyup',function (e) { //key shortcuts
if($('#listRecTab.editMode').length===0) return true;
var mode='none';
var $cell=$(e.target).closest('td');
if($cell.is('.editModeFocused')) mode='focus';
else if($cell.is('.editModeSelected')) mode='selected';
if(e.key==='Enter' && !e.shiftKey && mode==='focus') {
e.preventDefault();
tabEdit_exitCell($cell);
} else if(e.key==='Escape' && mode==='focus') {
e.preventDefault();
tabEdit_exitCell($cell,true);
}
});
$(document).on('click','#listRecTab.editMode .editModeFocused a.tag',function (e) { //click on tags
if($(this).is('.add') || !$(this).closest('td').is('.editModeMultiple')) {
var $cell=$(e.target).closest('td');
if($(this).is('.autocompleteHere') && !$('#tabAutocomplete').is('.hide')) //hide box
tabEdit_autocompletePosition($cell,true);
else {
let $box=tabEdit_autocompletePosition($cell);
$box.kLoader();
tabEdit_autocompleteLoad($cell);
}
} else
$(this).remove();
});
$(document).on('click','#tabAutocomplete a',function (e) { //autocomplete
$cell=$('#listRecTab .autocompleteHere');
if($cell.is('.editModeMultiple')) {
$cell.find('.add').before($(this).append(''));
setTimeout(tabEdit_autocompletePosition,0,$cell);
}
else {
if($(this).is('.empty'))
$cell.find('.tag').remove();
else $cell.find('.value').html('').append(this);
setTimeout(tabEdit_autocompletePosition,0,$cell,true);
}
});
$(document).on('keyup','#tabAutocomplete input',function (e) {//autocomplete typing
clearTimeout(tabTimer);
tabTimer=setTimeout(function () {
$('#tabAutocomplete').children('div').kLoader();
tabEdit_autocompleteLoad($('#listRecTab .autocompleteHere'),$('#tabAutocomplete>input').val());
},300);
});
$(document).on('click','#listRecTab:not(.editMode) .seeAll',function (e) {
e.preventDefault();
let $cell=$(this).closest('td');
let txt='';
for(val of tabEdit_getValues($cell).displayValue)
txt+='
'+val+'
';
txt='
'+txt+'
';
popup(txt,{buttonClose:true,width:1000,title:$cell.closest('table').find('th').eq($cell.getCellCoord().left).find('label').text()});
});
$(document).on('mousedown','.tabResize',function (e) {
let pos=e.clientX;
let $cell=$(this).closest('th,td');
//set left cols width
$cell.prevAll('th,td').each(function () {
$(this).css('width',$(this).width()+'px');
});
let w=$cell.width();
$(document).on('mousemove.tabResize',function (e2) {
let pos2=e2.clientX;
$cell.css('width',w+pos2-pos);
}).on('mouseup.tabResize',function (e2) {
$(document).off('mousemove.tabResize mouseup.tabResize');
let query={};
query['tabCol_width_'+tabEdit_getCellCode($cell)]=$cell.width();
setUserPrefs(query);
});
});
}
function resizePictures() { //check if images are set with background, and have width and height data defined, to add/remove "no-resize"
$('.article .figure').each(function () {
if(this.style.backgroundImage && this.dataset.imgWidth && this.dataset.imgHeight && this.dataset.imgWidth>0 && this.dataset.imgHeight>0) {
if($(this).width()>$(this).data('img-width') && $(this).height()>$(this).data('img-height')) $(this).addClass('no-resize');
else $(this).removeClass('no-resize');
}
});
}
function askKent(args) { //generate very simple form to send emails to admins
/*args :
styles : styles to apply to main box, mostly for positionning
to : email address to send email to (database by default)
record : include record
*/
var box=$('#askKent');
if(box.length>0) box.remove();
if(arguments.length===0) args={};
box=$('
');
$('body').append(box);
box.find('textarea').focus();
if(args.styles!==undefined) box.css(args.styles);
if(!window.askKentCalled) {
window.askKentCalled=true;
$(document).on('click','#askKent a',function (e) {
if($(this).attr('href')==='#close') {
e.preventDefault();
$('#askKent').remove();
}
});
$(document).on('submit','#askKent form',function (e) {
box=$('#askKent');
e.preventDefault();
var data={};
if($('#askKentSendInfos').is(':checked')) {
data.url=window.location.toString();
data.idlist=kParams.idlist;
data.xrecord=getRN();
if(kGetParam('kentapp')!==null) data.kentapp=kGetParam('kentapp');
}
if(box.attr('data-record')!='') data.xrecord2=box.attr('data-record');
$(this).formAjax({init:function () {
box.find('form').kLoader({type:'circle'});
},
action:'askKent.htm',
data:data,
success:function (data) {
box.find('form').replaceWith(data);
},
error:function (error) {
box.remove();
kMessageBox.send(error,{type:'error'});
}});
});
}
}
function setupQuickSearch () {
if(!$('.quickSearch').last().find('.optionsLoader>:not(.onFocus)').isEmpty(true)) $('.quickSearch').last().find('.optionsOpener').removeClass('hide');
if(window.setupQuickSearchDone!==undefined) {
$('.quickSearch .qsAutocomplete').remove();
return true;
}
window.setupQuickSearchDone=true;
function qSearch_loadAjax($box) {
var load=$box.find('.loadOnOpen');
if(load.length>0) {
load.each(function () {
var elt=$(this);
elt.kLoader();
var href=elt.data('href');
if(href.search(/^http|\?|#/)>=0) { //protect against cross site
elt.remove();
return true;
}
kAjax(href,'',function (data) {
elt.html(data);
elt.removeClass('loadOnOpen');
},function (error) {
elt.remove();
});
});
}
}
$(document).on('click','.quickSearch .optionsOpener',function (e) {
var $main=$(this).closest('.quickSearch');
var $box=$main.find('.options');
if($box.length===0) {
$box=$('');
$main.find('.optionsOpener').after($box);
$main.find('.quickSearchTables input:checked').trigger('change');
$main.find('.optionsLoader>div:not(.onFocus)').appendTo($box);
qSearch_loadAjax($box);
}
$box.modalShow();
});
function qSearch_closeFocus() {
$('.quickSearch .qsFocus').addClass('hide').find('.acResults').remove();
$('.quickSearch .search-menu').find('.acResults').remove();
if($('.quickSearch .search-menu').isEmpty(true)) $('#topSearch .search-menu').addClass('hide');
}
function qSearch_openFocus($form) {
if($form.closest('#topSearch').length===0) {
var $box=$form.find('.qsFocus');
if($box.length===0) {
$box=$('');
$form.find('input.sfield').before($box);
$form.find('.optionsLoader>div.onFocus').appendTo($box);
qSearch_loadAjax($box);
$box.css('left',$box.siblings('input.sfield').position().left);
}
return $box.removeClass('hide');
}
else {
return $form.find('.search-menu').removeClass('hide');
}
}
function qSearch_get($form,what) { //get type or table from checkboxes/radio or input
var label;
switch(what) {
case 'type':label='Types';break;
case 'table':label='Tables';break;
default:label=what[0].toUpperCase()+what.substr(1);
}
$box=$form.find('.quickSearch'+label);
if($box.length===0)
return $form.find('input[name="'+what+']').val();
var val=[];
$box.find('input:checked').each(function () {
if($(this).val()!=='') val.push($(this).val());
});
return val.join(';');
}
$(document).on('focus','.quickSearch input.sfield',function (e) {
var $main=$(this).closest('.quickSearch');
qSearch_openFocus($main);
}).on('click focus',function (e) {
e.stopPropagation();
var $main=$('.quickSearch').has('.qsFocus:not(.hide)');
if($main.length>0 && !$(e.target).closest('.qsFocus').is($main.find('.qsFocus')) && !$(e.target).is($main.find('input.sfield'))) qSearch_closeFocus();
})
.on('submit','.quickSearch',function (e) {
//types
var $types=$(this).find('.quickSearchTypes');
if($types.length!==0) {
var field=$(this).find('input[name="type"]');
if(field.length===0)
field=$('').appendTo(this);
field.val(qSearch_get($(this),'type'));
}
//tables
var $table=$(this).find('.quickSearchTables input:checked');
if($table.length!==0) {
var field=$(this).find('input[name="table"]');
if(field.length===0)
field=$('').appendTo(this);
field.val(qSearch_get($(this),'table'));
}
$(this).find('.quickSearchTables').remove();
// delete trailing spaces
$(this).find('input[name="what"]').val($(this).find('input[name="what"]').val().trim());
})
.on('change','.quickSearchTables input',function () {
var val=this.value;
$(this).closest('.quickSearch').find('.quickSearchTypes').each(function () {
if(!$(this).is('.table'+val)) {
$(this).addClass('hide').find('input[type="checkbox"]:checked').prop('checked',false);
$(this).find('input.selectAll').prop('undetermined',false);
}
else $(this).removeClass('hide');
});
});
function qSearch_doAutocomplete() {
var $main=$('.acResults a.active').closest('.quickSearch');
if($main.length===0) return false;
var $field=$main.find('input.autocomplete');
var $item=$main.find('.acResults a.active');
$field.val($item.data('value')+' ').trigger('focus');
qSearch_closeFocus();
}
if($('.quickSearch .qsAutocomplete').length>0) {
$('.quickSearch .qsAutocomplete').remove();
var qsAutocompleteTimout,qsAutocompleteQueue=0;
$(document).on('keydown keypress','.quickSearch input.autocomplete',function (e) {
if(e.keyCode===13 && $(this).closest('.quickSearch').find('.acResults a.active').length>0) { //enter
e.preventDefault();
qSearch_doAutocomplete();
}
else if((e.keyCode===38 || e.keyCode===40) && $(this).closest('.quickSearch').find('.acResults a').length>0) { // up/down arrows
e.preventDefault();
var dir=(e.keyCode===40?1:-1);
$items=$(this).closest('.quickSearch').find('.acResults a');
if($items.filter('.active').length===0) $items.eq(dir>0?0:$items.length-1).addClass('active');
else {
var i=$items.index($items.filter('.active'))+dir;
if(i<0) i=$items.length-1;
else if(i>=$items.length) i=0;
$items.removeClass('active').eq(i).addClass('active');
$items.closest('.scrollableViewport').scrollTo($items.filter('.active'),{center:false});
}
}
else {
clearTimeout(qsAutocompleteTimout);
let field=this;
qsAutocompleteTimout=setTimeout(function () {
var queue=++qsAutocompleteQueue;
query={
what:field.value,
table:qSearch_get($(field).closest('form'),'table'),
type:qSearch_get($(field).closest('form'),'type'),
dataType:'json'
};
if($(field).closest('form').find('input[type="hidden"][name="field_all"]').length>0) query.field_all=$(field).closest('form').find('input[type="hidden"][name="field_all"]').val();
else if($(field).closest('form').find('input[type=checkbox"][name="field_all"]:checked').length>0) query.field_all='on';
kAjax('globalSearch_help.json',query,function (data) {
if(queue!==qsAutocompleteQueue) return false;
var $main=$(field).closest('.quickSearch');
var $box=qSearch_openFocus($main);
if(data.results.length===0) {
$box.find('.acResults').html('');
if($box.isEmpty(true)) $box.addClass('hide');
return true;
}
$acBox=$box.find('.acResults');
if($acBox.length===0)
$acBox=$('').prependTo($box);
var txt='';
for(d of data.results)
txt+=''+d.label+'';
$acBox.html(txt);
$acBox.makeScrollable();
},function (error) {
});
},300);
}
})
.on('click','.quickSearch .acResults a',function (e) {
e.stopPropagation();
$(this).addClass('active').siblings().removeClass('.active');
qSearch_doAutocomplete();
});
}
function openSearch() {
$('#topSearch').addClass('opened');
if($('#topSearch .search-menu').isEmpty(true)) $('#topSearch .search-menu').addClass('hide');
$('#topSearch .quickSearchTables input:checked').trigger('change');
qSearch_loadAjax($('#topSearch .search-menu'));
setTimeout(function () {$('#topSearch input[type="text"]')[0].select();},400);
}
function closeSearch() {
$('#topSearch').removeClass('opened');
qSearch_closeFocus();
}
$('#topSearch a').on('click',function (e) {
if($(this).is('#topSearch>a')) openSearch();
else if($(this).is('.close')) closeSearch();
});
$(document).on('click',function (e) {
if($('#topSearch').is('.opened') && $(e.target).closest('#topSearch').length==0) closeSearch();
});
$('#topSearch input[type="text"]').on('keyup',function (e) {
if(e.keyCode==27) closeSearch();
});
}
function doTranslate(trigger) {
popup(1);
kAjax('ajax_translateRecord.htm',{record:getRN(trigger)},function (data) {
if($('#listBody').length>0) { //list mode
popup(0)
if($(trigger).closest('#listRecTab').length===0)
$(trigger).closest('.article').replaceWith($(data).filter('.section').html());
else
kMessageBox.send('L\'enregistrement a bien été traduit. Rechargez la page pour afficher la traduction.');
}
else //record
window.location='record.htm?record='+getRN(trigger)+'&idlist='+kParams.idlist;
},function (error) {
popup(0);
kMessageBox.send('Error: Could not translate record: '+error,{type:'error'});
});
}
function listRecordWfActions () {
if(window.setListRecordWfActions===undefined) {
window.setListRecordWfActions=true;
$(document).on('click','.article .gedFlow .buttons a',function (e) {
let act=this.getAttribute('href');
if(act[0]==='#') {
e.preventDefault();
gedToolbox.triggerAction(act.substr(1),e);
}
});
}
}
$.fn.homeLoadThemes=function (data,args) {
/*args.viewAllOnMain : Permet de gérer si un clic sur une rubrique parente permet de lier les documents des enfants également
valeurs possibles : 'never' : pas de lien / 'always' (défaut) : clic sur le parent inclus toujours les enfants / 'option' : ajoute une entrée "voir tout"
*/
if(args===undefined) args={};
if(args.viewAllOnMain===undefined) args.viewAllOnMain='always';
const root=this;
function homeLoadThemes_getHtml(field,val) {
let url='ListRecord.htm?list=table&table=3&what='+encodeURIComponent(val.code)+'&field=='+field.field+'&liblist='+encodeURIComponent(field.label+' : '+val.label)+'&sort=D=41';
let isBack=false;
if(val.code==='#back') {
url=val.code;
isBack=true;
}
return '