Files
databap/masks/options.html

252 lines
8.4 KiB
HTML
Executable File

<div id="options">
<div id="options_container">
<div class="options_box round">
<h2><i class="fa fa-c-param fa-inline"></i>Options</h2>
<form id="options_form" name="options_form">
<div id="options_input">
<p class="loading">Chargement en cours...</p>
</div>
</form>
</div>
<div class="options_box round">
<h2><i class="fa fa-c-lock fa-inline"></i>Mot de passe</h2>
<div id="pass_input"></div>
<form id="pass_form" name="pass_form">
<input type="hidden" id="old_auth_token" name="old_auth_token" />
<input type="hidden" id="new_auth_token" name="new_auth_token" />
</form>
</div>
<div class="options_box round hide" id="admin">
<h2><i class="fa fa-c-changelog fa-inline"></i>Boite magique</h2>
<div id="add_user" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-profile"></i>Ajouter un user</h3>
<form id="form_add_user" name="form_add_user">
<p><input type="text" class="tiny_round" id="first_name" name="first_name" /></p>
<p><input type="text" class="tiny_round" id="last_name" name="last_name" /></p>
<p><input type="text" class="tiny_round" id="email" name="email" /></p>
<p id="companies"></p>
</form>
</div>
<div id="add_company" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-company"></i>Ajouter une entreprise</h3>
<form id="form_add_company" name="form_add_company">
<p><input type="text" class="tiny_round" id="company" name="company" /></p>
</form>
</div>
<div id="assign_user" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-profile"></i>Changer de boite</h3>
<form id="form_assign_user" name="form_assign_user">
<p id="assign_users"></p>
<p id="assign_companies"></p>
</form>
</div>
<div id="reset_pass" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-unlock"></i>Réinitialiser mdp</h3>
<form id="form_reset_pass" name="form_reset_pass">
<p id="users"></p>
</form>
</div>
<div id="update_web_crawler" class="magic_box tiny_round">
<h3><i class="fa fa-inline fa-c-share"></i>Maj web crawler</h3>
<form id="form_update_web_crawler" name="form_update_web_crawler"></form>
</div>
</div>
</div>
</div>
<script type="text/javascript">
databap.pageInit = function()
{
self.initScrollBar('#main', '#options', '#options_container');
//Display password form
addOption(1, {option_id:'old_pass', type:'P', option_name:'Mdp Actuel', user_value:''}, $('#pass_input'));
addOption(2, {option_id:'new_pass', type:'P', option_name:'Nouveau mdp', user_value:''}, $('#pass_input'));
addOption(3, {option_id:'new_pass_conf', type:'P', option_name:'Confirmation nouveau mdp', user_value:''}, $('#pass_input'));
$('#pass_form').addButton('ok', 'Valider', validate_pass, 'validate_pass', 'heavy inverse');
databap.getInfo
(
'get_options',
function(oData)
{
//remove default text
$('#options_input').find('.loading').hide().remove();
//Display options form
$.each(oData.options, addOption);
//Submit button
$('#options_form').addButton('ok', 'Valider', validate_options, 'validate_options', 'heavy inverse');
//Admin panel
if(!$.isEmptyObject(oData.admin)) initAdminPanel(oData.admin);
//Init's end
databap.setInitEnd(true);
},
{},
'json',
function(){},
true
);
};
databap.onResize = function()
{
self.setScrollBarSize('maximize');
};
function initAdminPanel(asAdmin)
{
//Add user
$('#first_name').addDefaultValue('Prénom');
$('#last_name').addDefaultValue('Nom');
addSelect($('#companies'), asAdmin.companies, 0, 'id');
$('#email').addDefaultValue('Email');
$('#form_add_user').addButton('ok', 'Créer', function(){submitAdmin('add_user', true);}, 'submit_new_user', 'heavy inverse');
//Add company
$('#company').addDefaultValue('Entreprise');
$('#form_add_company').addButton('ok', 'Créer', function(){submitAdmin('add_company', true);}, 'submit_new_user', 'heavy inverse');
//Add Crawler button
$('#form_update_web_crawler').addButton('refresh', 'Maj', function(){submitAdmin('update_web_crawler');}, 'submit_refresh', 'heavy inverse');
//Reset User Pass
addSelect($('#users'), asAdmin.users, 0, 'user');
$('#form_reset_pass').addButton('refresh', 'Reset', function(){submitAdmin('reset_pass');}, 'submit_reset_pass', 'heavy inverse');
//Assign user to company
addSelect($('#assign_companies'), asAdmin.companies, 0, 'company');
addSelect($('#assign_users'), asAdmin.users, 0, 'user');
$('#form_assign_user').addButton('ok', 'Assigner', function(){submitAdmin('assign_user');}, 'assign_user', 'heavy inverse');
//Show panel
$('#admin').show();
}
function submitAdmin(sAction, bReboot)
{
bReboot = bReboot || false;
databap.saveForm
(
sAction,
databap.getMainElem('#form_'+sAction),
function(oData)
{
databap.feedback(oData.result, oData.desc);
if(oData.result==self.consts.success && bReboot) location.reload();
},
true,
'json'
);
}
function addSelect($Box, asOptions, sSelectedValue, sSelectId, sSelectClass)
{
var asSortedOptions = sort(asOptions);
sSelectedValue = sSelectedValue || 0;
sSelectId = sSelectId || '';
sSelectClass = sSelectClass || '';
var $Select = $('<select>', {id:sSelectId, name:sSelectId, 'class':sSelectClass}).appendTo($Box);
asSortedOptions.map(function(asValue)
{
$Select
.append($('<option>', {value:asValue.id})
.prop('selected', (asValue.id==sSelectedValue))
.text(asValue.value));
}
);
}
function addOption(iArrayId, optInfo, $Box)
{
var optNameId = optInfo.option_id;
$Box = $Box || $('#options_input');
var selected = '';
var $Option = $('<div>', {'class':'option_line'}).append($('<p>').text(optInfo.option_name));
switch(optInfo.type)
{
case databap.consts.opt_type_text:
$Option.append($('<input>', {type:'text', id:optNameId, name:optNameId, value:optInfo.user_value, 'class':'round'}));
break;
case databap.consts.opt_type_color:
$Option
.addButton('delete', 'Remettre la valeur par défaut', function($This){$This.next().attr('type', 'text').val('');}, '', 'clear no_bg no_text')
.append($('<input>', {type:'color', id:optNameId, name:optNameId, value:optInfo.user_value}));
break;
case databap.consts.opt_type_pass:
$Option.append($('<input>', {type:'password', id:optNameId, name:optNameId, value:optInfo.user_value, 'class':'round'}));
break;
case databap.consts.opt_type_checkbox:
addSelect($Option, optInfo.select, optInfo.user_value_id, optNameId, 'hide');
$Option.append(
$('<span>', {'class':'checkbox clickable'})
.data('option_id', optNameId)
.data('on', optInfo.user_value)
.data('options', optInfo.select_inv)
.append($('<i>', {'class':'fa fa-c-'+optInfo.user_value}))
.click(function()
{
$This = $(this);
var sNewValue = ($This.data('on')=='1')?'0':'1';
$This.data('on', sNewValue);
$('#'+$This.data('option_id')).val($This.data('options')[sNewValue]);
$This.find('.fa')
.removeClass('fa-c-0 fa-c-1')
.addClass('fa-c-'+sNewValue);
})
);
break;
case databap.consts.opt_type_select:
addSelect($Option, optInfo.select, optInfo.user_value_id, optNameId, 'round');
break;
}
$Option.appendTo($Box).slideDown('fast');
}
function validate_options()
{
databap.saveForm
(
'set_options',
databap.getMainElem('#options_form'),
function(result)
{
self.addBufferIcon();
location.reload();
},
true
);
}
function validate_pass()
{
sButtonId = '#validate_pass';
var sOldPass = $.trim($('#old_pass').val());
var sNewPass = $.trim($('#new_pass').val());
if(sOldPass=='') databap.addErrorBefore('Mdp actuel manquant', sButtonId);
else if(sNewPass=='') databap.addErrorBefore('Mdp vide non autorisé', sButtonId);
else if(sNewPass!=$('#new_pass').val()) databap.addErrorBefore('Pas de blanc dans le mdp', sButtonId);
else if(sNewPass!=$('#new_pass_conf').val()) databap.addErrorBefore('Les nouveaux mdp ne coïncident pas', sButtonId);
else if(sNewPass==sOldPass) databap.addErrorBefore('Le nouveau mdp est le même que l\'actuel', sButtonId);
else
{
$('#old_auth_token').val(getLoginToken(sOldPass));
$('#new_auth_token').val(getLoginToken(sNewPass));
databap.saveForm
(
'set_pass',
databap.getMainElem('#pass_form'),
function(data)
{
if(data.result==databap.consts.success) databap.addSuccessBefore(data.desc, sButtonId);
else databap.addErrorBefore(data.desc, sButtonId);
},
true,
'json'
);
}
}
</script>