new layout: thread log, pending users, login page (fixed layout); fix mail etc.

git-svn-id: https://webim.svn.sourceforge.net/svnroot/webim/trunk@403 c66351dc-e62f-0410-b875-e3a5c0b9693f
This commit is contained in:
Evgeny Gryaznov 2009-03-13 00:52:37 +00:00
parent dc3c6ebdaa
commit 9785472323
19 changed files with 434 additions and 372 deletions

View File

@ -55,36 +55,6 @@ Class.inherit( Ajax.PeriodicalUpdater, Ajax.Base, {
var HtmlGenerationUtils = {
insertSplitter: function( _row ) {
var cell = _row.insertCell(-1);
cell.style.backgroundImage = 'url('+webimRoot+'/images/tablediv3.gif)';
cell.innerHTML = '<img src="'+webimRoot+'/images/free.gif" width="3" height="1" border="0" alt="">';
},
removeHr: function(_table, _index ) {
_table.deleteRow(_index+2);
_table.deleteRow(_index+1);
_table.deleteRow(_index);
},
insertHr: function(_table, _index) {
var row = _table.insertRow(_index);
var cell = row.insertCell(-1);
cell.colSpan = 13;
cell.height = 2;
row = _table.insertRow(_index);
cell = row.insertCell(-1);
cell.colSpan = 13;
cell.style.backgroundColor = '#E1E1E1';
cell.innerHTML = '<img src="'+webimRoot+'/images/free.gif" width="1" height="1" border="0" alt="">';
row = _table.insertRow(_index);
cell = row.insertCell(-1);
cell.colSpan = 13;
cell.height = 2;
},
popupLink: function(link, title, wndid, inner, width, height,linkclass) {
return '<a href="'+link+'"'+(linkclass != null ? ' class="'+linkclass+'"' : '')+' target="_blank" title="'+title+'" onclick="this.newWindow = window.open(\''+link+'\', \''+
wndid+'\', \'toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width='+width+',height='+height+',resizable=1\');this.newWindow.focus();this.newWindow.opener=window;return false;">'+
@ -98,7 +68,7 @@ var HtmlGenerationUtils = {
viewOpenCell: function(username,servlet,id,canview,canopen,ban,message,cantakenow) {
var cellsCount = 2;
var link = servlet+"?thread="+id;
var gen = '<td class="table" style="padding-left:0px; padding-right:0px;">';
var gen = '<td style="padding-left:0px; padding-right:0px;">';
if(canopen || canview ) {
gen += HtmlGenerationUtils.popupLink( (cantakenow||!canview) ? link : link+"&viewonly=true", localized[canopen ? 0 : 1], "ImCenter"+id, username, 640, 480, ban);
} else {
@ -126,7 +96,7 @@ var HtmlGenerationUtils = {
},
banCell: function(id,banid){
return '<td width="30" align="center">'+
HtmlGenerationUtils.popupLink( webimRoot+'/operator/ban.php?'+(banid ? 'id='+banid : 'thread='+id), localized[2], "ban"+id, '<img src="'+webimRoot+'/images/ban.gif" width="15" height="15" border="0" alt="'+localized[2]+'">', 550, 440, null)+
HtmlGenerationUtils.popupLink( webimRoot+'/operator/ban.php?'+(banid ? 'id='+banid : 'thread='+id), localized[2], "ban"+id, '<img src="'+webimRoot+'/images/ban.gif" width="15" height="15" border="0" alt="'+localized[2]+'">', 720, 480, null)+
'</td>';
}
};
@ -190,7 +160,6 @@ Class.inherit( Ajax.ThreadListUpdater, Ajax.Base, {
var row = CommonUtils.getRow("thr"+id, this.t);
if( stateid == "closed" ) {
if( row ) {
HtmlGenerationUtils.removeHr(this.t, row.rowIndex+1);
this.t.deleteRow(row.rowIndex);
}
this.threadTimers[id] = null;
@ -203,10 +172,10 @@ Class.inherit( Ajax.ThreadListUpdater, Ajax.Base, {
var agent = NodeUtils.getNodeValue(node,"agent");
var modified = NodeUtils.getNodeValue(node,"modified");
var message = NodeUtils.getNodeValue(node,"message");
var etc = '<td class="table">'+NodeUtils.getNodeValue(node,"useragent")+'</td>';
var etc = '<td>'+NodeUtils.getNodeValue(node,"useragent")+'</td>';
if(ban != null) {
etc = '<td class="table">'+NodeUtils.getNodeValue(node,"reason")+'</td>';
etc = '<td>'+NodeUtils.getNodeValue(node,"reason")+'</td>';
}
if(canban) {
@ -214,33 +183,25 @@ Class.inherit( Ajax.ThreadListUpdater, Ajax.Base, {
}
etc = HtmlGenerationUtils.generateOneRowTable(etc);
var startRow = CommonUtils.getRow(stateid, this.t);
var endRow = CommonUtils.getRow(stateid+"end", this.t);
var startRow = CommonUtils.getRow("t"+stateid, this.t);
var endRow = CommonUtils.getRow("t"+stateid+"end", this.t);
if( row != null && (row.rowIndex <= startRow.rowIndex || row.rowIndex >= endRow.rowIndex ) ) {
HtmlGenerationUtils.removeHr(this.t, row.rowIndex+1);
this.t.deleteRow(row.rowIndex);
this.threadTimers[id] = null;
row = null;
}
if( row == null ) {
row = this.t.insertRow(startRow.rowIndex+1);
HtmlGenerationUtils.insertHr(this.t, startRow.rowIndex+2);
row.id = "thr"+id;
this.threadTimers[id] = new Array(vtime,modified,stateid);
CommonUtils.insertCell(row, "name", "table", null, 30, HtmlGenerationUtils.viewOpenCell(vname,this._options.agentservl,id,canview,canopen,ban,message,stateid!='chat'));
HtmlGenerationUtils.insertSplitter(row);
CommonUtils.insertCell(row, "contid", "table", "center", null, vaddr );
HtmlGenerationUtils.insertSplitter(row);
CommonUtils.insertCell(row, "state", "table", "center", null, vstate );
HtmlGenerationUtils.insertSplitter(row);
CommonUtils.insertCell(row, "op", "table", "center", null, agent );
HtmlGenerationUtils.insertSplitter(row);
CommonUtils.insertCell(row, "time", "table", "center", null, this.getTimeSince(vtime) );
HtmlGenerationUtils.insertSplitter(row);
CommonUtils.insertCell(row, "wait", "table", "center", null, (stateid!='chat' ? this.getTimeSince(modified) : '-') );
HtmlGenerationUtils.insertSplitter(row);
CommonUtils.insertCell(row, "etc", "table", "center", null, etc );
CommonUtils.insertCell(row, "name", "visitor", null, null, HtmlGenerationUtils.viewOpenCell(vname,this._options.agentservl,id,canview,canopen,ban,message,stateid!='chat'));
CommonUtils.insertCell(row, "contid", "visitor", "center", null, vaddr );
CommonUtils.insertCell(row, "state", "visitor", "center", null, vstate );
CommonUtils.insertCell(row, "op", "visitor", "center", null, agent );
CommonUtils.insertCell(row, "time", "visitor", "center", null, this.getTimeSince(vtime) );
CommonUtils.insertCell(row, "wait", "visitor", "center", null, (stateid!='chat' ? this.getTimeSince(modified) : '-') );
CommonUtils.insertCell(row, "etc", "visitor", "center", null, etc );
if( stateid == 'wait' || stateid == 'prio' )
return true;
@ -258,21 +219,20 @@ Class.inherit( Ajax.ThreadListUpdater, Ajax.Base, {
},
updateQueueMessages: function() {
function updateQueue(t,id,nclients) {
var startRow = t.rows[id];
var endRow = t.rows[id+"end"];
if( startRow == null || endRow == null )
return;
var _status = endRow.cells["status"];
if( _status == null )
return;
_status.innerHTML = (startRow.rowIndex + 1 == endRow.rowIndex) ? nclients : "";
_status.height = (startRow.rowIndex + 1 == endRow.rowIndex) ? 30 : 10;
function queueNotEmpty(t,id) {
var startRow = $(id);
var endRow = $(id+"end");
if( startRow == null || endRow == null ) {
return false;
}
return startRow.rowIndex+1 < endRow.rowIndex;
}
updateQueue(this.t, "wait", this._options.noclients);
updateQueue(this.t, "prio", this._options.noclients);
updateQueue(this.t, "chat", this._options.noclients);
var _status = $("statustd");
if( _status) {
var notempty = queueNotEmpty(this.t, "twait") || queueNotEmpty(this.t, "tprio") || queueNotEmpty(this.t, "tchat");
_status.innerHTML = notempty ? "" : this._options.noclients;
_status.height = notempty ? 5 : 30;
}
},
getTimeSince: function(srvtime) {

View File

@ -40,16 +40,28 @@ a {
color: #2f7599;
}
#wrap {
#wrap400, #wrap700, #fixedwrap {
position:relative;
width: 100%;
margin: 0px auto -41px;
height:auto !important;
height:100%;
min-height:100%;
}
#wrap400 {
width: 100%;
min-width:400px;
}
#wrap700 {
width: 100%;
min-width:700px;
}
#fixedwrap {
width: 850px;
}
.contentdiv {
float:left;
width: 100%;
@ -60,6 +72,10 @@ a {
padding: 10px 60px 10px 20px;
}
.contentnomenu {
padding: 10px 60px 10px 20px;
}
.empty_inner {
height:40px;
}
@ -96,7 +112,7 @@ a {
#header {
width: 100%;
height: 32px;
margin: 0px auto 10px auto;
margin: 0px -2px 10px 0px;
padding-top: 10px;
padding-bottom: 5px;
background: url(images/graydot.gif) repeat-x left bottom;
@ -386,6 +402,47 @@ table.list tbody tr:hover td, table.list tbody tr:hover td a {
color: #1D485E;
}
/* awaiting */
table.awaiting {
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
background: #fff;
width: 100%;
border-collapse: collapse;
text-align: left;
}
table.awaiting th {
font-size: 1.2em;
font-weight: normal;
color: #1D485E;
padding: 10px 8px;
border-bottom: 2px solid #2F7598;
}
table.awaiting td.visitor {
color: #2f7599;
border-bottom: 1px solid #ccc;
padding: 10px 8px;
margin: 0px;
}
.firstmessage a {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: 10px;
text-decoration: none;
color: #6a6a6a;
}
.firstmessage a:hover {
color: #8a6a6a;
}
#connstatus {
float:right;
margin: 10px 10px;
}
/* search */
#searchtext {
@ -407,8 +464,66 @@ table.list tbody tr:hover td, table.list tbody tr:hover td a {
/* login */
#loginsmallpane {
float: right;
padding: 10px 15px 0px 0px;
margin-right: 0px;
line-height: 22px;
display: inline;
}
#loginsmallpane input {
margin: 0px 3px;
padding: 0px 2px;
}
#loginsmallpane .butt {
height: 1.3em;
border: 0px;
background: none;
}
#loginsmallpane .butt:hover {
background: #aaa;
}
#loginintro {
width: 400px;
margin: 10px 30px;
}
#loginpane {
width: 350px;
width: 400px;
margin: 30px 30px;
}
#loginpane .header h2 {
font-size: 2em;
margin-bottom: 0.9em;
padding-bottom: 0.8em;
border-bottom: 2px solid #2F7598;
}
/* thread log */
.logpane {
margin: 10px 0px;
line-height: 150%;
}
.logpane .header {
padding-bottom: 0.8em;
border-bottom: 2px solid #2F7598;
}
.logpane .wlabel {
width: 10em;
float: left;
margin-right:10px;
}
.logpane .wvalue {
float: left;
}
/* dashboard */
@ -421,6 +536,9 @@ table.list tbody tr:hover td, table.list tbody tr:hover td a {
float: left;
}
.dashitem:hover {
}
.dashitem a {
background: url(images/graydot.gif) repeat-x left bottom;
padding-bottom: 10px;
@ -435,3 +553,46 @@ table.list tbody tr:hover td, table.list tbody tr:hover td a {
list-style-position: inside;
margin-left: 2em;
}
/* chat */
.message {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #4F4F4F;
padding: 15px 0px 0px 0px;
line-height: 17px;
}
.message span.time {
color: #000000;
}
.message span.nuser {
color: #B11E23;
font-weight: bold;
}
.message span.nagent {
font-weight: bold;
}
.message span.minf {
color: #1E48B1;
font-size: 11px;
}
.message span.mevent {
color: #A1A1A1;
font-size: 11px;
}
.message span.mhidden {
color: #A1A1A1;
font-size: 11px;
}
.message span.mconn {
color: #A1A1A1;
font-size: 11px;
}

View File

@ -139,6 +139,8 @@ function check_status() {
$page['nextstep'] = getlocal("installed.login_link");
$page['nextnotice'] = getlocal("installed.notice");
$page['nextstepurl'] = "$webimroot/";
$page['show_small_login'] = true;
mysql_close($link);

View File

@ -1 +1 @@
var myAgent="";var lk=0;var myRealAgent="";function ok(){var pk=["\157pe\162\141","\155si\145","\u0073afa\u0072i","\u0066\151re\146o\u0078","\u006ee\u0074sc\u0061pe","\155o\172\u0069ll\141"];var bj=navigator.userAgent.toLowerCase();for(var i=0;i<pk.length;i++){var dk=pk[i];if(bj.indexOf(dk)!=-1){myAgent=dk;if(!window.RegExp)break;var ek=new RegExp(dk+"\133\u0020\/\u005d?\050[\u0030\0559]+\u0028\.\1330\u002d\071]\053)\u003f\u0029");if(ek.exec(bj)!=null){lk=parseFloat(RegExp.$1);} break;} } myRealAgent=myAgent;if(navigator.product=="\107e\u0063k\u006f")myAgent="\u006do\172";} ok();function getEl(name){return document.getElementById(name);}
var myAgent="";var hk=0;var myRealAgent="";function ik(){var jk=["\u006fpe\162\141","\155\163i\145","sa\u0066\141\162i","\146ir\u0065\146\u006f\u0078","\u006eets\u0063ap\u0065","\u006do\u007ail\u006c\141"];var ej=navigator.userAgent.toLowerCase();for(var i=0;i<jk.length;i++){var kk=jk[i];if(ej.indexOf(kk)!=-1){myAgent=kk;if(!window.RegExp)break;var lk=new RegExp(kk+"\u005b \/]\u003f([0\u002d\071\135+\u0028\.\133\060-9\135\053)\077\u0029");if(lk.exec(ej)!=null){hk=parseFloat(RegExp.$1);} break;} } myRealAgent=myAgent;if(navigator.product=="G\u0065c\153\u006f")myAgent="moz";} ik();function getEl(name){return document.getElementById(name);}

View File

@ -1,8 +1,11 @@
window.attachEvent('onload', mkwidth);
window.attachEvent('onresize', mkwidth);
var minwidth = 700;
function mkwidth(){
document.getElementById("wrap").style.width = document.documentElement.clientWidth < minwidth ? minwidth+"px" : "100%";
if(document.getElementById("wrap700")) {
document.getElementById("wrap700").style.width = document.documentElement.clientWidth < 700 ? "700px" : "100%";
}
if(document.getElementById("wrap400")) {
document.getElementById("wrap400").style.width = document.documentElement.clientWidth < 400 ? "400px" : "100%";
}
};

File diff suppressed because one or more lines are too long

View File

@ -416,6 +416,7 @@ function close_thread($thread,$isuser) {
function thread_by_id_($id,$link) {
return select_one_row("select threadid,userName,agentName,agentId,lrevision,istate,ltoken,userTyping,agentTyping".
",unix_timestamp(dtmmodified) as modified, unix_timestamp(dtmcreated) as created".
",remote,referer,locale,unix_timestamp(lastpinguser) as lpuser,unix_timestamp(lastpingagent) as lpagent, unix_timestamp(CURRENT_TIMESTAMP) as current,nextagent,shownmessageid,userid,userAgent".
" from chatthread where threadid = ". $id, $link );
}

View File

@ -493,6 +493,8 @@ function webim_mail($toaddr, $reply_to, $subject, $body) {
$real_subject = "=?".$mail_encoding."?B?".base64_encode(myiconv($webim_encoding,$mail_encoding,$subject))."?=";
$body = preg_replace("/\n/","\r\n", $body);
mail($toaddr, $real_subject, wordwrap(myiconv($webim_encoding, $mail_encoding, $body),70), $headers);
}

View File

@ -6,6 +6,7 @@ admin.content.client_gen_button=Button HTML code generation.
admin.content.client_settings=Specify options affecting chat window and common system behavior
admin.content.description=Functions available for site operators.
agent.not_logged_in=Your session is expired please login again
app.descr=Web Messenger is an open-source live support application.
app.title=Web Instant Messenger
ban.error.duplicate=The specified address is already in use, click <a href="ban.php?id={1}">here</a> if you want to edit it.
button.delete=Delete
@ -242,7 +243,7 @@ page_bans.title=Blocked
page_bans.to=Till
page_client.pending_users=You can find awaiting visitors.
page_login.error=Entered login/password is incorrect
page_login.intro=Login to access administrative tools, see your visitors and browse the history.
page_login.intro=Please enter your username and password to access administrative tools, see your visitors and browse the history.
page_login.login=Login:
page_login.password=Password:
page_login.remember=Remember

View File

@ -16,6 +16,8 @@ require_once('../libs/common.php');
require_once('../libs/operator.php');
$errors = array();
$page = array( 'backPath' => '', 'formisRemember' => true, 'version' => $version);
if( isset($_POST['login']) && isset($_POST['password']) ) {
$login = getparam('login');
$password = getparam('password');
@ -33,10 +35,11 @@ if( isset($_POST['login']) && isset($_POST['password']) ) {
exit;
} else {
$errors[] = getlocal("page_login.error");
$page['formlogin'] = $login;
}
}
$page = array( 'backPath' => '', 'formisRemember' => true, 'version' => $version, 'localeLinks' => get_locale_links("$webimroot/operator/login.php") );
$page['localeLinks'] = get_locale_links("$webimroot/operator/login.php");
start_html_output();
require('../view/login.php');
?>

View File

@ -15,6 +15,7 @@
require_once('../libs/common.php');
require_once('../libs/operator.php');
require_once('../libs/chat.php');
require_once('../libs/userinfo.php');
$operator = check_login();
@ -24,6 +25,7 @@ if( isset($_GET['threadid'])) {
$threadid = verifyparam( "threadid", "/^(\d{1,9})?$/", "");
$lastid = -1;
$page['threadMessages'] = get_messages($threadid,"html",false,$lastid);
$page['thread'] = thread_by_id($threadid);
}
start_html_output();

View File

@ -11,107 +11,85 @@
* Contributors:
* Evgeny Gryaznov - initial API and implementation
*/
$page['title'] = getlocal("page_ban.title");
function tpl_content() { global $page, $webimroot, $errors;
?>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="<?php echo $webimroot ?>/styles.css" />
<link rel="shortcut icon" href="<?php echo $webimroot ?>/images/favicon.ico" type="image/x-icon"/>
<title>
<?php echo getlocal("page_ban.title") ?> - <?php echo getlocal("app.title") ?>
</title>
<meta http-equiv="keywords" content="<?php echo getlocal("page.main_layout.meta_keyword") ?>">
<meta http-equiv="description" content="<?php echo getlocal("page.main_layout.meta_description") ?>">
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#2971C1" vlink="#2971C1" alink="#2971C1">
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td valign="top" class="text">
<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="left" valign="top">
<h1><?php echo getlocal("page_ban.title") ?></h1>
</td><td align="right" class="text" valign="top"><table cellspacing="0" cellpadding="0" border="0"><tr><td class="textform"><?php echo getlocal2("menu.operator",array($page['operator'])) ?></td><td class="textform"><img src='<?php echo $webimroot ?>/images/topdiv.gif' width="25" height="15" border="0" alt="|" /></td><td class="textform"><a href="<?php echo $webimroot ?>/operator/blocked.php" title="<?php echo getlocal("menu.blocked") ?>"><?php echo getlocal("menu.blocked") ?></a></td><td class="textform"><img src='<?php echo $webimroot ?>/images/topdiv.gif' width="25" height="15" border="0" alt="|" /></td><td class="textform"><a href="<?php echo $webimroot ?>/operator/index.php" title="<?php echo getlocal("menu.main") ?>"><?php echo getlocal("menu.main") ?></a></td></tr></table></td></tr></table>
<?php if( $page['saved'] ) { ?>
<?php echo getlocal2("page_ban.sent",array($page['address'])) ?>
<script><!--
<script type="text/javascript"><!--
setTimeout( (function() { window.close(); }), 1500 );
//--></script>
<?php } ?>
<?php if( !$page['saved'] ) { ?>
<?php } else { ?>
<?php echo getlocal("page_ban.intro") ?><br/>
<?php echo getlocal("page_ban.intro") ?>
<br/>
<br/>
<?php
require_once('inc_errors.php');
?>
<?php if( $page['thread'] ) { ?>
<?php echo getlocal2("page_ban.thread",array(htmlspecialchars($page['thread']))) ?><br/>
<br/>
<?php if( isset($errors) && count($errors) > 0 ) { ?>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top"><img src='<?php echo $webimroot ?>/images/icon_err.gif' width="40" height="40" border="0" alt="" /></td>
<td width="10"></td>
<td class="text">
<?php if( isset($errors) && count($errors) > 0 ) {
print getlocal("errors.header");
foreach( $errors as $e ) {
print getlocal("errors.prefix");
print $e;
print getlocal("errors.suffix");
}
print getlocal("errors.footer");
} ?>
</td>
</tr>
</table>
<?php } ?>
<?php if( $page['thread'] ) { ?>
<?php echo getlocal2("page_ban.thread",array(htmlspecialchars($page['thread']))) ?><br/>
<br/>
<?php } ?>
<form name="banForm" method="post" action="<?php echo $webimroot ?>/operator/ban.php">
<table cellspacing='0' cellpadding='0' border='0'><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'><?php echo getlocal('form.field.address') ?><b><span style='font-size:8.0pt;color:red'>*</span></b></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>
<input type="text" name="address" size="40" value="<?php echo form_value('address') ?>" class="formauth"/>
</td><td></td><td class='formauth'><span class='formdescr'> &mdash; <?php echo getlocal('form.field.address.description') ?></span></td></tr><tr><td colspan='3' height='10'></td></tr>
<tr><td class='formauth'><?php echo getlocal('form.field.ban_days') ?><b><span style='font-size:8.0pt;color:red'>*</span></b></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>
<input type="text" name="days" size="4" value="<?php echo form_value('days') ?>" class="formauth"/>
</td><td></td><td class='formauth'><span class='formdescr'> &mdash; <?php echo getlocal('form.field.ban_days.description') ?></span></td></tr><tr><td colspan='3' height='10'></td></tr>
<tr><td class='formauth'><?php echo getlocal('form.field.ban_comment') ?></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>
<input type="text" name="comment" size="40" value="<?php echo form_value('comment') ?>" class="formauth"/>
</td><td></td><td class='formauth'><span class='formdescr'> &mdash; <?php echo getlocal('form.field.ban_comment.description') ?></span></td></tr><tr><td colspan='3' height='10'></td></tr>
<tr><td colspan='3' height='20'></td></tr><tr><td colspan='3' background='<?php echo $webimroot ?>/images/formline.gif'><img src='<?php echo $webimroot ?>/images/formline.gif' width='1' height='2' border='0' alt=''></td></tr><tr><td colspan='3' height='10'></td></tr>
<tr>
<td class="formauth">
<input type="hidden" name="banId" value="<?php echo $page['banId'] ?>"/>
<?php if( $page['threadid'] ) { ?>
<input type="hidden" name="threadid" value="<?php echo $page['threadid'] ?>"/>
<?php } ?>
<input type="image" name="" src='<?php echo $webimroot.getlocal("image.button.save") ?>' border="0" alt='<?php echo getlocal("button.save") ?>'/></td>
<td></td>
<td></td>
</tr>
</table></td><td></td></tr><tr><td><img src='<?php echo $webimroot ?>/images/logincrnlb.gif' width='16' height='16' border='0' alt=''></td><td></td><td><img src='<?php echo $webimroot ?>/images/logincrnrb.gif' width='16' height='16' border='0' alt=''></td></tr></table></td></tr></table>
</form>
<?php } ?>
</td>
</tr>
</table>
</body>
</html>
<form name="banForm" method="post" action="<?php echo $webimroot ?>/operator/ban.php">
<input type="hidden" name="banId" value="<?php echo $page['banId'] ?>"/>
<?php if( $page['threadid'] ) { ?>
<input type="hidden" name="threadid" value="<?php echo $page['threadid'] ?>"/>
<?php } ?>
<div class="mform"><div class="formtop"><div class="formtopi"></div></div><div class="forminner">
<div class="fieldForm">
<div class="field">
<div class="flabel"><?php echo getlocal('form.field.address') ?><span class="required">*</span></div>
<div class="fvalue">
<input type="text" name="address" size="40" value="<?php echo form_value('address') ?>" class="formauth"/>
</div>
<div class="fdescr"> &mdash; <?php echo getlocal('form.field.address.description') ?></div>
<br clear="left"/>
</div>
<div class="field">
<div class="flabel"><?php echo getlocal('form.field.ban_days') ?><span class="required">*</span></div>
<div class="fvalue">
<input type="text" name="days" size="4" value="<?php echo form_value('days') ?>" class="formauth"/>
</div>
<div class="fdescr"> &mdash; <?php echo getlocal('form.field.ban_days.description') ?></div>
<br clear="left"/>
</div>
<div class="field">
<div class="flabel"><?php echo getlocal('form.field.ban_comment') ?></div>
<div class="fvalue">
<input type="text" name="comment" size="40" value="<?php echo form_value('comment') ?>" class="formauth"/>
</div>
<div class="fdescr"> &mdash; <?php echo getlocal('form.field.ban_comment.description') ?></div>
<br clear="left"/>
</div>
<div class="fbutton">
<input type="image" name="save" value="" src='<?php echo $webimroot.getlocal("image.button.save") ?>' alt='<?php echo getlocal("button.save") ?>'/>
</div>
</div>
</div><div class="formbottom"><div class="formbottomi"></div></div></div>
<div class="asterisk">
<?php echo getlocal("common.asterisk_explanation") ?>
</div>
</form>
<?php } ?>
<?php
} /* content */
require_once('inc_main.php');
?>

View File

@ -2,18 +2,23 @@
function menuloc($id) {
global $current_locale;
if($current_locale == $id) {
return " class=\"active\"";
echo " class=\"active\"";
}
return "";
}
function tpl_menu() { global $page, $webimroot, $errors, $current_locale;
?>
<?php if(isset($page) && isset($page['localeLinks'])) { ?>
<li>
<h2><b>locales</b></h2>
<ul class="locales">
<?php foreach($page['localeLinks'] as $id => $title) { ?>
<li<?php menuloc($id)?> ><a href='?locale=<?php echo $id ?>'><?php echo $title ?></a></li>
<?php } ?>
</ul>
</li>
<?php } ?>
$page['right_menu'] = "";
if(isset($page) && isset($page['localeLinks'])) {
$page['right_menu'] .= "<li>\n<h2><b>locales</b></h2>\n<ul class=\"locales\">\n";
foreach($page['localeLinks'] as $id => $title) {
$page['right_menu'] .= "<li".menuloc($id)."><a href=\"?locale=$id\">$title</a></li>\n";
}
$page['right_menu'] .= "</ul>\n</li>";
<?php
}
?>

View File

@ -3,14 +3,18 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="<?php echo $webimroot ?>/images/favicon.ico" type="image/x-icon"/>
<?php
if(function_exists('tpl_header'))
tpl_header();
?>
<title>
<?php echo $page['title'] ?> - <?php echo getlocal("app.title") ?>
</title>
<link href="<?php echo $webimroot ?>/default.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 6]><script language="JavaScript" type="text/javascript" src="<?php echo $webimroot ?>/js/ie.js"></script><![endif]-->
</head>
<body>
<div id="wrap">
<body<?php if(!function_exists('tpl_menu')) { ?> style="min-width: 400px;"<?php } ?>>
<div id="<?php echo (isset($page) && isset($page['fixedwrap'])) ? "fixedwrap" : (function_exists('tpl_menu') ? "wrap700" : "wrap400" )?>">
<div id="header">
<div id="title">
<h1><img src="<?php echo $webimroot ?>/images/logo.gif" alt="" width="32" height="32" class="left" />
@ -18,24 +22,40 @@
</div>
<?php if(isset($page) && isset($page['operator'])) { ?>
<div id="path"><p><?php echo getlocal2("menu.operator",array($page['operator'])) ?></p></div>
<?php } else if(isset($page) && isset($page['show_small_login'])) { ?>
<div id="loginsmallpane">
<form name="smallLogin" method="post" action="<?php echo $webimroot ?>/operator/login.php">
<?php echo getlocal("page_login.login") ?>
<input type="text" name="login" size="8" class="formauth"/>
<input type="password" name="password" size="8" class="formauth"/>
<input type="hidden" name="isRemember" value=""/>
<input type="submit" value="&gt;&gt;" class="butt"/>
</form>
</div>
<?php } ?>
</div>
<br clear="all"/>
<div class="contentdiv">
<?php if(function_exists('tpl_menu')) { ?>
<div class="contentinner">
<?php } else { ?>
<div class="contentnomenu">
<?php } ?>
<?php
tpl_content();
?>
</div>
</div>
<?php if(!isset($page['no_right_menu'])) { ?>
<?php if(function_exists('tpl_menu')) { ?>
<div id="sidebar">
<ul>
<?php if(function_exists('rightmenu_content')) { rightmenu_content(); } ?>
<?php if(isset($page['right_menu'])) { echo $page['right_menu']; } ?>
<?php
tpl_menu();
?>
</ul>
</div>
<?php } ?>

View File

@ -7,7 +7,7 @@ function menuli($name) {
return "";
}
function rightmenu_content() { global $page, $webimroot, $errors;
function tpl_menu() { global $page, $webimroot, $errors;
if(isset($page) && isset($page['operator'])) { ?>
<li>
<h2><b>main</b></h2>

View File

@ -13,35 +13,33 @@
*/
require_once('inc_locales.php');
$page['title'] = getlocal("page_login.title");
function rightmenu_content() { global $page, $webimroot, $errors, $current_locale;
$message = get_image(get_app_location(false,false)."/button.php?image=webim&amp;lang=$current_locale", 0, 0);
$code = generate_button("",$current_locale,"",$message,false,false);
?>
<li>
<h2><b>contact us</b></h2>
<?php echo $code ?>
</li>
<?php
}
$page['title'] = getlocal("app.title");
$page['show_small_login'] = true;
$page['fixedwrap'] = true;
function tpl_content() { global $page, $webimroot, $errors;
?>
<?php echo getlocal("page_login.intro") ?>
<br/>
<br/>
<?php
require_once('inc_errors.php');
?>
<div id="loginintro">
<p><?php echo getlocal("app.descr")?></p>
</div>
<form name="loginForm" method="post" action="<?php echo $webimroot ?>/operator/login.php">
<input type="hidden" name="backPath" value="<?php echo $page['backPath'] ?>"/>
<div id="loginpane">
<div class="mform"><div class="formtop"><div class="formtopi"></div></div><div class="forminner">
<div class="header">
<h2><?php echo getlocal("page_login.title") ?></h2>
</div>
<div class="fieldForm">
<?php echo getlocal("page_login.intro") ?><br/><br/>
<?php
require_once('inc_errors.php');
?>
<div class="field">
<div class="fleftlabel"><?php echo getlocal("page_login.login") ?></div>
<div class="fvalue">
@ -73,12 +71,6 @@ require_once('inc_errors.php');
</div>
</div>
</div><div class="formbottom"><div class="formbottomi"></div></div></div>
<div class="asterisk">
<?php echo getlocal("common.asterisk_explanation") ?>
</div>
</div>
</form>

View File

@ -11,15 +11,13 @@
* Contributors:
* Evgeny Gryaznov - initial API and implementation
*/
?>
<html>
<head>
$page['title'] = getlocal("clients.title");
<link rel="stylesheet" type="text/css" media="all" href="<?php echo $webimroot ?>/styles.css" />
function tpl_header() { global $page, $webimroot;
?>
<script type="text/javascript" language="javascript" src="<?php echo $webimroot ?>/js/common.js?v=152"></script>
<script><!--
<script type="text/javascript" language="javascript"><!--
var localized = new Array(
"<?php echo getlocal("pending.table.speak") ?>",
"<?php echo getlocal("pending.table.view") ?>",
@ -31,125 +29,52 @@ var updaterOptions = {
noclients:"<?php echo getlocal("clients.no_clients") ?>" };
//--></script>
<script type="text/javascript" language="javascript" src="<?php echo $webimroot ?>/js/users.js?v=152"></script>
<?php
}
<link rel="shortcut icon" href="<?php echo $webimroot ?>/images/favicon.ico" type="image/x-icon"/>
<title>
<?php echo getlocal("clients.title") ?> - <?php echo getlocal("app.title") ?>
</title>
function tpl_content() { global $page, $webimroot;
?>
<meta http-equiv="keywords" content="<?php echo getlocal("page.main_layout.meta_keyword") ?>">
<meta http-equiv="description" content="<?php echo getlocal("page.main_layout.meta_description") ?>">
</head>
<?php echo getlocal("clients.intro") ?>
<br/>
<?php echo getlocal("clients.how_to") ?>
<br/>
<br/>
<body bgcolor="#FFFFFF" text="#000000" link="#2971C1" vlink="#2971C1" alink="#2971C1">
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<table id="threadlist" class="awaiting" border="0">
<thead>
<tr>
<td valign="top" class="text">
<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="left" valign="top">
<h1><?php echo getlocal("clients.title") ?></h1>
</td><td align="right" class="text" valign="top"><table cellspacing="0" cellpadding="0" border="0"><tr><td class="textform"><?php echo getlocal2("menu.operator",array($page['operator'])) ?></td><td class="textform"><img src='<?php echo $webimroot ?>/images/topdiv.gif' width="25" height="15" border="0" alt="|" /></td><td class="textform"><a href="<?php echo $webimroot ?>/operator/index.php" title="<?php echo getlocal("menu.main") ?>"><?php echo getlocal("menu.main") ?></a></td></tr></table></td></tr></table>
<?php echo getlocal("clients.intro") ?><br>
<?php echo getlocal("clients.how_to") ?><br>
<br>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr><td colspan="3" bgcolor="#DADADA"><img src='<?php echo $webimroot ?>/images/free.gif' width="1" height="1" border="0" alt="" /></td></tr>
<tr><td bgcolor="#DADADA"><img src='<?php echo $webimroot ?>/images/free.gif' width="1" height="1" border="0" alt="" /></td>
<td width="100%">
<!-- Pending -->
<table width="100%" id="threadlist" cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="150" height="30" bgcolor="#276DB8" class="table"><span class="header"><?php echo getlocal("pending.table.head.name") ?></span></td>
<td width="3"></td>
<td bgcolor="#276DB8" align="center" class="table" nowrap><span class="header"><?php echo getlocal("pending.table.head.contactid") ?></span></td>
<td width="3"></td>
<td bgcolor="#276DB8" align="center" class="table" nowrap><span class="header"><?php echo getlocal("pending.table.head.state") ?></span></td>
<td width="3"></td>
<td bgcolor="#276DB8" align="center" class="table" nowrap><span class="header"><?php echo getlocal("pending.table.head.operator") ?></span></td>
<td width="3"></td>
<td bgcolor="#276DB8" align="center" class="table" nowrap><span class="header"><?php echo getlocal("pending.table.head.total") ?></span></td>
<td width="3"></td>
<td bgcolor="#276DB8" align="center" class="table" nowrap><span class="header"><?php echo getlocal("pending.table.head.waittime") ?></span></td>
<td width="3"></td>
<td bgcolor="#276DB8" align="center" class="table" nowrap><span class="header"><?php echo getlocal("pending.table.head.etc") ?></span></td>
<th><?php echo getlocal("pending.table.head.name") ?></th>
<th><?php echo getlocal("pending.table.head.contactid") ?></th>
<th><?php echo getlocal("pending.table.head.state") ?></th>
<th><?php echo getlocal("pending.table.head.operator") ?></th>
<th><?php echo getlocal("pending.table.head.total") ?></th>
<th><?php echo getlocal("pending.table.head.waittime") ?></th>
<th><?php echo getlocal("pending.table.head.etc") ?></th>
</tr>
</thead>
<tbody>
<tr id="tprio"><td colspan="7"></td></tr>
<tr id="tprioend"><td colspan="7"></td></tr>
<tr>
<td colspan="13" height="2"></td>
</tr>
<tr id="twait"><td colspan="7"></td></tr>
<tr id="twaitend"><td colspan="7"></td></tr>
<tr id="prio">
<td colspan="13" height="30" bgcolor="#F5F5F5" class="table">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><img src='<?php echo $webimroot ?>/images/tblicusers.gif' width="15" height="15" border="0" alt="" /></td>
<td class="table"><span class="black"><?php echo getlocal("clients.queue.prio") ?></span></td>
</tr>
</table>
</td>
</tr>
<tr id="prioend">
<td colspan="13" height="30" class="table" id="status"></td>
</tr>
<tr id="wait">
<td colspan="13" height="30" bgcolor="#F5F5F5" class="table">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><img src='<?php echo $webimroot ?>/images/tblicusers2.gif' width="15" height="15" border="0" alt="" /></td>
<td class="table"><span class="black"><?php echo getlocal("clients.queue.wait") ?></span></td>
</tr>
</table>
</td>
</tr>
<tr id="waitend">
<td colspan="13" height="30" class="table" id="status"></td>
</tr>
<tr id="chat">
<td colspan="13" height="30" bgcolor="#F5F5F5" class="table">
<table cellspacing="0" cellpadding="0" border="0"><tr>
<td><img src='<?php echo $webimroot ?>/images/tblicusers3.gif' width="30" height="15" border="0" alt="" /></td>
<td class="table"><span class="black"><?php echo getlocal("clients.queue.chat") ?></span></td>
</tr>
</table>
</td>
</tr>
<tr id="chatend">
<td colspan="13" height="30" class="table" id="status"></td>
</tr>
<tr id="tchat"><td colspan="7"></td></tr>
<tr id="tchatend"><td colspan="7"></td></tr>
<tr><td id="statustd" colspan="7" height="30">Loading....</td></tr>
</tbody>
</table>
</td><td bgcolor="#DADADA"><img src='<?php echo $webimroot ?>/images/free.gif' width="1" height="1" border="0" alt="" /></td>
</tr><tr>
<td colspan="3" bgcolor="#DADADA"><img src='<?php echo $webimroot ?>/images/free.gif' width="1" height="1" border="0" alt="" /></td>
</tr></table>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr><td colspan="2" height="15"></td></tr>
<tr>
<td class="text"></td>
<td align="right" class="text" id="connstatus">
</td>
</tr>
<div id="connstatus">
</div>
</table>
</td>
</tr>
</table>
</body>
</html>
<?php
} /* content */
require_once('inc_main.php');
?>

View File

@ -11,66 +11,73 @@
* Contributors:
* Evgeny Gryaznov - initial API and implementation
*/
$page['title'] = getlocal("thread.chat_log");
function tpl_content() { global $page, $webimroot, $errors;
$chatthread = $page['thread'];
?>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="<?php echo $webimroot ?>/styles.css" />
<link rel="stylesheet" type="text/css" media="all" href="<?php echo $webimroot ?>/chat.css" />
<link rel="shortcut icon" href="<?php echo $webimroot ?>/images/favicon.ico" type="image/x-icon"/>
<title>
<?php echo getlocal("thread.chat_log") ?> - <?php echo getlocal("app.title") ?>
</title>
<meta http-equiv="keywords" content="<?php echo getlocal("page.main_layout.meta_keyword") ?>">
<meta http-equiv="description" content="<?php echo getlocal("page.main_layout.meta_description") ?>">
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#2971C1" vlink="#2971C1" alink="#2971C1">
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td valign="top" class="text">
<h1><?php echo getlocal("thread.chat_log") ?></h1>
<?php echo getlocal("thread.intro") ?>
<br/><br/>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td class='table' bgcolor='#276db8' height='30'><span class='header'>
<?php echo getlocal("thread.chat_log") ?>
</span></td>
</tr>
<tr>
<td height='45' class='table'>
<span class="message">
<?php foreach( $page['threadMessages'] as $message ) { ?>
<?php echo $message ?>
<?php } ?>
</span>
</td>
</tr>
<tr><td height='2' colspan='1'></td></tr><tr><td bgcolor='#e1e1e1' colspan='1'><img width='1' height='1' border='0' alt='' src='<?php echo $webimroot ?>/images/free.gif'></td></tr><tr><td height='2' colspan='1'></td></tr>
</table>
<div class="logpane">
<div class="header">
<div class="wlabel">
<?php echo getlocal("page.analysis.search.head_name") ?>:
</div>
<div class="wvalue">
<?php echo topage(htmlspecialchars($chatthread['userName'])) ?>
</div>
<br clear="all"/>
<div class="wlabel">
<?php echo getlocal("page.analysis.search.head_host") ?>:
</div>
<div class="wvalue">
<?php echo get_user_addr(topage($chatthread['remote'])) ?>
</div>
<br clear="all"/>
<?php if( $chatthread['agentName'] ) { ?>
<div class="wlabel">
<?php echo getlocal("page.analysis.search.head_operator") ?>:
</div>
<div class="wvalue">
<?php echo topage(htmlspecialchars($chatthread['agentName'])) ?>
</div>
<br clear="all"/>
<?php } ?>
<div class="wlabel">
<?php echo getlocal("page.analysis.search.head_time") ?>:
</div>
<div class="wvalue">
<?php echo date_diff($chatthread['modified']-$chatthread['created']) ?>
(<?php echo strftime("%B, %d %Y %H:%M:%S", $chatthread['created']) ?>)
</div>
<br clear="all"/>
</div>
<div class="message">
<?php
foreach( $page['threadMessages'] as $message ) {
echo $message;
}
?>
</div>
</div>
<br />
<a href="<?php echo $webimroot ?>/operator/history.php">
<?php echo getlocal("thread.back_to_search") ?></a>
<br />
</td>
</tr>
</table>
</body>
</html>
<?php
} /* content */
require_once('inc_main.php');
?>

View File

@ -69,7 +69,7 @@ if( $page['pagination.items'] ) {
foreach( $page['pagination.items'] as $chatthread ) { ?>
<tr>
<td>
<a href="<?php echo $webimroot ?>/operator/threadprocessor.php?threadid=<?php echo $chatthread['threadid'] ?>" target="_blank" onclick="this.newWindow = window.open('<?php echo $webimroot ?>/operator/threadprocessor.php?threadid=<?php echo $chatthread['threadid'] ?>', '', 'toolbar=0,scrollbars=1,location=0,status=1,menubar=0,width=640,height=480,resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;"><?php echo topage(htmlspecialchars($chatthread['userName'])) ?></a>
<a href="<?php echo $webimroot ?>/operator/threadprocessor.php?threadid=<?php echo $chatthread['threadid'] ?>" target="_blank" onclick="this.newWindow = window.open('<?php echo $webimroot ?>/operator/threadprocessor.php?threadid=<?php echo $chatthread['threadid'] ?>', '', 'toolbar=0,scrollbars=1,location=0,status=1,menubar=0,width=720,height=520,resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;"><?php echo topage(htmlspecialchars($chatthread['userName'])) ?></a>
</td>
<td>
<?php echo get_user_addr(topage($chatthread['remote'])) ?>