Files
Phraseanet/templates/web/admin/editusers.html.twig
Harrys Ravalomanana bfe82f1cd2 PHRAS-3084
2020-05-25 16:32:30 +04:00

1131 lines
44 KiB
Twig

{% macro format_checkbox(admin, right, name, users, type) %}
{% set id = right['base_id'] %}
{% set class = 'base_id' %}
{% if type == 'sbas' %}
{% set id = right['sbas_id'] %}
{% set class = 'sbas_id' %}
{% set sbas_class = "" %}
{% else %}
{% set sbas_class = "inside_sbas_" ~ right['sbas_id'] %}
{% endif %}
{% set display = 'block' %}
{% if right[name] != users|length and name != constant('\\ACL::ACCESS') and right[constant('\\ACL::ACCESS')] != users|length and type != 'sbas' %}
{% set display = 'none' %}
{% endif %}
{% if right[name] == 0 %}
{% set class = 'unchecked' %}
{% elseif right[name] == users|length %}
{% set class = 'checked' %}
{% else %}
{% set class = 'mixed' %}
{% endif %}
{% if name == 'access' %}
{% if class != 'checked' and type == 'base' and app.getAclForUser(admin).has_access_to_base(id) is empty %}
<div class="no_switch">
</div>
{% else %}
<div style="display:{{display}}" class="{{class}} switch_right {{sbas_class}} {{type}} {{type}}_{{id}} right_{{name}}">
<input class="{{class}}" name="{{name}}_{{id}}" value="" type="hidden"/>
</div>
{% endif %}
{% else %}
{% if class != 'checked' and type == 'base' and app.getAclForUser(admin).has_right_on_base(id, name) is empty %}
<div class="no_switch">
</div>
{% elseif class != 'checked' and type == 'sbas' and app.getAclForUser(admin).has_right_on_sbas(id, name) is empty %}
<div class="no_switch">
</div>
{% else %}
<div style="display:{{display}}" class="{{class}} switch_right {{sbas_class}} {{type}} {{type}}_{{id}} right_{{name}}">
<input class="{{class}}" name="{{name}}_{{id}}" value="" type="hidden"/>
</div>
{% endif %}
{% endif %}
{% endmacro %}
<style>
div.no_switch,
div.switch_quota,
div.switch_masks,
div.switch_time,
div.switch_right{
background-repeat:no-repeat;
background-position: center center;
width:12px;
height:12px;
margin:0 auto;
}
div.no_switch{
background-image:url(/assets/common/images/icons/ccoch5.gif);
}
td.users_col{
vertical-align:middle;
text-align:center;
width:23px;
border:0px solid transparent;
}
.ui-datepicker{
z-index:1500;
}
</style>
<div>
<div class="tabs PNB" style="bottom:40px;">
<ul>
<li>
<a href="#rights_tab">{{ 'Rights' | trans }}</a>
</li>
{% if main_user is not empty and main_user.isTemplate is empty and main_user.isSpecial is empty %}
<li>
<a href="#user_infos_tab">{{ 'Infos' | trans }}</a>
</li>
{% endif %}
</ul>
<div id="rights_tab" class="" style="top:40px;">
<form id="users_rights_form" method="post" action="{{ path('admin_users_rights_apply') }}">
<input type="hidden" name="users" value="{{users_serial}}"/>
<table style="width:100%;" cellspacing="0" cellpadding="0" border="0">
<tr>
<td>
{% if main_user is not empty %}
{% if main_user.isSpecial is not empty %}
{% if main_user.getLogin() == 'invite' %}
{{ 'Reglages:: reglages d acces guest' | trans }}
{% elseif main_user.getLogin() == 'autoregister' %}
{{ 'Reglages:: reglages d inscitpition automatisee' | trans }}
{% endif %}
{% else %}
{% set display_name = main_user.getDisplayName() %}
{% trans with {'%display_name%' : display_name} %}Edition des droits de %display_name%{% endtrans %}
{% endif %}
{% else %}
{% set number = users|length %}
{% trans with {'%number%' : number} %}Edition des droits de %number% utilisateurs{% endtrans %}
{% endif %}
</td>
<td style="text-align:right;">
{{ 'Apply a template' | trans }}
<select name="template">
<option value="">{{ 'boutton::choisir' | trans }}</option>
{% for template in templates %}
<option value="{{ template.getId() }}">{{ template.getLogin() }}</option>
{% endfor %}
</select>
<button class="btn" type='button' id='reset_rights'>{{ 'Delete all users rights' | trans }}</button>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" style="table-layout: auto;width:820px;height:67px;bottom:auto;top:50px;" class="">
<thead>
<tr>
<th style="width:122px;">
</th>
<th colspan="26">
<img src="/assets/common/images/lng/inclin-{{app['locale']}}.png" style="width:698px"/>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
</td>
<td colspan="26">
</td>
</tr>
</tbody>
</table>
<div class="" style="bottom:40px;top:127px;overflow-y:auto;overflow-x:hidden;width:850px;max-height: 450px;">
<table class="hoverable" cellspacing="0" cellpadding="0" border="0" style="table-layout: fixed;width:820px;">
<!-- <thead>
<tr>
<th style="width:122px;">
</th>
<th colspan="26">
<img src="/assets/common/images/lng/inclin-{{app['locale']}}.gif" >
</th>
</tr>
</thead>-->
<tbody>
{% set sbas = '' %}
{% for rights in datas %}
{% if rights['sbas_id'] != sbas %}
{% set sbas = rights['sbas_id'] %}
{% if loop.index != 1 %}
<tr style="height:15px;">
<td></td>
</tr>
{% endif %}
<tr>
<td style="width:122px;overflow:hidden;white-space:nowrap;">
{{rights['sbas_id']|sbas_labels(app)}}
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_access"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_actif"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canputinalbum"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_candwnldpreview"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_nowatermark"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_candwnldhd"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_cancmd"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col">
</td>
<td class="users_col">
<div class="time_trigger time_sbas_{{rights['sbas_id']}}">
<img src="/assets/common/images/icons/user_details_gray.png" />
<input type="hidden" name="time_sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col">
</td>
<td>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canaddrecord"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canmodifrecord"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_chgstatus"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_candeleterecord"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_imgtools"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canadmin"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canreport"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_canpush"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_manage"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="users_col options">
<div>
<i class="fa fa-caret-down fa-right"></i>
<input type="hidden" name="right" value="right_modify_struct"/>
<input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
</div>
</td>
<td class="main-right-item" style="text-align:center;width:19px;" title="{{ 'Allowed to publish' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_CHUPUB'), users, 'sbas')}}
</td>
<td class="main-right-item" style="text-align:center;width:19px;" title="{{ 'Manage Thesaurus' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MODIF_TH'), users, 'sbas')}}
</td>
<td class="main-right-item" style="text-align:center;width:19px;" title="{{ 'Manage Database' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MANAGE'), users, 'sbas')}}
</td>
<td class="main-right-item" style="text-align:center;width:19px;" title="{{ 'Manage DB fields' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MODIFY_STRUCT'), users, 'sbas')}}
</td>
<td style="text-align:center;width:48px;">
</td>
</tr>
{% endif %}
<tr class="right-items" style="line-height: 40px;">
<td style="overflow:hidden;white-space:nowrap;" title="{{rights['base_id']|bas_labels(app)}}">
{{rights['base_id']|bas_labels(app)}}
</td>
<td class="users_col case_right_access left-right" title="{{ 'Access' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::ACCESS'), users, 'base')}}
</td>
<td class="users_col case_right_actif left-right" title="{{ 'Active' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::ACTIF'), users, 'base')}}
</td>
<td class="users_col case_right_canputinalbum left-right" title="{{ 'Allowed to add in basket' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANPUTINALBUM'), users, 'base')}}
</td>
<td class="users_col case_right_candwnldpreview left-right" title="{{ 'Access to preview' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDWNLDPREVIEW'), users, 'base')}}
</td>
<td class="users_col case_right_nowatermark left-right" title="{{ 'Remove watermark' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::NOWATERMARK'), users, 'base')}}
</td>
<td class="users_col case_right_candwnldhd left-right" title="{{ 'Access to HD' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDWNLDHD'), users, 'base')}}
</td>
<td class="users_col case_right_cancmd left-right" title="{{ 'Allowed to order' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANCMD'), users, 'base')}}
</td>
<td class="users_col case_right_quota" title="{{ 'Set download quotas' | trans }}">
<div class="quota_trigger quota_{{rights['base_id']}} base_{{rights['base_id']}}">
{% if rights[constant('\\ACL::RESTRICT_DWNLD')] > 0 %}
<img src="/assets/common/images/icons/user_details_on.png" />
{% else %}
<img src="/assets/common/images/icons/user_details_off.png" />
{% endif %}
<input type="hidden" name="quota_base_id" value="{{rights['base_id']}}"/>
</div>
</td>
<td class="users_col case_right_time" title="{{ 'Set time restrictions' | trans }}">
<div class="time_trigger time_{{rights['base_id']}} base_{{rights['base_id']}}">
{% if rights['time_limited'] > 0 %}
<img src="/assets/common/images/icons/user_details_on.png" />
{% else %}
<img src="/assets/common/images/icons/user_details_off.png" />
{% endif %}
<input type="hidden" name="time_base_id" value="{{rights['base_id']}}"/>
</div>
</td>
<td class="users_col case_right_masks" title="{{ 'Set statuses restrictions' | trans }}">
<div class="masks_trigger quotatime_{{rights['base_id']}} base_{{rights['base_id']}}">
{% if rights['masks'] > 0 %}
<img src="/assets/common/images/icons/user_details_on.png" />
{% else %}
<img src="/assets/common/images/icons/user_details_off.png" />
{% endif %}
<input type="hidden" name="masks_base_id" value="{{rights['base_id']}}"/>
</div>
</td>
<td style="text-align:center;width:100px;"></td>
<td class="users_col case_right_canaddrecord" title="{{ 'Allowed to add' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANADDRECORD'), users, 'base')}}
</td>
<td class="users_col case_right_canmodifrecord" title="{{ 'Allowed to edit' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANMODIFRECORD'), users, 'base')}}
</td>
<td class="users_col case_right_chgstatus" title="{{ 'Allowed to change statuses' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CHGSTATUS'), users, 'base')}}
</td>
<td class="users_col case_right_candeleterecord" title="{{ 'Allowed to delete' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDELETERECORD'), users, 'base')}}
</td>
<td class="users_col case_right_imgtools" title="{{ 'Access to image tools' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::IMGTOOLS'), users, 'base')}}
</td>
<td class="users_col case_right_canadmin" title="{{ 'Manage users' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANADMIN'), users, 'base')}}
</td>
<td class="users_col case_right_canreport" title="{{ 'Allowed to access report' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANREPORT'), users, 'base')}}
</td>
<td class="users_col case_right_canpush" title="{{ 'Allowed to push' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANPUSH'), users, 'base')}}
</td>
<td class="users_col case_right_manage" title="{{ 'Manage collection' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::COLL_MANAGE'), users, 'base')}}
</td>
<td class="users_col case_right_modify" title="{{ 'Manage values lists' | trans }}">
{{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::COLL_MODIFY_STRUCT'), users, 'base')}}
</td>
<td class="select-all-line" colspan="5" title="{{'admin::users:edit: Manage inline selection' | trans }}">
<div class="select-all-line-btn">
<i class="fa fa-caret-down fa-right"></i>
</div>
<div class="users_check_line_wrap hide">
<div class="checker check_left_right">{{'admin::users:edit: check read right' | trans }}</div>
<div class="unchecker check-all_right">{{'admin::users:edit: check all right' | trans }}</div>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</form>
</div>
{% if main_user is not empty and main_user.isTemplate is empty and main_user.isSpecial is empty %}
<div id="user_infos_tab" class="" style="top:40px;overflow:auto;">
<form id="user_infos_form">
<table>
<tr>
<td>
{{ 'admin::compte-utilisateur identifiant' | trans }}
</td>
<td>
<input type="text" value="{{main_user.getLogin()}}" readonly="readonly" />
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur sexe' | trans }}
</td>
<td>
<select name="gender">
<option {% if main_user.getGender() == 0 %}selected="selected"{% endif %} value="0" >{{ 'admin::compte-utilisateur:sexe: mademoiselle' | trans }}</option>
<option {% if main_user.getGender() == 1 %}selected="selected"{% endif %} value="1" >{{ 'admin::compte-utilisateur:sexe: madame' | trans }}</option>
<option {% if main_user.getGender() == 2 %}selected="selected"{% endif %} value="2" >{{ 'admin::compte-utilisateur:sexe: monsieur' | trans }}</option>
</select>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur prenom' | trans }}
</td>
<td>
<input type="text" name="first_name" value="{{main_user.getFirstName()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur nom' | trans }}
</td>
<td>
<input type="text" name="last_name" value="{{main_user.getLastName()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur email' | trans }}
</td>
<td>
<input type="text" name="email" value="{{main_user.getEmail()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur adresse' | trans }}
</td>
<td>
<input type="text" name="address" value="{{main_user.getAddress()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur code postal' | trans }}
</td>
<td>
<input type="text" name="zip" value="{{main_user.getZipCode()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur ville' | trans }}
</td>
<td>
<input type="text" value="{{ main_user.getGeonameId() }}" class="geoname_field" name="geonameid"
autocomplete="false"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur poste' | trans }}
</td>
<td>
<input type="text" name="function" value="{{main_user.getJob()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur societe' | trans }}
</td>
<td>
<input type="text" name="company" value="{{main_user.getCompany()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur activite' | trans }}
</td>
<td>
<input type="text" name="activite" value="{{main_user.getActivity()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur telephone' | trans }}
</td>
<td>
<input type="text" name="telephone" value="{{main_user.getPhone()}}"/>
</td>
</tr>
<tr>
<td>
{{ 'admin::compte-utilisateur fax' | trans }}
</td>
<td>
<input type="text" name="fax" value="{{main_user.getFax()}}"/>
</td>
</tr>
</table>
</form>
</div>
{% endif %}
</div>
<div class="form-actions" style="">
<button class="users_rights_valid btn btn-primary">{{ 'boutton::valider' | trans }}</button>
<a href="{{ path('admin_users_search') }}" class="users_rights_cancel btn" style="text-decoration:none">{{ 'boutton::retour' | trans }}</a>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
function ini_edit_usrs() {
$('.users_col.options').bind('click', function (event) {
$('#users_check_uncheck').remove();
event.stopPropagation();
event.preventDefault();
check_uncheck_menu($('input[name="right"]', $(this)).val(), $('input[name="sbas_id"]', $(this)).val(), $(this));
return false;
});
$(document).unbind('click.usersoptions').bind('click.usersoptions', function (event) {
$('#users_check_uncheck').remove();
});
$('table.hoverable tr').hover(
function () {
$(this).addClass('hovered');
},
function () {
$(this).removeClass('hovered');
}
);
$('table.hoverable td').hover(
function () {
var attr = $('input:first', this).attr('name');
var right = attr ? attr.split('_').shift() : false;
if (right)
$('td.case_right_' + right).addClass('hovered');
},
function () {
var attr = $('input:first', this).attr('name');
var right = attr ? attr.split('_').shift() : false;
if (right)
$('td.hovered').removeClass('hovered');
}
);
function user_click_box(event, element, status) {
var newclass, newvalue, boxes;
var $element = $(element);
if ($element.hasClass('right_access')) {
var base_id = $element.find('input').attr('name').split('_').pop();
boxes = $('div.base_' + base_id + ':not(:first)');
}
if ((typeof status !== 'undefined' && status == 'checked') || (typeof status === 'undefined' && (($element.hasClass('mixed') === true) || ($element.hasClass('unchecked') === true)))) {
newclass = 'checked';
newvalue = '1';
if (boxes)
boxes.show();
}
else {
newclass = 'unchecked';
newvalue = '0';
if (boxes)
boxes.hide();
}
$element.find('input').val(newvalue);
$element.removeClass('mixed checked unchecked').addClass(newclass);
}
$('#users_rights_form div.switch_right').bind('click', function (event) {
user_click_box(event, $(this));
});
$('#right-ajax button.users_rights_valid').bind('click', function () {
var datas = {
users: $('#users_rights_form input[name="users"]').val(),
values: $('#users_rights_form').serialize(),
template: $('#users_rights_form select[name="template"]').val(),
user_infos: $('#user_infos_form').serialize()
};
var callback = function (reset_before_apply) {
datas.reset_before_apply = reset_before_apply;
$.ajax({
type: 'POST',
url: '../admin/users/rights/apply/',
dataType: 'json',
data: datas,
success: function (data) {
if (!data.error)
$('a.zone_editusers').trigger('click');
else
alert(data.message);
}
});
};
if (datas.template !== '') {
dialogUserTemplate(callback);
} else {
callback('0');
}
return false;
});
$('#right-ajax .users_rights_cancel').bind('click', function () {
var $this = $(this);
$('#right-ajax').empty().addClass('loading').parent().show();
$('#right').hide();
$.get($this.attr('href'), function (data) {
$('#right-ajax').removeClass('loading').html(data);
});
return false;
});
var time_buttons = {
'Ok': function () {
save_time();
},
'Cancel': function () {
$('#time_dialog').dialog('close');
}
};
$('#time_dialog').dialog({
resizable: false,
autoOpen: false,
draggable: false,
buttons: time_buttons,
modal: true
});
var quota_buttons = {
'Ok': function () {
save_quotas();
},
'Cancel': function () {
$('#quotas_dialog').dialog('close');
}
};
$('#quotas_dialog').dialog({
resizable: false,
autoOpen: false,
draggable: false,
buttons: quota_buttons,
modal: true
});
var masks_buttons = {
'Ok': function () {
save_masks();
},
'Cancel': function () {
$('#masks_dialog').dialog('close');
}
};
$('#masks_dialog').dialog({
resizable: false,
autoOpen: false,
draggable: false,
buttons: masks_buttons,
width: 900,
height: 300,
modal: true
});
$('#users_rights_form .time_trigger').bind('click', function () {
var base_id = $(this).find('input[name="time_base_id"]').val();
if ('undefined' !== typeof base_id) {
$.ajax({
type: 'POST',
url: '../admin/users/rights/time/',
data: {
users: $('#users_rights_form input[name="users"]').val(),
base_id: base_id
},
success: function (data) {
var dialog = $('#time_dialog');
if (dialog.data("ui-dialog")) {
dialog.html(data).dialog('open');
}
$('div.switch_time', dialog).bind('click', function (event) {
var newclass, boxes;
boxes = $(this).closest('form').find('input.datepicker');
if (($(this).hasClass('mixed') === true) || ($(this).hasClass('unchecked') === true)) {
newclass = 'checked';
boxes.removeAttr('readonly');
}
else {
newclass = 'unchecked';
boxes.attr('readonly', 'readonly');
}
$(this).removeClass('mixed checked unchecked').addClass(newclass);
});
}
});
} else {
var sbas_id = $(this).find('input[name="time_sbas_id"]').val();
$.ajax({
type: 'POST',
url: '../admin/users/rights/time/sbas/',
data: {
users: $('#users_rights_form input[name="users"]').val(),
sbas_id: sbas_id
},
success: function (data) {
var dialog = $('#time_dialog');
dialog.html(data);
dialog.dialog('open');
$('div.switch_time', dialog).bind('click', function (event) {
var newclass, boxes;
boxes = $(this).closest('form').find('input.datepicker');
if (($(this).hasClass('mixed') === true) || ($(this).hasClass('unchecked') === true)) {
newclass = 'checked';
boxes.removeAttr('readonly');
}
else {
newclass = 'unchecked';
boxes.attr('readonly', 'readonly');
}
$(this).removeClass('mixed checked unchecked').addClass(newclass);
});
}
});
}
});
$('#users_rights_form .quota_trigger').bind('click', function () {
var base_id = $(this).find('input[name="quota_base_id"]').val();
$.ajax({
type: 'POST',
url: '../admin/users/rights/quotas/',
data: {
users: $('#users_rights_form input[name="users"]').val(),
base_id: base_id
},
success: function (data) {
var dialog = $('#quotas_dialog');
if (dialog.data("ui-dialog")) {
dialog.html(data).dialog('open');
}
$('div.switch_quota', dialog).bind('click', function (event) {
var newclass, boxes;
boxes = $(this).closest('form').find('input:text');
if (($(this).hasClass('mixed') === true) || ($(this).hasClass('unchecked') === true)) {
newclass = 'checked';
boxes.removeAttr('readonly');
}
else {
newclass = 'unchecked';
boxes.attr('readonly', 'readonly');
}
$(this).removeClass('mixed checked unchecked').addClass(newclass);
});
}
});
});
$('#users_rights_form .masks_trigger').bind('click', function () {
var base_id = $(this).find('input[name="masks_base_id"]').val();
$.ajax({
type: 'POST',
url: '../admin/users/rights/masks/',
data: {
users: $('#users_rights_form input[name="users"]').val(),
base_id: base_id
},
success: function (data) {
$('#masks_dialog').html(data).dialog('open');
$('.switch_masks').bind('click', function () {
var currentclass, newclass;
var bit = $(this).find('input[name="bit"]').val();
currentclass = 'unchecked';
if ($(this).hasClass('mixed')) {
currentclass = 'mixed';
}
if ($(this).hasClass('checked')) {
currentclass = 'checked';
}
switch (currentclass) {
case 'mixed':
default:
$('.bitnum_' + bit).removeClass('mixed checked unchecked').addClass('checked')
break;
case 'unchecked':
$(this).removeClass('mixed checked unchecked').addClass('checked')
break;
case 'checked':
if ($('.checked.bitnum_' + bit).length == 2) {
$(this).removeClass('mixed checked unchecked').addClass('unchecked')
}
else {
alert("admin::user:mask: vous devez cocher au moins une case pour chaque status");
return;
}
break;
}
var left = $('.bitnum_' + bit + '.bit_left');
var right = $('.bitnum_' + bit + '.bit_right');
var maskform = $('#masks_dialog form');
var vand_and = $('input[name="vand_and"]', maskform);
var vand_or = $('input[name="vand_or"]', maskform);
var vxor_and = $('input[name="vxor_and"]', maskform);
var vxor_or = $('input[name="vxor_or"]', maskform);
var newbit_vand_and = newbit_vand_or = newbit_vxor_and = newbit_vxor_or = 0;
if (left.length === 1 && right.length === 1) {
if (left.hasClass('checked') && right.hasClass('unchecked')) {
newbit_vand_and = "1";
newbit_vand_or = "1";
}
else if (left.hasClass('unchecked') && right.hasClass('checked')) {
newbit_vand_and = "1";
newbit_vand_or = "1";
newbit_vxor_and = "1";
newbit_vxor_or = "1";
}
vand_and.val(vand_and.val().substr(0, 31 - bit) + newbit_vand_and + vand_and.val().substr(31 + 1 - bit));
vand_or.val(vand_or.val().substr(0, 31 - bit) + newbit_vand_or + vand_or.val().substr(31 + 1 - bit));
vxor_and.val(vxor_and.val().substr(0, 31 - bit) + newbit_vxor_and + vxor_and.val().substr(31 + 1 - bit));
vxor_or.val(vxor_or.val().substr(0, 31 - bit) + newbit_vxor_or + vxor_and.val().substr(31 + 1 - bit));
}
});
}
});
});
function save_masks() {
var cont = $('#masks_dialog');
var maskform = $('#masks_dialog form');
var base_id = $('input[name="base_id"]', maskform).val();
var users = $('input[name="users"]', maskform).val();
var vand_and = $('input[name="vand_and"]', maskform).val();
var vand_or = $('input[name="vand_or"]', maskform).val();
var vxor_and = $('input[name="vxor_and"]', maskform).val();
var vxor_or = $('input[name="vxor_or"]', maskform).val();
$.ajax({
type: 'POST',
url: '../admin/users/rights/masks/apply/',
data: {
users: users,
base_id: base_id,
vand_and: vand_and,
vand_or: vand_or,
vxor_and: vxor_and,
vxor_or: vxor_or
},
success: function (data) {
$('#masks_dialog').dialog('close');
}
});
}
function save_quotas() {
var cont = $('#quotas_dialog');
var base_id = $('input[name="base_id"]', cont).val();
var users = $('input[name="users"]', cont).val();
var droits = $('input[name="droits"]', cont).val();
var restes = $('input[name="restes"]', cont).val();
var switch_quota = $('.switch_quota', cont);
if (switch_quota.hasClass('mixed'))
return;
var quota = 0;
if (switch_quota.hasClass('checked'))
quota = 1;
$.ajax({
type: 'POST',
url: '../admin/users/rights/quotas/apply/',
data: {
act: "APPLYQUOTAS",
users: users,
base_id: base_id,
quota: quota,
droits: droits,
restes: restes
},
success: function (data) {
$('#quotas_dialog').dialog('close');
}
});
}
function save_time() {
var cont = $('#time_dialog');
var dmin = $('input[name="dmin"]', cont).val();
var dmax = $('input[name="dmax"]', cont).val();
var users = $('input[name="users"]', cont).val();
var base_id = $('input[name="base_id"]', cont).val();
var sbas_id = $('input[name="sbas_id"]', cont).val();
var switch_time = $('.switch_time', cont);
if (switch_time.hasClass('mixed'))
return;
var limit = 0;
if (switch_time.hasClass('checked'))
limit = 1;
$.ajax({
type: 'POST',
url: '../admin/users/rights/time/apply/',
data: {
users: users,
base_id: base_id,
sbas_id: sbas_id,
limit: limit,
dmin: dmin,
dmax: dmax
},
success: function (data) {
$('#time_dialog').dialog('close');
}
});
}
function check_uncheck_menu(right, sbas_id, el) {
var top = el.offset().top;
var left = el.offset().left + 16;
$('body').append('<div id="users_check_uncheck" style="position:absolute;top:' + top + 'px;left:' + left + 'px;">' +
'<div class="checker" >' +
language.check_all +
'<input type="hidden" name="sbas_id" value="' + sbas_id + '"/>' +
'<input type="hidden" name="right" value="' + right + '"/>' +
'</div>' +
'<div class="unchecker">' +
language.uncheck_all +
'<input type="hidden" name="sbas_id" value="' + sbas_id + '"/>' +
'<input type="hidden" name="right" value="' + right + '"/>' +
'</div></div>');
$('#users_check_uncheck div').hover(
function () {
$(this).addClass('hovered');
},
function () {
$(this).removeClass('hovered');
}
);
$('#users_check_uncheck div.checker').bind('click', function (event) {
event.stopPropagation();
event.preventDefault();
users_check(true, $('input[name="sbas_id"]', $(this)).val(), $('input[name="right"]', $(this)).val());
$('#users_check_uncheck').remove();
});
$('#users_check_uncheck div.unchecker').bind('click', function (event) {
event.stopPropagation();
event.preventDefault();
users_check(false, $('input[name="sbas_id"]', $(this)).val(), $('input[name="right"]', $(this)).val());
$('#users_check_uncheck').remove();
});
}
function users_check(bool, sbas_id, right) {
var newclass;
if (bool) {
newclass = "checked";
}
else {
newclass = "unchecked";
}
$('.inside_sbas_' + sbas_id + '.' + right + ':visible').each(function (i, n) {
user_click_box(null, $(n), newclass);
});
}
}
ini_edit_usrs();
$('div.tabs').tabs();
$('#users_rights_form button#reset_rights').bind('click', function () {
if (confirm("{{ 'Are you sure you want to reset rights?' | trans }}")) {
var users = $('#users_rights_form input[name="users"]').val();
$.ajax({
type: 'POST',
url: '/admin/users/rights/reset/',
dataType: 'json',
data: {
users: users
},
success: function (data) {
if (!data.error) {
if (users === '') {
return false;
}
$('#right-ajax').empty().addClass('loading');
p4.users.sel = [];
$.ajax({
type: 'GET',
url: '/admin/users/rights/',
data: {
users: users
},
success: function (data) {
$('#right-ajax').removeClass('loading').html(data);
}
});
return false;
} else {
alert(data.message);
}
}
});
}
});
$('body').click(function() {
$('.users_check_line_wrap').addClass('hide');
});
$('.select-all-line-btn').click(function (event) {
event.stopPropagation();
var top = $(this).offset().top - 50;
var left = $(this).offset().left + 60;
$('.users_check_line_wrap').addClass('hide');
$(this).closest('.select-all-line').find('.users_check_line_wrap').removeClass('hide').css('top', +top+'px');
});
$('.check_left_right').click(function () {
$(this).closest('.right-items').find('.left-right div').show().removeClass('unchecked').addClass('checked');
$(this).closest('.right-items').find('.left-right input').val(1);
$('.users_check_line_wrap').addClass('hide');
});
$('.check-all_right').click(function () {
$(this).closest('.right-items').find('div').show().removeClass('unchecked').addClass('checked');
$(this).closest('.right-items').find('input').val(1);
$('.users_check_line_wrap').addClass('hide');
});
});
require([
"jquery",
"common/geonames"
], function ($, geonames) {
var geocompleter = geonames.init($('#user_infos_tab input.geoname_field'), {
"server": "{{ app['geonames.server-uri'] }}",
"limit": 40
});
});
</script>