Merge remote-tracking branch 'upstream/master' into 20150306-elastic-indexer

Conflicts:
	bin/console
	bower.json
	composer.json
	composer.lock
	lib/Alchemy/Phrasea/Application.php
	lib/Alchemy/Phrasea/Border/Manager.php
	lib/Alchemy/Phrasea/Controller/Api/V1.php
	lib/Alchemy/Phrasea/Core/PhraseaEvents.php
	lib/Alchemy/Phrasea/SearchEngine/SearchEngineOptions.php
	lib/classes/caption/field.php
	lib/classes/record/Interface.php
	templates/web/prod/index.html.twig
	www/skins/prod/000000/prodcolor.css
This commit is contained in:
Nicolas Le Goff
2015-03-06 14:35:29 +01:00
committed by Mathieu Darse
1078 changed files with 7964 additions and 16363 deletions

View File

@@ -213,31 +213,6 @@
{% endif %}
</div>
{# Bandeau de présentation #}
<div class="well well-small action-block">
<h5>{{ 'admin::base:collection: image de presentation :' | trans }}</h5>
{% if collection.getPresentation(bas_id) is not empty %}
<div class="thumbnail" style="width:650px;height:200px">{{ collection.getPresentation(bas_id)| raw }}</div>
{% if app['acl'].get(app['authentication'].getUser()).has_right_on_base(bas_id, 'manage') %}
<form method="post" action="{{ path('admin_collection_delete_banner', { 'bas_id' : bas_id }) }}" style="margin:0;">
<button class="btn btn-danger btn-mini">
<i class="icon-trash icon-white"></i>
{{ 'boutton::supprimer' | trans }}
</button>
</form>
{% endif%}
{% elseif app['acl'].get(app['authentication'].getUser()).has_right_on_base(bas_id, 'manage') %}
<span>{{ 'admin::base:collection: aucun fichier (minilogo, watermark ...)' | trans }}</span>
<form class="fileupload no-ajax" enctype="multipart/form-data" method="post" action="{{ path('admin_collection_submit_banner', { 'bas_id' : bas_id }) }}" style="margin:0;">
<span class="btn btn-success fileinput-button">
<i class="icon-plus icon-white"></i>
<span>{% trans %}Select files...{% endtrans %}</span>
<input name="newBanner" type="file" accept="image/*" />
</span>
</form>
{% endif %}
</div>
{# Invalid file type modal shown when uploaded logo file is invalid #}
<div id="invalid-modal" class="modal hide fade">
<div class="modal-header">

View File

@@ -427,23 +427,24 @@ function desactiv4VS()
if( o2.length > 0 )
{
var optionLength = o2.find("options").length;
if ( optionLength > 1) {
var optionLength = o2.find("option").length;
var index = o2.prop("selectedIndex");
if ((o2.prop("selectedIndex")+1) != optionLength) {
if ( optionLength > 1) {
if ((index+1) == optionLength) {
activer_bout('bout_desc',false);
} else {
activer_bout('bout_desc',true);
}
if (o2.prop("selectedIndex")!=0 && optionLength>1) {
if (index == 0 && optionLength>1) {
activer_bout('bout_mont',false);
} else {
activer_bout('bout_mont',true);
}
} else {
activer_bout('bout_desc',true);
activer_bout('bout_mont',true);
activer_bout('bout_desc',false);
activer_bout('bout_mont',false);
}
}
@@ -461,7 +462,7 @@ function activ4VS()
}
desactiv4VS();
activer_bout('bout_supp',false);
activer_bout('bout_supp',true);
}
// supprime une valsug
@@ -516,7 +517,7 @@ function supprimer()
}
if(o2.prop("selectedIndex")<0) {
activer_bout('bout_supp',true);
activer_bout('bout_supp',false);
}
desactiv4VS();
@@ -766,7 +767,11 @@ function activer_bout(idBout,val)
o = $("#"+idBout);
if( o.length > 0 ) {
o.attr("disabled", val);
if (!val) {
o.attr("disabled", true);
} else {
o.removeAttr("disabled");
}
}
}

View File

@@ -1,36 +1,36 @@
{% macro tooltip_connected_users(row) %}
{% set user = row.getUser() %}
<span id="tooltip-usr">
<table id="tabledescexp" cellpadding="0" cellspacing="0">
<span id='tooltip-usr'>
<table id='tabledescexp' cellpadding='0' cellspacing='0'>
<tr>
<td class="tooltip-title" colspan="2" valign="center" >usr_id : {{ user.getId() }}</td>
<td class='tooltip-title' colspan='2' valign='center' >usr_id : {{ user.getId() }}</td>
</tr>
<tr>
<td colspan="2" style="height: 10px;"></td>
<td colspan='2' style='height: 10px;'></td>
</tr>
<tr>
<td colspan="2"><strong>{{ 'admin::compte-utilisateur nom' | trans }} : </strong>{{ user.getDisplayName() }}</td>
<td colspan='2'><strong>{{ 'admin::compte-utilisateur nom' | trans }} : </strong>{{ user.getDisplayName() }}</td>
</tr>
<tr>
<td colspan="2"><strong>{{ 'admin::compte-utilisateur societe' | trans }} : </strong>{{ user.getCompany() }}</td>
<td colspan='2'><strong>{{ 'admin::compte-utilisateur societe' | trans }} : </strong>{{ user.getCompany() }}</td>
</tr>
<tr>
<td colspan="2"><strong>{{ 'admin::compte-utilisateur telephone' | trans }} : </strong>{{ user.getPhone() }}</td>
<td colspan='2'><strong>{{ 'admin::compte-utilisateur telephone' | trans }} : </strong>{{ user.getPhone() }}</td>
</tr>
<tr>
<td colspan="2"><strong>{{ 'admin::compte-utilisateur email' | trans }} : </strong>{{ user.getEmail() }}</td>
<td colspan='2'><strong>{{ 'admin::compte-utilisateur email' | trans }} : </strong>{{ user.getEmail() }}</td>
</tr>
<tr>
<td colspan="2"><strong>{{ 'admin::monitor: bases sur lesquelles l\'utilisateur est connecte :' | trans }} :</strong></td>
<td colspan='2'><strong>{{ 'admin::monitor: bases sur lesquelles l\'utilisateur est connecte :' | trans }} :</strong></td>
</tr>
{% for databox in app['acl'].get(user).get_granted_sbas() %}
<tr>
<td colspan="2" style="overflow:hidden;" >{{ databox.get_label(app['locale']) }}</td>
<td colspan='2' style='overflow:hidden;' >{{ databox.get_label(app['locale']) }}</td>
</tr>
{% endfor %}
<tr>
<td colspan="2" valign="center" >
<td colspan='2' valign='center' >
<strong>{{ row.getPlatform() }} / {{ row.getBrowserName() }} - {{ row.getBrowserVersion() }}</strong><br/>
{% if row.getToken() %}
{{ 'Session persistente' | trans }}
@@ -39,7 +39,6 @@
</tr>
</table>
</span>
{% endmacro %}
<div class="tableTitle">{{ 'admin::utilisateurs: utilisateurs connectes' | trans }}</div>
@@ -70,10 +69,6 @@
<td class="colTitle" >{{ 'admin::monitor: module comparateur' | trans }}</td>
<td class="colValue" >{{ data['applications'][6] }}</td>
</tr>
<tr>
<td class="colTitle" >{{ 'admin::monitor: module validation' | trans }}</td>
<td class="colValue" >{{ data['applications'][7] }}</td>
</tr>
{% if data['applications'][0] != 0 %}
<tr>
<td class="colTitle" >{{ 'admin::monitor: total des utilisateurs uniques :' | trans }}</td>
@@ -99,7 +94,7 @@
<tbody>
{% for session in data['sessions'] %}
{% set row = session['session'] %}
<tr title="{{ _self.tooltip_connected_users(row) | e }}" class="{% if loop.index is odd %}odd{% else %}even{% endif %} usrTips" id="TREXP_{{ row.getId()}}">
<tr title="{{ _self.tooltip_connected_users(row) | raw }}" class="{% if loop.index is odd %}odd{% else %}even{% endif %} usrTips" id="TREXP_{{ row.getId()}}">
{% if row.getId() == app['session'].get('session_id') %}
<td style="color:#ff0000"><i>{{ row.getUser().getDisplayName() }}</i></td>
@@ -126,7 +121,11 @@
<script type="text/javascript">
$(document).ready(
function(){
$('.usrTips').tooltip();
$('.usrTips').tooltip({
content: function() {
return $( this ).attr( "title" );
}
});
}
);
</script>

View File

@@ -559,56 +559,557 @@
</div>
</div>
<script type="text/javascript" language="javascript" src="{{ path('minifier', { 'f' : 'assets/geonames-server-jquery-plugin/jquery.geonames.js,scripts/common/geonames.js' }) }}"></script>
<script type="text/javascript">
$(document).ready(function(){
ini_edit_usrs();
geonames.init($('#user_infos_tab input.geoname_field'), {
"server": "{{ app['geonames.server-uri'] }}",
"limit": 40
});
$(document).ready(function() {
$('div.tabs').tabs();
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;
});
$('#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();
$(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/reset/',
dataType:'json',
url: '../admin/users/rights/time/sbas/',
data: {
users : users
users: $('#users_rights_form input[name="users"]').val(),
sbas_id: sbas_id
},
success: function(data){
if(!data.error) {
if(users === '') {
return false;
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');
}
$('#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);
}
$(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);
}
}
});
}
});
});
define([
"jquery",
"common/geonames"
], function ($, geonames) {
geonames.init($('#user_infos_tab input.geoname_field'), {
"server": "{{ app['geonames.server-uri'] }}",
"limit": 40
});
});
</script>

View File

@@ -96,7 +96,7 @@
</ul>
</ul>
<% _.each(field.labels, function(value, code) { %>
<input type="text" value="<%= value %>" id="label_<%= code %>" class="input-block-level input-label" <%= code === 'fr' ? '' : 'style="display:none"'%> >
<input type="text" value="<%= value %>" id="label_<%= code %>" class="input-block-level input-label" <%= code === lng ? '' : 'style="display:none"'%> >
<% }); %>
</td>
</tr>

View File

@@ -15,7 +15,7 @@
{% block javascript %}
{% include "common/templates.html.twig" %}
{# note: Tinymce must be include here without minify else URL resolution for tinymce plugins will fail #}
<script type="text/javascript" src="/assets/tinymce/tinymce.js"></script>
<script type="text/javascript" src="/assets/tinymce/tinymce.min.js"></script>
<script type="text/javascript" src="{{ path('minifier', { 'g' : 'admin' }) }}"></script>
<script type="text/javascript">
var p4 = p4 || {};
@@ -81,7 +81,7 @@
<div id="quotas_dialog"></div>
<div id="masks_dialog"></div>
<div id="time_dialog"></div>
<div id="user_add_dialog" title="{{ 'Ajouter un nouvel utilisateur' | trans }}">
<div id="user_add_dialog" title="{{ 'Ajouter un nouvel utilisateur' | trans }}" style="display:none">
<form>
<label for="new_user_mail">{{ 'Adresse email du nouvel utilisateur' | trans }}</label>
<input id="new_user_mail" type="text" name="value" />

View File

@@ -42,12 +42,12 @@
{% set statusbit = statusStructure.getStatus(bit) %}
<td>
{% if statusbit['img_off'] %}
<img title='{{ statusbit['labels_off_i18n'][app['locale']] }}' src='{{ statusbit['img_off'] }}' />
<img class="status-img" title='{{ statusbit['labels_off_i18n'][app['locale']] }}' src='{{ statusbit['img_off'] }}' />
{% endif %}
{{ statusbit['labels_off_i18n'][app['locale']] }}
/
{% if statusbit['img_on'] %}
<img title='{{ statusbit['labels_on_i18n'][app['locale']] }}' src='{{ statusbit['img_on'] }}' />
<img class="status-img" title='{{ statusbit['labels_on_i18n'][app['locale']] }}' src='{{ statusbit['img_on'] }}' />
{% endif %}
{{ statusbit['labels_on_i18n'][app['locale']] }}
</td>

View File

@@ -53,7 +53,7 @@
<span class="btn btn-success fileinput-button pull-left">
<i class="icon-plus icon-white"></i>
<span>{% trans %}Select files...{% endtrans %}</span>
<input type="file" name="image_off" accept="image/*"/>
<input type="file" name="image_off" accept="image/jpg, image/png"/>
</span>
<div class='thumbnail pull-left' style='height:20px;width:20px;margin-left:10px;'>
{% if status['img_off'] is defined and status['img_off'] %}
@@ -117,7 +117,7 @@
<span class="btn btn-success fileinput-button pull-left">
<i class="icon-plus icon-white"></i>
<span>{% trans %}Select files...{% endtrans %}</span>
<input type="file" name="image_on" accept="image/*"/>
<input type="file" name="image_on" accept="image/jpg, image/png"/>
</span>
<div class='thumbnail pull-left' style='height:20px;width:20px;margin-left:10px'>
{% if status['img_on'] is defined and status['img_on'] %}

View File

@@ -250,58 +250,405 @@
</form>
<script type="text/javascript">
$(document).ready(function(){
$.each(p4.users.sel, function(i,n){
var el = $('#user_'+n);
if(el.length > 0)
{
el.addClass('selected');
}
});
$('#users_page_form select[name="per_page"]').bind('change', function(){
$(this).closest('form').submit();
});
$('#users_reset_rights button').bind('click', function(){
var selectedUsers = $("#users tr.selected");
if(selectedUsers.length === 0)
{
alert("{{ 'select at least one user' | trans }}");
return;
}
var users = '';
$.each(selectedUsers, function(i,n){
users += $(n).attr("id").split("_").pop() + ';';
});
if(confirm("{{ 'Are you sure you want delete users rights ?' | trans }}"))
{
$("#users_reset_rights input[name='users']").val(users);
var form = $(this).closest('form');
$.ajax({
url: form.attr("action"),
dataType: 'json',
type : form.attr('method'),
data: form.serializeArray(),
success: function(data){
if(data.error)
{
alert("{{ 'An error occured' | trans }}");
}
else
{
alert("{{ 'users rights have been reseted' | trans }}");
}
$(document).ready(function () {
function users_select_this(n, k) {
if (p4.users.sel.length >= 800) {
alert(language.max_record_selected);
return false;
}
p4.users.sel.push(k);
$(n).addClass('selected');
return true;
}
});
}
});
});
$('#users th.sortable').live('click', function () {
var $this = $(this);
var sort = $('input', $this).val();
if ((sort == $('#users_page_form input[name="srt"]').val())
&& ($('#users_page_form input[name="ord"]').val() == 'asc')) {
var ord = 'desc';
}
else {
var ord = 'asc';
}
$('#users_page_form input[name="srt"]').val(sort);
$('#users_page_form input[name="ord"]').val(ord);
$('#users_page_form').trigger('submit');
}).live('mouseover', function () {
$(this).addClass('hover');
}).live('mouseout', function () {
$(this).removeClass('hover');
});
var buttons = {};
buttons[language.create_user] = function () {
check_new_user(false);
};
buttons[language.annuler] = function () {
$('#user_add_dialog').dialog('close')
};
$('#user_add_dialog').dialog({
buttons: buttons,
modal: true,
resizable: false,
draggable: false,
width: 500
}).dialog('close');
var buttons = {};
buttons[language.create_template] = function () {
check_new_user(true);
};
buttons[language.annuler] = function () {
$('#template_add_dialog').dialog('close');
};
$('#template_add_dialog').dialog({
buttons: buttons,
modal: true,
resizable: false,
draggable: false,
width: 500
}).dialog('close');
function check_new_user(is_template) {
var container = is_template ? $('#template_add_dialog') : $('#user_add_dialog');
$('#new_user_loader').show();
$.ajax({
type: 'POST',
url: '../admin/users/create/',
dataType: 'json',
data: {
act: 'CREATENEWUSER',
value: $('input[name="value"]', container).val(),
send_credentials: $('input[name="send_credentials"]', container).is(':checked') ? 1 : 0,
validate_mail: $('input[name="validate_mail"]', container).is(':checked') ? 1 : 0,
template: is_template ? '1' : '0'
},
success: function (data) {
$('.new_user_loader', container).hide();
if (!data.error) {
if (container.data("ui-dialog")) {
container.dialog('close');
}
$('input[name="value"]', container).val('');
$('#right-ajax').empty().addClass('loading');
p4.users.sel = [];
$.ajax({
type: 'POST',
url: '../admin/users/rights/',
data: {
users: data.data
},
success: function (data) {
$('#right-ajax').removeClass('loading').html(data);
}
});
}
else {
alert(data.message);
}
},
error: function () {
alert(language.serverError);
},
timeout: function () {
alert(language.serverTimeout);
}
});
}
$('#users_page .user_adder').live('click', function () {
if ($('#user_add_dialog').data("ui-dialog")) {
$('#user_add_dialog').dialog('open');
}
});
$('#users_page .template_adder').live('click', function () {
if ($('#template_add_dialog').data("ui-dialog")) {
$('#template_add_dialog').dialog('open');
}
});
$('#users_page_form').live('submit', function () {
var datas = $('#users_page_form').serializeArray();
$('#right-ajax').empty().addClass('loading');
$.ajax({
type: 'POST',
url: '../admin/users/search/',
data: datas,
success: function (data) {
$('#right-ajax').removeClass('loading').empty().html(data);
}
});
return false;
});
$('#users_page_search').live('submit', function () {
var datas = $('#users_page_search').serializeArray();
$('#right-ajax').empty().addClass('loading');
$.ajax({
type: 'POST',
url: '../admin/users/search/',
data: datas,
success: function (data) {
$('#right-ajax').removeClass('loading').empty().html(data);
}
});
return false;
});
$('#users_page_form .pager').live('click', function () {
var form = $('#users_page_form');
var current_page = parseInt($('input[name="page"]', form).val());
var perPage = parseInt($('select[name="per_page"]', form).val());
current_page = isNaN(current_page) ? 1 : current_page;
var offset_start = 0;
if ($(this).hasClass('prev')) {
offset_start = (current_page - 2) * perPage;
}
if ($(this).hasClass('first')) {
offset_start = 0;
}
if ($(this).hasClass('next')) {
offset_start = current_page * perPage;
}
if ($(this).hasClass('last')) {
offset_start = (Math.floor(parseInt($('input[name=total_results]').val()) / perPage)) * perPage;
}
$('input[name="offset_start"]', form).val(offset_start);
});
$('#users tbody tr, #users tbody td').live('dblclick', function (evt) {
$('#users_page_form .user_modifier').trigger('click');
});
$('#users tbody tr, #users tbody td').live('click', function (evt) {
if (evt.stopPropagation)
evt.stopPropagation();
evt.cancelBubble = true;
evt.preventDefault();
var el = $(this).closest('tr');
var cont = $('#users');
var k = el.attr('id').split('_').pop();
if (is_shift_key(evt) && $('tr.last_selected', cont).length != 0) {
var lst = $('tr', cont);
var index1 = $.inArray($('tr.last_selected', cont)[0], lst);
var index2 = $.inArray($(el)[0], lst);
if (index2 < index1) {
var tmp = index1;
index1 = (index2 - 1) < 0 ? index2 : (index2 - 1);
index2 = tmp;
}
var stopped = false;
if (index2 != -1 && index1 != -1) {
var exp = 'tr:gt(' + index1 + '):lt(' + (index2 - index1) + ')';
$.each($(exp, cont), function (i, n) {
if (!$(n).hasClass('selected')) {
if (!users_select_this(n, $(n).attr('id').split('_').pop())) {
stopped = true;
return false;
}
}
});
}
if (!stopped && $.inArray(k, p4.users.sel) < 0) {
if (!users_select_this(el, k))
return false;
}
}
else {
if (!is_ctrl_key(evt)) {
if ($.inArray(k, p4.users.sel) < 0) {
p4.users.sel = new Array();
$('tr', cont).removeClass('selected');
if (!users_select_this(el, k))
return false;
}
}
else {
if ($.inArray(k, p4.users.sel) >= 0) {
p4.users.sel = $.grep(p4.users.sel, function (n) {
return (n != k);
});
$(el).removeClass('selected');
}
else {
if (!users_select_this(el, k))
return false;
}
}
}
$('.last_selected', cont).removeClass('last_selected');
$(el).addClass('last_selected');
}).live('mousedown', function (evt) {
if (evt.stopPropagation)
evt.stopPropagation();
evt.cancelBubble = true;
evt.preventDefault();
});
$('#users_apply_template').live('submit', function () {
var users = p4.users.sel.join(';');
if (users === '') {
return false;
}
var $this = $(this);
var template = $('select[name="template_chooser"]', $this).val();
if (template === '') {
return false;
}
dialogUserTemplate(function (reset_before_apply) {
$('#right-ajax').empty().addClass('loading');
p4.users.sel = [];
$.ajax({
type: $this.attr('method'),
url: $this.attr('action'),
data: {
users: users,
template: template,
reset_before_apply: reset_before_apply
},
success: function (data) {
$('#right-ajax').removeClass('loading').html(data);
}
});
});
return false;
});
$('#users_page_form .user_modifier').live('click', function () {
var users = p4.users.sel.join(';');
if (users === '') {
return false;
}
$('#right-ajax').empty().addClass('loading');
p4.users.sel = [];
$.ajax({
type: 'POST',
url: '../admin/users/rights/',
data: {
users: users
},
success: function (data) {
$('#right-ajax').removeClass('loading').html(data);
}
});
return false;
});
$('#users_page_form .user_deleter').live('click', function () {
var users = p4.users.sel.join(';');
if (users === '') {
return false;
}
$('#right-ajax').empty().addClass('loading');
p4.users.sel = [];
$.ajax({
type: 'POST',
url: '../admin/users/delete/',
data: {
users: users
},
success: function (data) {
$('#right-ajax').removeClass('loading').html(data);
}
});
return false;
});
$('#users_page .invite_modifier, #users_page .autoregister_modifier').live('click', function () {
var users = $(this).next('input').val();
if ($.trim(users) === '') {
return false;
}
$('#right-ajax').empty().addClass('loading');
p4.users.sel = [];
$.ajax({
type: 'POST',
url: '../admin/users/rights/',
data: {
users: users
},
success: function (data) {
$('#right-ajax').removeClass('loading').html(data);
}
});
return false;
});
$.each(p4.users.sel, function (i, n) {
var el = $('#user_' + n);
if (el.length > 0) {
el.addClass('selected');
}
});
$('#users_page_form select[name="per_page"]').bind('change', function () {
$(this).closest('form').submit();
});
$('#users_reset_rights button').bind('click', function () {
var selectedUsers = $("#users tr.selected");
if (selectedUsers.length === 0) {
alert("{{ 'select at least one user' | trans }}");
return;
}
var users = '';
$.each(selectedUsers, function (i, n) {
users += $(n).attr("id").split("_").pop() + ';';
});
if (confirm("{{ 'Are you sure you want delete users rights ?' | trans }}")) {
$("#users_reset_rights input[name='users']").val(users);
var form = $(this).closest('form');
$.ajax({
url: form.attr("action"),
dataType: 'json',
type: form.attr('method'),
data: form.serializeArray(),
success: function (data) {
if (data.error) {
alert("{{ 'An error occured' | trans }}");
}
else {
alert("{{ 'users rights have been reseted' | trans }}");
}
}
});
}
});
});
function exportlist()
{