Merge 3.5.7

This commit is contained in:
Romain Neutron
2012-01-03 15:26:07 +01:00
28 changed files with 43087 additions and 42105 deletions

View File

@@ -84,6 +84,12 @@ class Users implements ControllerProviderInterface
{
$rights = new UserHelper\Edit($app['Core']);
$rights->apply_rights();
if ($app['request']->get('template'))
{
$rights->apply_template();
}
$rights->apply_infos();
$datas = array('error' => false);

View File

@@ -176,13 +176,19 @@ class Edit extends \Alchemy\Phrasea\Helper\Helper
}
}
$query = new User_Query($appbox);
$templates = $query
->only_templates(true)
->execute()->get_results();
$this->users_datas = $rs;
$out = array(
'datas' => $this->users_datas,
'users' => $this->users,
'users_serial' => implode(';', $this->users),
'base_id' => $this->base_id,
'main_user' => null
'main_user' => null,
'templates'=>$templates
);
if (count($this->users) == 1)

View File

@@ -55,8 +55,8 @@ class Manage extends \Alchemy\Phrasea\Helper\Helper
, 'like_value' => $request->get('like_value')
, 'sbas_id' => $request->get('sbas_id')
, 'base_id' => $request->get('base_id')
, 'srt' => $request->get("srt")
, 'ord' => $request->get("ord")
, 'srt' => $request->get("srt", User_Query::SORT_CREATIONDATE)
, 'ord' => $request->get("ord", User_Query::ORD_DESC)
, 'per_page' => $results_quantity
, 'offset_start' => $offset_start
);
@@ -64,14 +64,14 @@ class Manage extends \Alchemy\Phrasea\Helper\Helper
$user = $this->getCore()->getAuthenticatedUser();
$query = new \User_Query($appbox);
if (is_array($request->get('base_id')))
$query->on_base_ids($request->get('base_id'));
elseif (is_array($request->get('sbas_id')))
$query->on_sbas_ids($request->get('sbas_id'));
if (is_array($this->query_parms['base_id']))
$query->on_base_ids($this->query_parms['base_id']);
elseif (is_array($this->query_parms['sbas_id']))
$query->on_sbas_ids($this->query_parms['sbas_id']);
$this->results = $query->sort_by($request->get("srt"), $request->get("ord"))
->like($request->get('like_field'), $request->get('like_value'))
->get_inactives($request->get('inactives'))
$this->results = $query->sort_by($this->query_parms["srt"], $this->query_parms["ord"])
->like($this->query_parms['like_field'], $this->query_parms['like_value'])
->get_inactives($this->query_parms['inactives'])
->include_templates(true)
->on_bases_where_i_am($user->ACL(), array('canadmin'))
->limit($offset_start, $results_quantity)

View File

@@ -322,6 +322,9 @@ class Session_Handler
*/
public function open_phrasea_session()
{
if (!$this->phrasea_session instanceof Session_Phrasea)
throw new \Exception('No phrasea session available');
$this->phrasea_session->open();
return $this;

View File

@@ -893,6 +893,11 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
{
return $this->is_template;
}
public function is_special()
{
return in_array($this->login, array('invite', 'autoregister'));
}
public function get_template_owner()
{

View File

@@ -479,6 +479,15 @@ class databox_status
$conn = connection::getPDOConnection();
$status = '0';
if(substr($stat1, 0, 2) === '0x')
{
$stat1 = self::hex2bin(substr($stat1, 2));
}
if(substr($stat2, 0, 2) === '0x')
{
$stat2 = self::hex2bin(substr($stat2, 2));
}
$sql = 'select bin(0b' . trim($stat1) . ' & 0b' . trim($stat2) . ') as result';
@@ -501,6 +510,15 @@ class databox_status
$status = '0';
if(substr($stat1, 0, 2) === '0x')
{
$stat1 = self::hex2bin(substr($stat1, 2));
}
if(substr($stat2, 0, 2) === '0x')
{
$stat2 = self::hex2bin(substr($stat2, 2));
}
$sql = 'select bin(0b' . trim($stat1) . ' & ~0b' . trim($stat2) . ') as result';
$stmt = $conn->prepare($sql);
@@ -522,6 +540,15 @@ class databox_status
$status = '0';
if(substr($stat1, 0, 2) === '0x')
{
$stat1 = self::hex2bin(substr($stat1, 2));
}
if(substr($stat2, 0, 2) === '0x')
{
$stat2 = self::hex2bin(substr($stat2, 2));
}
$sql = 'select bin(0b' . trim($stat1) . ' | 0b' . trim($stat2) . ') as result';
$stmt = $conn->prepare($sql);
@@ -539,17 +566,24 @@ class databox_status
public static function dec2bin($status)
{
$status = (string) $status;
if(!ctype_digit($status))
{
throw new \Exception('Non-decimal value');
}
$conn = connection::getPDOConnection();
$status = '0';
$sql = 'select bin(' . ((int) $status) . ') as result';
$sql = 'select bin(' . $status . ') as result';
$stmt = $conn->prepare($sql);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$status = '0';
if ($row)
{
$status = $row['result'];
@@ -560,17 +594,28 @@ class databox_status
public static function hex2bin($status)
{
$status = (string) $status;
if(substr($status, 0, 2) === '0x')
{
$status = substr($status, 2);
}
if(!ctype_xdigit($status))
{
throw new \Exception('Non-hexadecimal value');
}
$conn = connection::getPDOConnection();
$status = '0';
$sql = 'select bin(0x' . trim($status) . ') as result';
$sql = 'select BIN( CAST( 0x'.trim($status).' AS UNSIGNED ) ) as result';
$stmt = $conn->prepare($sql);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$status = '0';
if ($row)
{
$status = $row['result'];

View File

@@ -161,7 +161,10 @@ class gatekeeper
break;
case 'lightbox':
$this->token_access();
// phrasea::redirect('/login/?redirect=' . $_SERVER['REQUEST_URI']);
if(!$session->is_authenticated())
{
phrasea::redirect('/login/?redirect=' . $_SERVER['REQUEST_URI']);
}
break;
}
}

View File

@@ -46,7 +46,7 @@ class module_report_sqlfilter
$coll_filter = array();
foreach (explode(',', $list_coll_id) as $val)
{
$coll_filter [] = " position('," . (int) $val . ",' in concat(',' ,coll_list, ',')) > 0 ";
$coll_filter [] = " position('," . phrasea::collFromBas($val) . ",' in concat(',' ,coll_list, ',')) > 0 ";
}
$ret['sql'] = implode(' OR ', $coll_filter);
@@ -207,7 +207,7 @@ class module_report_sqlfilter
{
foreach ($tab as $val)
{
$coll_filter[] = " position('," . (int) $val . ",' in concat(',' ,coll_list, ',')) > 0 ";
$coll_filter[] = " position('," . phrasea::collFromBas($val) . ",' in concat(',' ,coll_list, ',')) > 0 ";
}
$this->filter['collection'] = array('sql' => implode(' OR ', $coll_filter), 'params' => array());
}
@@ -226,7 +226,7 @@ class module_report_sqlfilter
foreach ($tab as $val)
{
$dl_coll_filter[] = "record.coll_id = :record_fil" . $n;
$params[":record_fil" . $n] = $val;
$params[":record_fil" . $n] = phrasea::collFromBas($val);
$n++;
}
$this->filter['record'] = array('sql' => implode(' OR ', $dl_coll_filter), 'params' => $params);

View File

@@ -14,6 +14,7 @@ class databox_statusTest extends PhraseanetPHPUnitAbstract
*/
protected $object;
protected $databox;
protected static $need_records = 1;
public function setUp()
{
@@ -119,10 +120,10 @@ class databox_statusTest extends PhraseanetPHPUnitAbstract
*/
public function testOperation_and()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
$this->assertEquals('0', databox_status::operation_and('0x001','0x010'));
$this->assertEquals('1', databox_status::operation_and('01','11'));
$this->assertEquals('0', databox_status::operation_and('01','10'));
$this->assertEquals('10', databox_status::operation_and('11','10'));
}
/**
@@ -130,10 +131,11 @@ class databox_statusTest extends PhraseanetPHPUnitAbstract
*/
public function testOperation_and_not()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
$this->assertEquals('0', databox_status::operation_and_not('0x001','0x011'));
$this->assertEquals('0', databox_status::operation_and_not('01','11'));
$this->assertEquals('1', databox_status::operation_and_not('01','10'));
$this->assertEquals('1', databox_status::operation_and_not('11','10'));
$this->assertEquals('10', databox_status::operation_and_not('10','01'));
}
/**
@@ -141,10 +143,8 @@ class databox_statusTest extends PhraseanetPHPUnitAbstract
*/
public function testOperation_or()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
$this->assertEquals('10001', databox_status::operation_or('0x001','0x011'));
$this->assertEquals('11', databox_status::operation_or('01','11'));
}
/**
@@ -152,21 +152,31 @@ class databox_statusTest extends PhraseanetPHPUnitAbstract
*/
public function testDec2bin()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
$this->assertEquals('1010', databox_status::dec2bin('10'));
try
{
}
catch(Exception $e)
{
}
}
/**
* @todo Implement testHex2bin().
*/
public function testHex2bin()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
$this->assertEquals('10100001', databox_status::hex2bin('0x0A1'));
$this->assertEquals('10100001', databox_status::hex2bin('0A1'));
try
{
databox_status::hex2bin('G1');
$this->fail('Should raise an exception');
}
catch(Exception $e)
{
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -106,35 +106,55 @@
</script>
<div>
<div class="tabs PNB10" style="bottom:40px;">
<div class="tabs PNB" style="bottom:40px;">
<ul>
<li>
<a href="#rights_tab">Droits</a>
<a href="#rights_tab">{% trans 'Rights' %}</a>
</li>
{% if main_user is not empty and main_user.is_template is empty %}
{% if main_user is not empty and main_user.is_template is empty and main_user.is_special is empty %}
<li>
<a href="#user_infos_tab">Fiche</a>
<a href="#user_infos_tab">{% trans 'Infos' %}</a>
</li>
{% endif %}
</ul>
<div id="rights_tab" class="PNB" style="top:40px;">
<div class="PNB10" style="height:30px;bottom:auto;">
<h1>
{% if main_user is not empty %}
{% set display_name = main_user.get_display_name() %}
{% trans %}
Edition des droits de {{ display_name }}
{% endtrans %}
{% else %}
{% set number = users|length %}
{% trans %}
Edition des droits de {{ number }} utilisateurs
{% endtrans %}
{% endif %}
</h1>
</div>
<form id="users_rights_form" method="post" action="/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.is_special is not empty %}
{% if main_user.get_login() == 'invite' %}
{% trans 'Reglages:: reglages d acces guest' %}
{% elseif main_user.get_login() == 'autoregister' %}
{% trans 'Reglages:: reglages d inscitpition automatisee' %}
{% endif %}
{% else %}
{% set display_name = main_user.get_display_name() %}
{% trans %}
Edition des droits de {{ display_name }}
{% endtrans %}
{% endif %}
{% else %}
{% set number = users|length %}
{% trans %}
Edition des droits de {{ number }} utilisateurs
{% endtrans %}
{% endif %}
</td>
<td style="text-align:right;">
{% trans 'Apply a template' %}
<select name="template">
<option value="">{% trans 'boutton::choisir' %}</option>
{% for template in templates %}
<option value="{{ template.get_id() }}">{{ template.get_display_name() }}</option>
{% endfor %}
</select>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" style="table-layout: auto;width:820px;height:67px;bottom:auto;top:50px;" class="PNB10">
<thead>
<tr>
@@ -402,7 +422,7 @@
</form>
</div>
{% if main_user is not empty and main_user.is_template is empty %}
{% if main_user is not empty and main_user.is_template is empty and main_user.is_special is empty %}
<div id="user_infos_tab" class="PNB" style="top:40px;">
<form id="user_infos_form">
<table>
@@ -521,6 +541,7 @@
{% endif %}
</div>
<div class="PNB10" style="top:auto;height:20px;">
<button class="users_rights_valid">{% trans 'boutton::valider' %}</button>
<button class="users_rights_valid">{% trans 'boutton::valider' %}</button>
<a href="/admin/users/search/" class="users_rights_cancel">{% trans 'boutton::retour' %}</a>
</div>
</div>

View File

@@ -34,6 +34,13 @@
</span>
</a>
<input type="hidden" value="{{invite_user.get_id()}}" name="invite_user_id"/>
<a class="autoregister_modifier" href="#">
<span>
{% trans 'Reglages:: reglages d inscitpition automatisee' %}
</span>
</a>
<input type="hidden" value="{{autoregister_user.get_id()}}" name="autoregister_user_id"/>
</p>
<form id="users_page_search" method="post" action="/admin/users/search/" target="_self">
<p class="admin_head_opts">

View File

@@ -620,9 +620,7 @@
<button class="default_action">
<img src="/skins/icons/ccoch0.gif"/>&nbsp;
</button>
<button class="trigger">
oui
</button>
<button class="trigger">{% trans 'Select' %}</button>
</span>
<div class="submenu">
<button class="answer_selector all_selector">
@@ -651,7 +649,7 @@
<button class="default_action TOOL_disktt_btn results_window">
<img src="/skins/prod/000000/images/disktt_history.gif"/> {% trans 'action : exporter' %}
</button>
<button class="trigger">Select an action</button>
<button class="trigger">{% trans 'Select an action' %}</button>
</span>
<div class="submenu">
<button class="TOOL_print_btn results_window">
@@ -692,7 +690,7 @@
</button>
{% endif %}
{% endfor %}
<button class="trigger">Operations</button>
<button class="trigger">{% trans 'Select an action' %}</button>
</span>
<div class="submenu" >
{% for action in actions %}
@@ -721,7 +719,7 @@
<img src="/skins/prod/000000/images/pushdoc_history.gif"/>
{% trans 'action : push' %}
</button>
<button class="trigger">Select an action</button>
<button class="trigger">{% trans 'Select an action' %}</button>
</span>
<div class="submenu">
<button class="TOOL_bridge_btn results_window">
@@ -748,7 +746,7 @@
<img src="/skins/icons/door.png"/>
{% trans 'action : bridge' %}
</button>
<button class="trigger">Select an action</button>
<button class="trigger">{% trans 'Select an action' %}</button>
</span>
<div class="submenu">
<button class="TOOL_publish_btn results_window">

View File

@@ -78,6 +78,7 @@ function ini_edit_usrs(){
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()
};
$.ajax({
@@ -94,6 +95,17 @@ function ini_edit_usrs(){
});
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(){

View File

@@ -213,33 +213,6 @@ if ($parm['flush_cache'] && $registry->get('GV_cache_server_type') !== 'nocache'
</div>
<h1><?php echo _('setup:: Reglages generaux') ?></h1>
<br>
<?php
try
{
$invite = new User_Adapter('invite', $appbox);
}
catch (Exception $e)
{
$invite = User_Adapter::create($appbox, 'invite', 'invite', '', false);
}
?>
<div><a href="editusr.php?ord=asc&p2=<?php echo $invite->get_id() ?>"><?php echo _('Reglages:: reglages d acces guest'); ?></a></div>
<?php
try
{
$autoregister = new User_Adapter('autoregister', $appbox);
}
catch (Exception $e)
{
$invite = User_Adapter::create($appbox, 'autoregister', 'autoregister', '', false);
}
if ($autoregister !== false)
{
?>
<div><a href="editusr.php?ord=asc&p2=<?php echo $autoregister->get_id() ?>"><?php echo _('Reglages:: reglages d inscitpition automatisee'); ?></a></div>
<?php
}
?>
<h2><?php echo _('setup::Votre configuration') ?></h2>
<div>
<div style="position:relative;float:left;width:400px;">

View File

@@ -362,7 +362,7 @@ $(document).ready(function(){
});
return false;
});
$('#users_page .invite_modifier').live('click', function(){
$('#users_page .invite_modifier, #users_page .autoregister_modifier').live('click', function(){
var users = $(this).next('input').val();
if($.trim(users) === '')

View File

@@ -1,15 +1,21 @@
var p4 = p4 || {};
$(document).ready(function(){
$('input.input-button').hover(
function(){$(this).addClass('hover');},
function(){$(this).removeClass('hover');}
);
var locale = $.cookie('locale');
p4.lng = locale !== null ? locale.split('_').reverse().pop() : 'en';
var jq_date = p4.lng = locale !== null ? locale.split('_').reverse().pop() : 'en';
if(jq_date == 'en')
{
jq_date = 'en-GB';
}
$.datepicker.setDefaults({showMonthAfterYear: false});
$.datepicker.setDefaults($.datepicker.regional[p4.lng]);
$.datepicker.setDefaults($.datepicker.regional[jq_date]);
$('a.infoDialog,div.infoDialog').live('click',function(event){
infoDialog($(this));

View File

@@ -113,8 +113,8 @@ if ($parm["act"] == "START" || $parm["act"] == "WORK")
$status = databox_status::operation_or($status, $msko[$basrec[0]]);
$record->set_binary_status($status);
$session->get_logger($databox)
->log($record, Session_Logger::EVENT_STATUS, '', '');
$session->get_logger($record->get_databox())
->log($record, Session_Logger::EVENT_STATUS, '', '');
$maj++;
unset($record);

View File

@@ -880,21 +880,21 @@ $(document).ready(function(){
$('#loader_bar').stop().animate({
width:'70%'
},450);
p4.preview ={
p4.preview = {
open:false,
current:false
};
p4.currentViewMode='classic';
p4.nbNoview=0;
p4.reg_delete=true;
p4.lng='';
p4.edit={};
p4.thesau={
p4.currentViewMode = 'classic';
p4.nbNoview = 0;
p4.reg_delete = true;
p4.sel = [];
p4.baskSel = [];
p4.edit = {};
p4.thesau = {
tabs:null
};
p4.active_zone=false;
p4.next_bask_scroll= false;
p4.active_zone = false;
p4.next_bask_scroll = false;
$('#backcolorpickerHolder').ColorPicker({
@@ -3249,4 +3249,4 @@ function set_up_feed_box(data)
});
return;
}