permissions

git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@221 c66351dc-e62f-0410-b875-e3a5c0b9693f
This commit is contained in:
Evgeny Gryaznov 2008-12-08 23:47:40 +00:00
parent ef2a286d3d
commit 2443b4e0a5
17 changed files with 83 additions and 24 deletions

View File

@ -99,7 +99,11 @@ var HtmlGenerationUtils = {
var cellsCount = 2;
var link = servlet+"?thread="+id;
var gen = '<td class="table" style="padding-left:0px; padding-right:0px;">';
gen += HtmlGenerationUtils.popupLink( (cantakenow||!canview) ? link : link+"&viewonly=true", localized[canopen ? 0 : 1], "ImCenter"+id, username, 640, 480, ban);
if(canopen || canview ) {
gen += HtmlGenerationUtils.popupLink( (cantakenow||!canview) ? link : link+"&viewonly=true", localized[canopen ? 0 : 1], "ImCenter"+id, username, 640, 480, ban);
} else {
gen += '<a href="#">' + username + '</a>';
}
gen += '</td><td><img src="'+webimRoot+'/images/free.gif" width="5" height="1" border="0" alt=""></td>';
if( canopen ) {
gen += '<td width="30" align="center">';

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 372 B

File diff suppressed because one or more lines are too long

View File

@ -46,9 +46,9 @@ function expand_var($matches) {
return "$webimroot/styles/$current_style";
} else if($var == 'pagination') {
return generate_pagination($page['pagination']);
} else if($var == 'errors') {
} else if($var == 'errors' || $var == 'harderrors') {
if( isset($errors) && count($errors) > 0 ) {
$result = getlocal("errors.header");
$result = getlocal("$var.header");
foreach( $errors as $e ) {
$result .= getlocal("errors.prefix").$e.getlocal("errors.suffix");
}

View File

@ -124,6 +124,7 @@ page.gen_button.sample=Example
page.gen_button.code.description=<strong>Caution!</strong> Please don't change<br/> the code manually because<br/> we don't guarantee that<br/> it will work!
mail.user.history.subject=Web Messenger: dialog history
mail.user.history.body=Hello, {0}!\n\nYour chat history: \n\n{1}\n--- \nKind Regards,\nWeb Messenger
harderrors.header=<font color="#c13030"><b>Cannot execute:</b><br/><ul>
errors.header=<font color="#c13030"><b>Correct the mistakes:</b><br/><ul>
errors.prefix=<li class="error">
errors.suffix=</li>
@ -265,7 +266,7 @@ page_avatar.intro=You can upload your photo only in JPG, GIF, PNG or TIF image f
page_avatar.title=Upload photo
page_search.intro=Search for chat history of a specified user or a specified phrase in a message.
page_settings.intro=Specify options affecting chat window and common system behavior
permission.admin=System administration: settings, operators management
permission.admin=System administration: settings, operators management, button generation
permission.takeover=Take over chat thread
permission.viewthreads=View another operator's chat thread
permissions.intro=Here you can control operator's permissions

View File

@ -124,6 +124,7 @@ page.gen_button.sample=
page.gen_button.code.description=<strong>Внимание!</strong> При внесении<br/> каких-либо изменений<br/> в этот код работоспособность<br/> кнопки не гарантируется!
mail.user.history.subject=Веб Мессенджер: история диалога
mail.user.history.body=Здраствуйте, {0}!\n\nПо Вашему запросу, высылаем историю: \n\n{1}\n--- \nС уважением,\nВеб Мессенджер
harderrors.header=<font color="#c13030"><b>Невозможно выполнить:</b><br/><ul>
errors.header=<font color="#c13030"><b>Исправьте ошибки:</b><br/><ul>
errors.prefix=<li class="error">
errors.suffix=</li>
@ -265,7 +266,7 @@ page_avatar.intro=
page_avatar.title=Загрузка фотографии
page_search.intro=На данной странице можно осуществить поиск диалогов по имени пользователя или фразе, встречающейся в сообщении.
page_settings.intro=Здесь вы можете задать опции влияющие на отображение чат окна и общее поведение системы
permission.admin=Администрирование системы: настройка, управление операторами
permission.admin=Администрирование системы: настройка, управление операторами, генерация кнопки
permission.takeover=Перехватывать диалоги у других операторов
permission.viewthreads=Просматривать диалоги других операторов в режиме реального времени
permissions.intro=Здесь вы можете ограничить возможности оператора

View File

@ -37,17 +37,33 @@ if( !isset($_GET['token']) ) {
$viewonly = verifyparam( "viewonly", "/^true$/", false);
$forcetake = verifyparam("force", "/^true$/", false);
if( !$viewonly && $thread['istate'] == $state_chatting && $operator['operatorid'] != $thread['agentId'] && $forcetake == false ) {
$page = array(
'user' => topage($thread['userName']), 'agent' => topage($thread['agentName']), 'link' => $_SERVER['PHP_SELF']."?thread=$threadid&amp;force=true"
);
start_html_output();
require('../view/confirm.php');
exit;
if( !$viewonly && $thread['istate'] == $state_chatting && $operator['operatorid'] != $thread['agentId'] ) {
if(!is_capable($can_takeover, $operator)) {
$errors = array("Cannot take over");
start_html_output();
expand("../styles", getchatstyle(), "error.tpl");
exit;
}
if( $forcetake == false ) {
$page = array(
'user' => topage($thread['userName']), 'agent' => topage($thread['agentName']), 'link' => $_SERVER['PHP_SELF']."?thread=$threadid&amp;force=true"
);
start_html_output();
require('../view/confirm.php');
exit;
}
}
if (!$viewonly)
if (!$viewonly) {
take_thread($thread,$operator);
} else if(!is_capable($can_viewthreads, $operator)) {
$errors = array("Cannot view threads");
start_html_output();
expand("../styles", getchatstyle(), "error.tpl");
exit;
}
$token = $thread['ltoken'];
header("Location: $webimroot/operator/agent.php?thread=$threadid&token=$token&level=$remote_level");
@ -61,6 +77,13 @@ if( !$thread || !isset($thread['ltoken']) || $token != $thread['ltoken'] ) {
die("wrong thread");
}
if($thread['agentId'] != $operator['operatorid'] && !is_capable($can_viewthreads, $operator)) {
$errors = array("Cannot view threads");
start_html_output();
expand("../styles", getchatstyle(), "error.tpl");
exit;
}
setup_chatview_for_operator($thread, $operator);
start_html_output();

View File

@ -85,6 +85,7 @@ $page['tabs'] = array(
getlocal("page_agent.tab.avatar") => "",
getlocal("page_agent.tab.permissions") => "$webimroot/operator/permissions.php?op=$opId"
);
$page['currentop'] = topage(get_operator_name($op))." (".$op['vclogin'].")";
start_html_output();
require('../view/avatar.php');

View File

@ -22,7 +22,8 @@ $page = array(
'operator' => topage(get_operator_name($operator)),
'version' => $version,
'localeLinks' => get_locale_links("$webimroot/operator/index.php"),
'showban' => $settings['enableban'] == "1"
'showban' => $settings['enableban'] == "1",
'showadmin' => is_capable($can_administrate, $operator),
);
start_html_output();

View File

@ -54,12 +54,14 @@ if( isset($_POST['login']) && isset($_POST['password']) ) {
if( count($errors) == 0 ) {
if (!$opId) {
create_operator($login,$password,$localname,$commonname,"");
$newop = create_operator($login,$password,$localname,$commonname,"");
header("Location: $webimroot/operator/avatar.php?op=".$newop['operatorid']);
exit;
} else {
update_operator($opId,$login,$password,$localname,$commonname);
header("Location: $webimroot/operator/operators.php");
exit;
}
header("Location: $webimroot/operator/operators.php");
exit;
} else {
$page['formlogin'] = topage($login);
$page['formname'] = topage($localname);

View File

@ -50,6 +50,9 @@ if( !$op ) {
if(count($errors) == 0) {
update_operator_permissions($op['operatorid'],$new_permissions);
if ($opId && $_SESSION['operator'] && $operator['operatorid'] == $opId) {
$_SESSION['operator']['iperm'] = $new_permissions;
}
header("Location: $webimroot/operator/operator.php?op=$opId");
exit;
}
@ -64,6 +67,7 @@ $page['tabs'] = array(
$page['permissionsList'] = get_permission_list();
$page['formpermissions'] = array("");
$page['currentop'] = topage(get_operator_name($op))." (".$op['vclogin'].")";
foreach($permission_ids as $perm => $id) {
if(is_capable($perm,$op)) {

View File

@ -69,7 +69,9 @@ function get_useragent_version($userAgent) {
}
function thread_to_xml($thread,$link) {
global $threadstate_to_string, $threadstate_key, $webim_encoding, $operator, $settings;
global $state_chatting, $threadstate_to_string, $threadstate_key,
$webim_encoding, $operator, $settings,
$can_viewthreads, $can_takeover;
$state = $threadstate_to_string[$thread['istate']];
$result = "<thread id=\"".$thread['threadid']."\" stateid=\"$state\"";
if( $state == "closed" )
@ -80,8 +82,11 @@ function thread_to_xml($thread,$link) {
$threadoperator = $nextagent ? get_operator_name($nextagent)
: ($thread['agentName'] ? $thread['agentName'] : "-");
$result .= " canopen=\"true\"";
if ($thread['agentId'] != $operator['operatorid'] && $thread['nextagent'] != $operator['operatorid']) {
if(!($thread['istate'] == $state_chatting && $thread['agentId'] != $operator['operatorid'] && !is_capable($can_takeover,$operator))) {
$result .= " canopen=\"true\"";
}
if ($thread['agentId'] != $operator['operatorid'] && $thread['nextagent'] != $operator['operatorid']
&& is_capable($can_viewthreads, $operator)) {
$result .= " canview=\"true\"";
}
if ($settings['enableban'] == "1") {

View File

@ -60,7 +60,7 @@
</tr>
</table>
<p>
${errors}
${harderrors}
</p>
</td>
</tr>

View File

@ -30,7 +30,7 @@
</tr><tr><td height="100%" bgcolor="#FED840"><img src='${webimroot}/images/free.gif' width="1" height="1" border="0" alt="" /></td>
<td background="${webimroot}/images/winbg.gif" class="bgcy">
${errors}
${harderrors}
</td><td bgcolor="#E8A400"><img src='${webimroot}/images/free.gif' width="1" height="1" border="0" alt="" /></td>

View File

@ -71,6 +71,12 @@
<tr><td align="right" style="padding-right:16px;"><table cellspacing="0" cellpadding="0" border="0"><tr><?php foreach($page['tabs'] as $k => $v) { if($v) { ?><td class="textform" style="padding: 2px 9px 3px 9px;"><a href="<?php echo $v ?>"><?php echo $k ?></a></td><?php } else { ?><td class="textform" background="<?php echo $webimroot ?>/images/loginbg.gif" style="border-left:1px solid #bbbbbb;border-top:1px solid #bbbbbb;border-right:1px solid #bbbbbb;padding: 2px 9px 3px 9px;"><?php echo $k ?></td><?php }} ?></tr></table></td></tr>
<?php } ?>
<tr><td background='<?php echo $webimroot ?>/images/loginbg.gif'><table cellspacing='0' cellpadding='0' border='0'><tr><td><img src='<?php echo $webimroot ?>/images/logincrnlt.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $webimroot ?>/images/logincrnrt.gif' width='16' height='16' border='0' alt=''></td></tr><tr><td></td><td align='center'><table border='0' cellspacing='0' cellpadding='0'>
<tr>
<td class="formauth" colspan="3">
<b><?php echo $page['currentop'] ?></b>
</td>
</tr>
<tr><td colspan="3" height="15"></td></tr>
<?php if( $page['avatar'] ) { ?>
<tr><td class='formauth'><?php echo getlocal('form.field.avatar.current') ?></td><td width='10'><img width='10' height='1' border='0' alt='' src='<?php echo $webimroot ?>/images/free.gif'></td><td></td></tr><tr><td height='2' colspan='3'></td></tr><tr><td>

View File

@ -46,17 +46,22 @@
<table cellspacing="0" cellpadding="0" border="0">
<?php if( $page['showadmin'] ) { ?>
<tr><td width='20' valign='top'><img src='<?php echo $webimroot ?>/images/lidiv.gif' width='5' height='45' border='0' alt=''></td><td valign='top' class='text'><a href='<?php echo $webimroot ?>/operator/operators.php'><?php echo getlocal('leftMenu.client_agents') ?></a><br><img src='<?php echo $webimroot ?>/images/free.gif' width='1' height='10' border='0' alt=''><br><?php echo getlocal('admin.content.client_agents') ?><br></td></tr><tr><td colspan='2' height='20'></td></tr>
<?php } ?>
<tr><td width='20' valign='top'><img src='<?php echo $webimroot ?>/images/lidiv.gif' width='5' height='45' border='0' alt=''></td><td valign='top' class='text'><a href='<?php echo $webimroot ?>/operator/users.php'><?php echo getlocal('topMenu.users') ?></a><br><img src='<?php echo $webimroot ?>/images/free.gif' width='1' height='10' border='0' alt=''><br><?php echo getlocal('page_client.pending_users') ?><br></td></tr><tr><td colspan='2' height='20'></td></tr>
<?php if( $page['showadmin'] ) { ?>
<tr><td width='20' valign='top'><img src='<?php echo $webimroot ?>/images/lidiv.gif' width='5' height='45' border='0' alt=''></td><td valign='top' class='text'><a href='<?php echo $webimroot ?>/operator/getcode.php'><?php echo getlocal('leftMenu.client_gen_button') ?></a><br><img src='<?php echo $webimroot ?>/images/free.gif' width='1' height='10' border='0' alt=''><br><?php echo getlocal('admin.content.client_gen_button') ?><br></td></tr><tr><td colspan='2' height='20'></td></tr>
<?php } ?>
<tr><td width='20' valign='top'><img src='<?php echo $webimroot ?>/images/lidiv.gif' width='5' height='45' border='0' alt=''></td><td valign='top' class='text'><a href='<?php echo $webimroot ?>/operator/history.php'><?php echo getlocal('page_analysis.search.title') ?></a><br><img src='<?php echo $webimroot ?>/images/free.gif' width='1' height='10' border='0' alt=''><br><?php echo getlocal('content.history') ?><br></td></tr><tr><td colspan='2' height='20'></td></tr>
<?php if( $page['showban'] ) { ?>
<tr><td width='20' valign='top'><img src='<?php echo $webimroot ?>/images/lidiv.gif' width='5' height='45' border='0' alt=''></td><td valign='top' class='text'><a href='<?php echo $webimroot ?>/operator/blocked.php'><?php echo getlocal('menu.blocked') ?></a><br><img src='<?php echo $webimroot ?>/images/free.gif' width='1' height='10' border='0' alt=''><br><?php echo getlocal('content.blocked') ?><br></td></tr><tr><td colspan='2' height='20'></td></tr>
<?php } ?>
<?php if( $page['showadmin'] ) { ?>
<tr><td width='20' valign='top'><img src='<?php echo $webimroot ?>/images/lidiv.gif' width='5' height='45' border='0' alt=''></td><td valign='top' class='text'><a href='<?php echo $webimroot ?>/operator/settings.php'><?php echo getlocal('leftMenu.client_settings') ?></a><br><img src='<?php echo $webimroot ?>/images/free.gif' width='1' height='10' border='0' alt=''><br><?php echo getlocal('admin.content.client_settings') ?><br></td></tr><tr><td colspan='2' height='20'></td></tr>
<?php } ?>
<tr><td width='20' valign='top'><img src='<?php echo $webimroot ?>/images/lidiv.gif' width='5' height='45' border='0' alt=''></td><td valign='top' class='text'><a href='<?php echo $webimroot ?>/operator/logout.php'><?php echo getlocal('topMenu.logoff') ?></a><br><img src='<?php echo $webimroot ?>/images/free.gif' width='1' height='10' border='0' alt=''><br><?php echo getlocal('content.logoff') ?><br></td></tr><tr><td colspan='2' height='20'></td></tr>

View File

@ -71,6 +71,12 @@
<tr><td align="right" style="padding-right:16px;"><table cellspacing="0" cellpadding="0" border="0"><tr><?php foreach($page['tabs'] as $k => $v) { if($v) { ?><td class="textform" style="padding: 2px 9px 3px 9px;"><a href="<?php echo $v ?>"><?php echo $k ?></a></td><?php } else { ?><td class="textform" background="<?php echo $webimroot ?>/images/loginbg.gif" style="border-left:1px solid #bbbbbb;border-top:1px solid #bbbbbb;border-right:1px solid #bbbbbb;padding: 2px 9px 3px 9px;"><?php echo $k ?></td><?php }} ?></tr></table></td></tr>
<?php } ?>
<tr><td background='<?php echo $webimroot ?>/images/loginbg.gif'><table cellspacing='0' cellpadding='0' border='0'><tr><td><img src='<?php echo $webimroot ?>/images/logincrnlt.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $webimroot ?>/images/logincrnrt.gif' width='16' height='16' border='0' alt=''></td></tr><tr><td></td><td align='center'><table border='0' cellspacing='0' cellpadding='0'>
<tr>
<td class="formauth" colspan="3">
<b><?php echo $page['currentop'] ?></b>
</td>
</tr>
<tr><td colspan="3" height="15"></td></tr>
<?php foreach( $page['permissionsList'] as $pm ) { ?>
<tr class="formauth" colspan="3">