2
0
mirror of https://github.com/ACSPRI/queXS synced 2024-04-02 12:12:16 +00:00

new "Operators" menu pages

new Feature: Password generator,

switch to bs-toggle from bs-switch
This commit is contained in:
Alex
2015-03-23 12:26:38 +03:00
parent 25b94fb428
commit 4e565a8bbf
7 changed files with 1550 additions and 1495 deletions

View File

@@ -1,164 +0,0 @@
<?php /**
/**
* Configuration file
*/
include_once(dirname(__FILE__).'/../config.inc.php');
/**
* Database file
*/
include ("../db.inc.php");
/**
* XHTML functions
*/
include ("../functions/functions.xhtml.php");
$msg = "";
if (isset($_GET))
{
foreach($_GET as $key=>$val)
{
if (substr($key,0,12) == "operator_id_")
{
if (isset($_GET['extension_id']))
{
$ex = intval($_GET['extension_id']);
$op = intval($val);
$sql = "UPDATE `extension`
SET current_operator_id = $op
WHERE extension_id = $ex
AND current_operator_id IS NULL";
$db->Execute($sql);
}
}
}
}
if (isset($_POST['extension']))
{
$extension = $db->qstr($_POST['extension']);
$password = $db->qstr($_POST['password']);
$extension_id = "NULL";
if (isset($_POST['extensionid']))
$extension_id = intval($_POST['extensionid']);
if (isset($_POST['delete']))
{
$sql = "DELETE FROM `extension`
WHERE current_operator_id IS NULL
AND extension_id = $extension_id";
$rs = $db->Execute($sql);
if (!$rs)
$msg = ("Failed to delete extension. There may be an operator currently assigned to it");
}
else
{
if (!empty($_POST['extension']))
{
$sql = "INSERT INTO `extension` (extension_id,extension,password)
VALUES ($extension_id,$extension,$password)
ON DUPLICATE KEY UPDATE extension=$extension,password=$password";
$rs = $db->Execute($sql);
if (!$rs)
$msg = T_("Failed to add extension. There already may be an extension of this name");
}
}
}
if (isset($_GET['unassign']))
{
$e = intval($_GET['unassign']);
$db->StartTrans();
$sql = "SELECT e.current_operator_id
FROM `extension` as e
LEFT JOIN `case` as c ON (c.current_operator_id = e.current_operator_id)
WHERE e.extension_id = $e
AND c.case_id IS NULL";
$cid = $db->GetOne($sql);
if (!empty($cid))
{
$sql = "UPDATE `extension` as e
SET current_operator_id = NULL
WHERE extension_id = $e
AND current_operator_id = $cid";
$db->Execute($sql);
}
$db->CompleteTrans();
}
xhtml_head(T_("Display extension status"),true,array("../css/table.css"),array("../js/window.js"));
if (isset($_GET['edit']))
{
$sql = "SELECT extension,password,current_operator_id
FROM extension
WHERE extension_id = " . intval($_GET['edit']);
$rs = $db->GetRow($sql);
}
else
{
$sql= "SELECT CONCAT('<a href=\'operatorlist.php?edit=',o.operator_id,'\'>',o.firstName,' ', o.lastname,'</a>') as firstName,
CONCAT('<a href=\'?edit=',e.extension_id,'\'>',e.extension,'</a>') as extension,
IF(c.case_id IS NULL,IF(e.current_operator_id IS NULL,'list'
,CONCAT('<a href=\'?unassign=',e.extension_id,'\'>". TQ_("Unassign") ."</a>')),'". TQ_("End case to change assignment")."') as assignment,
CASE e.status WHEN 0 THEN '" . TQ_("VoIP Offline") . "' ELSE '" . TQ_("VoIP Online") . "' END as status,
CASE ca.state WHEN 0 THEN '" . TQ_("Not called") . "' WHEN 1 THEN '" . TQ_("Requesting call") . "' WHEN 2 THEN '" . TQ_("Ringing") . "' WHEN 3 THEN '" . TQ_("Answered") . "' WHEN 4 THEN '" . TQ_("Requires coding") . "' ELSE '" . TQ_("Done") . "' END as state,
CONCAT('<a href=\'supervisor.php?case_id=', c.case_id , '\'>' , c.case_id, '</a>') as case_id, SEC_TO_TIME(TIMESTAMPDIFF(SECOND,cal.start,CONVERT_TZ(NOW(),'SYSTEM','UTC'))) as calltime,
e.status as vs,
e.extension_id
FROM extension as e
LEFT JOIN `operator` as o ON (o.operator_id = e.current_operator_id)
LEFT JOIN `case` as c ON (c.current_operator_id = o.operator_id)
LEFT JOIN `call_attempt` as cal ON (cal.operator_id = o.operator_id AND cal.end IS NULL and cal.case_id = c.case_id)
LEFT JOIN `call` as ca ON (ca.case_id = c.case_id AND ca.operator_id = o.operator_id AND ca.outcome_id= 0 AND ca.call_attempt_id = cal.call_attempt_id)
ORDER BY e.extension_id ASC";
$rs = $db->GetAll($sql);
if ($msg != "")
print "<p>$msg</p>";
if (!empty($rs))
{
$sql = "SELECT o.operator_id as value, CONCAT(o.firstName,' ', o.lastname) as description
FROM `operator` as o
LEFT JOIN `extension` as e ON (e.current_operator_id = o.operator_id)
WHERE e.extension_id IS NULL";
$ers = $db->GetAll($sql);
for ($i = 0; $i < count($rs); $i++)
{
if ($rs[$i]['assignment'] == "list")
$rs[$i]['assignment'] = display_chooser($ers,"operator_id_" . $rs[$i]["extension_id"],"operator_id_" . $rs[$i]["extension_id"],true,"extension_id=".$rs[$i]["extension_id"],true,false,false,false);
}
xhtml_table($rs,array("extension","firstName","assignment","status","case_id","state","calltime"),array(T_("Extension"),T_("Operator"),T_("Assignment"),T_("VoIP Status"),T_("Case ID"),T_("Call state"),T_("Time on call")),"tclass",array("vs" => "1"));
}
else
print "<p>" . T_("No extensions") . "</p>";
}
xhtml_foot();
?>

View File

@@ -130,40 +130,96 @@ if (isset($_GET['unassign']))
$db->CompleteTrans(); $db->CompleteTrans();
} }
xhtml_head(T_("Display extension status"),true,array("../css/table.css"),array("../js/window.js")); xhtml_head(T_("Extensions & status"),true,array("../include/bootstrap-3.3.2/css/bootstrap.min.css","../css/custom.css"),array("../js/window.js"));
?>
<script type="text/javascript">
//Password generator
upp = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
low = new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
dig = new Array('0','1','2','3','4','5','6','7','8','9');
//sym = new Array('~','!','@','#','$','%','^','&','*','(',')','_','+','=','|',';','.','/','?','<','>','{','}','[',']');
// --------------------------------------------------------------------------------------------------------------------------------------------------------------
function rnd(x,y,z) {
var num;
do {
num = parseInt(Math.random()*z);
if (num >= x && num <= y) break;
} while (true);
return(num);
}
// --------------------------------------------------------------------------------------------------------------------------------------------------------------
function generate() {
var pwd = '';
var res, s;
var k = 0;
var n = document.editext.number.value;
var pass = new Array();
var w = rnd(30,80,100);
for (var r = 0; r < w; r++) {
res = rnd(1,25,100); pass[k] = upp[res]; k++;
res = rnd(1,25,100); pass[k] = low[res]; k++;
res = rnd(1,9,100); pass[k] = dig[res]; k++;
//res = rnd(1,24,100); pass[k] = sym[res]; k++;
}
for (var i = 0; i < n; i++) {
s = rnd(1,k-1,100);
pwd+= pass[s];
}
document.editext.password.value = pwd;
}
</script>
if (isset($_GET['edit'])) <?php
if (isset($_GET['edit']) || isset($_GET['addext']))
{ {
$sql = "SELECT extension,password,current_operator_id if (isset($_GET['edit'])){
$sql = "SELECT extension,password,current_operator_id
FROM extension FROM extension
WHERE extension_id = " . intval($_GET['edit']); WHERE extension_id = " . intval($_GET['edit']);
$rs = $db->GetRow($sql); $rs = $db->GetRow($sql);
}
print "<p><a href='?'>" . T_("Go back") . "</a></p>"; print "<a href='?' class='btn btn-default pull-left'>" . T_("Go back") . "</a>";
?> ?>
<form enctype="multipart/form-data" action="?" method="post"> <div class="panel-body ">
<p><?php echo T_("Extension name (such as SIP/1000):"); ?> <input name="extension" type="text" value="<?php echo $rs['extension'];?>"/></p> <h3 class="col-sm-offset-3"><?php if (isset($_GET['edit']))echo T_("Edit extension"); else echo T_("Add an extension");?></h3>
<p><?php echo T_("Extension password:"); ?> <input name="password" type="text" value="<?php echo $rs['password'];?>"/></p> <form enctype="multipart/form-data" action="?" method="post" name="editext" class="form-horizontal">
<input name="extensionid" type="hidden" value="<?php echo intval($_GET['edit']);?>"/></p> <div class="form-group form-inline">
<p><input type="submit" value="<?php echo T_("Edit extension"); ?>" /></p> <label class="control-label col-sm-3"><?php echo T_("Extension name: ");?></label>
<?php <input name="extension" type="text" placeholder="<?php echo T_("such as SIP/1000");?>" maxlength="12" required value="<?php echo $rs['extension'];?>" class="form-control"/>
if (empty($rs['current_operator_id'])) </div>
{ <div class="form-group form-inline">
?> <label class="control-label col-sm-3"><?php echo T_("Extension password: ");?></label>
<br/> <input name="password" type="text" required pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" style="width:20em;" maxlength="50" value="<?php echo $rs['password'];?>" class="form-control pull-left" placeholder="<?php echo T_("Enter New Password");?>"/>&emsp;&emsp;<?php echo T_(" or ");?>&ensp;
<p><input type="submit" name="delete" value="<?php echo T_("Delete extension"); ?>" /></p> <input type="button" onclick="generate();" value="<?php echo T_("Generate");?>" class="btn btn-default fa" />&emsp;<?php echo T_("New password");?>&ensp;
</form> <input type="number" name="number" value="25" min="8" max="50" style="width:5em;" class="form-control" />&ensp;<?php echo T_("characters long");?>
<?php </div>
}
else
print "<p>" . T_("Unassign the operator from this extension to be able to delete it") . "</p>";
<div class=" col-sm-offset-3 ">
<input type="submit" class="btn btn-primary " value="<?php if (isset($_GET['edit'])) echo T_("Save changes"); else echo T_("Add extension"); ?>" />
</div>
<?php if (isset($_GET['edit'])){?>
<input name="extensionid" type="hidden" value="<?php echo intval($_GET['edit']);?>"/>
<?php if (empty($rs['current_operator_id'])) { ?>
<input type="submit" name="delete" class="btn btn-danger " data-toggle="confirmation" value="<?php echo T_("Delete extension"); ?>" />
<?php } else
print "</br></br><b class='well text-danger'>" . T_("Unassign the operator from this extension to be able to delete it") . "</b>";
}
print "</form></div>";
} }
else else
{ {
$sql= "SELECT CONCAT('<a href=\'operatorlist.php?edit=',o.operator_id,'\'>',o.firstName,'</a>') as firstName, $sql= "SELECT CONCAT('<a href=\'operatorlist.php?edit=',o.operator_id,'\'>',o.firstName,' ', o.lastname,'</a>') as firstName,
CONCAT('<a href=\'?edit=',e.extension_id,'\'>',e.extension,'</a>') as extension, CONCAT('<a href=\'?edit=',e.extension_id,'\' class=\'\'>',e.extension,'</a>') as extension,
IF(c.case_id IS NULL,IF(e.current_operator_id IS NULL,'list' IF(c.case_id IS NULL,IF(e.current_operator_id IS NULL,'list'
,CONCAT('<a href=\'?unassign=',e.extension_id,'\'>". TQ_("Unassign") ."</a>')),'". TQ_("End case to change assignment")."') as assignment, ,CONCAT('<a href=\'?unassign=',e.extension_id,'\'>". TQ_("Unassign") ."</a>')),'". TQ_("End case to change assignment")."') as assignment,
CASE e.status WHEN 0 THEN '" . TQ_("VoIP Offline") . "' ELSE '" . TQ_("VoIP Online") . "' END as status, CASE e.status WHEN 0 THEN '" . TQ_("VoIP Offline") . "' ELSE '" . TQ_("VoIP Online") . "' END as status,
@@ -197,21 +253,15 @@ else
if ($rs[$i]['assignment'] == "list") if ($rs[$i]['assignment'] == "list")
$rs[$i]['assignment'] = display_chooser($ers,"operator_id_" . $rs[$i]["extension_id"],"operator_id_" . $rs[$i]["extension_id"],true,"extension_id=".$rs[$i]["extension_id"],true,false,false,false); $rs[$i]['assignment'] = display_chooser($ers,"operator_id_" . $rs[$i]["extension_id"],"operator_id_" . $rs[$i]["extension_id"],true,"extension_id=".$rs[$i]["extension_id"],true,false,false,false);
} }
print "<div class='panel-body'>";
xhtml_table($rs,array("extension","firstName","assignment","status","case_id","state","calltime"),array(T_("Extension"),T_("Operator"),T_("Assignment"),T_("VoIP Status"),T_("Case ID"),T_("Call state"),T_("Time on call")),"tclass",array("vs" => "1")); xhtml_table($rs,array("extension","firstName","assignment","status","case_id","state","calltime"),array(T_("Extension"),T_("Operator"),T_("Assignment"),T_("VoIP Status"),T_("Case ID"),T_("Call state"),T_("Time on call")),"tclass",array("vs" => "1"));
print "</div>";
} }
else else
print "<p>" . T_("No extensions") . "</p>"; print "<p>" . T_("No extensions") . "</p>";
print "<h2>" . T_("Add an extension") . "</h2>"; print "<div class='col-sm-3'><a href='?addext=addext' class='btn btn-default '>" . T_("Add extension") . "</a></div>";
?>
<form enctype="multipart/form-data" action="" method="post">
<p><?php echo T_("Extension name (such as SIP/1000):"); ?> <input name="extension" type="text"/></p>
<p><?php echo T_("Extension password:"); ?> <input name="password" type="text"/></p>
<p><input type="submit" value="<?php echo T_("Add extension"); ?>" /></p>
</form>
<?php
} }
xhtml_foot(); xhtml_foot();

View File

@@ -57,7 +57,7 @@ if (isset($_POST['submit']))
if (HTPASSWD_PATH !== false && $_POST['existing_username'] != $_POST['username'] && empty($_POST['password'])) if (HTPASSWD_PATH !== false && $_POST['existing_username'] != $_POST['username'] && empty($_POST['password']))
{ {
$msg = T_("If changing usernames, you must specify a new password"); $msg = "<div class='alert alert-danger'><h3>" . T_("If changing usernames, you must specify a new password") . "</h3></div>";
} }
else else
{ {
@@ -113,11 +113,11 @@ if (isset($_POST['submit']))
$htg->addUserToGroup($_POST["username"],HTGROUP_INTERVIEWER); $htg->addUserToGroup($_POST["username"],HTGROUP_INTERVIEWER);
} }
$msg = T_("Successfully updated user"); $msg = "<div class='alert alert-info'><h3>" . T_("Successfully updated user") . ": " . $_POST['username'] . "</h3></div>";
} }
else else
{ {
$msg = T_("Failed to update user. Please make sure the username is unique"); $msg = "<div class='alert alert-danger'><h3>" . T_("Failed to update user") . ": " . $_POST['username'] . " " . T_("Please make sure the username is unique") . "</h3></div>";
} }
} }
$_GET['edit'] = $operator_id; $_GET['edit'] = $operator_id;
@@ -126,7 +126,7 @@ if (isset($_POST['submit']))
if (isset($_GET['edit'])) if (isset($_GET['edit']))
{ {
xhtml_head(T_("Operator edit"),true,array("../css/table.css")); xhtml_head(T_("Edit Operator settings"),true,array("../include/bootstrap-3.3.2/css/bootstrap.min.css","../include/bootstrap-toggle/css/bootstrap-toggle.min.css", "../css/custom.css"),array("../js/jquery-2.1.3.min.js","../include/bootstrap-3.3.2/js/bootstrap.min.js","../include/bootstrap-toggle/js/bootstrap-toggle.min.js"));
$operator_id = intval($_GET['edit']); $operator_id = intval($_GET['edit']);
@@ -140,10 +140,51 @@ if (isset($_GET['edit']))
FROM timezone_template"; FROM timezone_template";
$tz = $db->GetAll($sql); $tz = $db->GetAll($sql);
?>
print "<h2>" . T_("Edit") . ": " . $rs['username'] . "</h2>"; <script type="text/javascript">
echo "<p><a href='?'>" . T_("Go back") . "</a></p>"; //Password generator
if (!empty($msg)) print "<h3>$msg</h3>"; upp = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
low = new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
dig = new Array('0','1','2','3','4','5','6','7','8','9');
sym = new Array('~','!','@','#','$','%','^','&','*','(',')','_','+','=','|',';','.','/','?','<','>','{','}','[',']');
// --------------------------------------------------------------------------------------------------------------------------------------------------------------
function rnd(x,y,z) {
var num;
do {
num = parseInt(Math.random()*z);
if (num >= x && num <= y) break;
} while (true);
return(num);
}
// --------------------------------------------------------------------------------------------------------------------------------------------------------------
function generate() {
var pwd = '';
var res, s;
var k = 0;
var n = document.operform.number.value;
var pass = new Array();
var w = rnd(30,80,100);
for (var r = 0; r < w; r++) {
res = rnd(1,25,100); pass[k] = upp[res]; k++;
res = rnd(1,25,100); pass[k] = low[res]; k++;
res = rnd(1,9,100); pass[k] = dig[res]; k++;
res = rnd(1,24,100); pass[k] = sym[res]; k++;
}
for (var i = 0; i < n; i++) {
s = rnd(1,k-1,100);
pwd+= pass[s];
}
document.operform.password.value = pwd;
}
</script>
<div class="form-group clearfix"><div class="col-sm-3"><a href='?' class="btn btn-default"><?php echo T_("Go back") ;?></a></div><div class="col-sm-6">
<?php
print "<h3>" . T_("Operator") . ": " . $rs['username'] . "</h3>";
echo "</div></div>";
if (!empty($msg)) echo $msg;
$sql = "SELECT extension_id as value, extension as description, $sql = "SELECT extension_id as value, extension as description,
CASE WHEN current_operator_id = $operator_id THEN 'selected=\'selected\'' ELSE '' END AS selected CASE WHEN current_operator_id = $operator_id THEN 'selected=\'selected\'' ELSE '' END AS selected
@@ -153,37 +194,78 @@ if (isset($_GET['edit']))
$ers = $db->GetAll($sql); $ers = $db->GetAll($sql);
?> ?>
<form action="?" method="post"> <form action="?" method="post" class="form-horizontal panel-body" name="operform">
<div><label for="username"><?php echo T_("Username") . ": "; ?></label><input type='text' name='username' value="<?php echo $rs['username'];?>"/></div> <div class="form-group">
<?php <label for="username" class="col-sm-3 control-label"><?php echo T_("Username") . ": "; ?></label>
if (HTPASSWD_PATH !== false) <div class="col-sm-3"><input type='text' name='username' class="form-control" value="<?php echo $rs['username'];?>"/></div>
{ ?> </div>
<div><label for="password"><?php echo T_("Update password (leave blank to keep existing password)") . ": "; ?></label><input type='text' name='password'/></div> <?php if (HTPASSWD_PATH !== false) { ?>
<?php } <div class="form-group">
?> <label for="password" class="col-sm-3 control-label"><?php echo T_("Password") . ": "; ?></label>
<div><label for="firstName"><?php echo T_("First name") . ": "; ?></label><input type='text' name='firstName' value="<?php echo $rs['firstName'];?>"/></div> <div class="col-sm-3"><input type='text' name='password' class="form-control" placeholder="<?php echo T_("leave blank to keep existing password");?>"/></div>
<div><label for="lastName"><?php echo T_("Last name") . ": "; ?></label><input type='text' name='lastName' value="<?php echo $rs['lastName'];?>"/></div> <div class="col-sm-6 form-inline">&emsp;
<div><label for="extension_id"><?php echo T_("Extension"); echo "</label>"; display_chooser($ers,"extension_id","extension_id",true,false,false,false); ?> </div> <input type="button" onclick="generate();" value="<?php echo T_("Generate");?>" class="btn btn-default"/>&emsp;<?php echo T_("Password with");?>&ensp;
<div><label for="chat_user"><?php echo T_("Jabber/XMPP chat user") . ": "; ?></label><input type='text' name='chat_user' value="<?php echo $rs['chat_user'];?>"/></div> <input type="number" name="number" value="25" min="8" max="50" style="width:5em;" class="form-control" />&ensp;<?php echo T_("characters");?>
<div><label for="chat_password"><?php echo T_("Jabber/XMPP chat password") . ": "; ?></label><input type='text' name='chat_password' value="<?php echo $rs['chat_password'];?>"/></div> </div>
<div><label for="chat_enable"><?php echo T_("Uses chat") . "? ";?></label><input type="checkbox" name="chat_enable" <?php if ($rs['chat_enable'] == 1) echo "checked=\"checked\"";?> value="1" /></div> </div>
<div><label for="timezone"><?php echo T_("Timezone") . ": ";?></label><?php display_chooser($tz,"timezone","timezone",false,false,false,false,array("value",$rs['Time_zone_name'])); ?></div> <?php } ?>
<div><label for="enabled"><?php echo T_("Enabled") . "? ";?></label><input type="checkbox" name="enabled" <?php if ($rs['enabled'] == 1) echo "checked=\"checked\"";?> value="1" /></div> <div class="form-group">
<div><label for="voip"><?php echo T_("Uses VoIP") . "? ";?></label><input type="checkbox" name="voip" <?php if ($rs['voip'] == 1) echo "checked=\"checked\"";?> value="1" /></div> <label for="firstName" class="col-sm-3 control-label"><?php echo T_("First name") . ": "; ?></label>
<div class="col-sm-3"><input type='text' name='firstName' class="form-control" value="<?php echo $rs['firstName'];?>"/></div>
</div>
<div class="form-group">
<label for="lastName" class="col-sm-3 control-label"><?php echo T_("Last name") . ": "; ?></label>
<div class="col-sm-3"><input type='text' name='lastName' class="form-control" value="<?php echo $rs['lastName'];?>"/></div>
</div>
<div class="form-group">
<label for="timezone" class="col-sm-3 control-label"><?php echo T_("Timezone") . ": ";?></label>
<div class="col-sm-3"><?php display_chooser($tz,"timezone","timezone",false,false,false,true,array("value",$rs['Time_zone_name']),true,"form-inline"); ?></div>
<div class="col-sm-6 form-inline">
<?php echo T_("Edit") . "&emsp;";?>
<a href='timezonetemplate.php' class="btn btn-default"><?php echo T_("TimeZones list");?></a>
</div>
</div>
<div class="form-group">
<label for="extension_id" class="col-sm-3 control-label"><?php echo T_("Extension") . ": "; ?></label>
<div class="col-sm-3"><?php echo display_chooser($ers,"extension_id","extension_id",true,false,false,true,false,true,"form-inline"); ?> </div>
<div class="col-sm-6 form-inline">
<?php echo T_("Edit") . "&emsp;";?>
<a href='extensionstatus.php' class="btn btn-default"><?php echo T_("Extensions");?></a>
</div>
</div>
<div class="form-group">
<label for="voip" class="col-sm-3 control-label"><?php echo T_("Uses VoIP") . "? ";?></label>
<div class="col-sm-3"><input type="checkbox" name="voip" data-toggle="toggle" data-on="<?php echo T_("Yes"); ?>" data-off="<?php echo T_("No"); ?>" <?php if ($rs['voip'] == 1) echo "checked=\"checked\"";?> value="1" /></div>
</div>
<div class="form-group">
<label for="chat_user" class="col-sm-3 control-label"><?php echo T_("Jabber/XMPP chat user") . ": "; ?></label>
<div class="col-sm-3"><input type='text' name='chat_user' class="form-control" value="<?php echo $rs['chat_user'];?>"/></div>
</div>
<div class="form-group">
<label for="chat_password" class="col-sm-3 control-label"><?php echo T_("Jabber/XMPP chat password") . ": "; ?></label>
<div class="col-sm-3"><input type='text' name='chat_password' class="form-control" value="<?php echo $rs['chat_password'];?>"/></div>
</div>
<div class="form-group">
<label for="chat_enable" class="col-sm-3 control-label"><?php echo T_("Uses chat") . "? ";?></label>
<div class="col-sm-3"><input type="checkbox" name="chat_enable" data-toggle="toggle" data-on="<?php echo T_("Yes"); ?>" data-off="<?php echo T_("No"); ?>" <?php if ($rs['chat_enable'] == 1) echo "checked=\"checked\"";?> value="1"/></div>
</div>
<div class="form-group">
<label for="enabled" class="col-sm-3 control-label"><?php echo T_("Enabled") . "? ";?></label>
<div class="col-sm-3"><input type="checkbox" name="enabled" data-toggle="toggle" data-on="<?php echo T_("Yes"); ?>" data-off="<?php echo T_("No"); ?>" <?php if ($rs['enabled'] == 1) echo "checked=\"checked\"";?> value="1" /></div>
</div>
<div><input type='hidden' name='operator_id' value='<?php echo $operator_id;?>'/></div> <div><input type='hidden' name='operator_id' value='<?php echo $operator_id;?>'/></div>
<div><input type='hidden' name='existing_username' value="<?php echo $rs['username'];?>"/></div> <div><input type='hidden' name='existing_username' value="<?php echo $rs['username'];?>"/></div>
<div><input type="submit" name="submit" value="<?php echo T_("Update operator");?>"/></div>
<div class="form-group"><div class="col-sm-3 col-sm-offset-3"><input type="submit" name="submit" class="btn btn-primary btn-block" value="<?php echo T_("Update operator");?>"/></div></div>
</form> </form>
<?php <?php
xhtml_foot(); xhtml_foot();
exit(); exit();
} }
if (isset($_GET['voipdisable'])) if (isset($_GET['voipdisable']))
{ {
$operator_id = intval($_GET['voipdisable']); $operator_id = intval($_GET['voipdisable']);
@@ -206,7 +288,6 @@ if (isset($_GET['voipenable']))
$db->Execute($sql); $db->Execute($sql);
} }
if (isset($_GET['disable'])) if (isset($_GET['disable']))
{ {
$operator_id = intval($_GET['disable']); $operator_id = intval($_GET['disable']);
@@ -266,49 +347,59 @@ if ($display)
{ {
$sql = "SELECT $sql = "SELECT
CONCAT(firstName, ' ', lastName) as name, CONCAT(firstName, ' ', lastName) as name,
e.extension, CONCAT ('<a href=\'extensionstatus.php?edit=',e.extension_id,'\'>', e.extension ,'</a>') as `extension`,
CONCAT('<a href=\'?winbat=winbat&amp;operator_id=',operator_id,'\'>" . TQ_("Windows bat file") . "</a>') as winbat, CONCAT('<a href=\'?winbat=winbat&amp;operator_id=',operator_id,'\'>" . TQ_("Win .bat file") . "</a>') as winbat,
CONCAT('<a href=\'?sh=sh&amp;operator_id=',operator_id,'\'>" . TQ_("*nix script file") . "</a>') as sh, CONCAT('<a href=\'?sh=sh&amp;operator_id=',operator_id,'\'>" . TQ_("*nix script file") . "</a>') as sh,
CASE WHEN enabled = 0 THEN CASE WHEN enabled = 0 THEN
CONCAT('<a href=\'?enable=',operator_id,'\'>" . TQ_("Enable") . "</a>') CONCAT('&ensp;<a href=\'?enable=',operator_id,'\'><i data-toggle=\'tooltip\' title=\'" . TQ_("Enable") . "\' class=\'fa fa-toggle-off fa-2x\' style=\'color:grey;\'></i></a>&ensp;')
ELSE ELSE
CONCAT('<a href=\'?disable=',operator_id,'\'>" . TQ_("Disable") . "</a>') CONCAT('&ensp;<a href=\'?disable=',operator_id,'\'><i data-toggle=\'tooltip\' title=\'" . TQ_("Disable") . "\' class=\'fa fa-toggle-on fa-2x\'></i></a>&ensp;')
END END as enabledisable,
as enabledisable, CASE WHEN voip = 0 THEN
CASE WHEN voip = 0 THEN CONCAT('<a href=\'?voipenable=',operator_id,'\'>" . TQ_("Enable VoIP") . "</a>')
CONCAT('<a href=\'?voipenable=',operator_id,'\'>" . TQ_("Enable VoIP") . "</a>') ELSE
ELSE CONCAT('<a href=\'?voipdisable=',operator_id,'\'>" . TQ_("Disable VoIP") . "</a>')
CONCAT('<a href=\'?voipdisable=',operator_id,'\'>" . TQ_("Disable VoIP") . "</a>') END as voipenabledisable,
END as voipenabledisable, CONCAT('&emsp;<a href=\'?edit=',operator_id,'\'><i data-toggle=\'tooltip\' title=\'" . TQ_("Edit") . "\' class=\'fa fa-pencil-square-o fa-lg\'></i></a>&emsp;') as edit, username
CONCAT('<a href=\'?edit=',operator_id,'\'>" . TQ_("Edit") . "</a>') as edit, FROM operator
username LEFT JOIN `extension` as e ON (e.current_operator_id = operator_id)";
FROM operator
LEFT JOIN `extension` as e ON (e.current_operator_id = operator_id)";
$rs = $db->GetAll($sql); $rs = $db->GetAll($sql);
xhtml_head(T_("Operator list"),true,array("../css/table.css")); xhtml_head(T_("Operator list"),true,array("../include/bootstrap-3.3.2/css/bootstrap.min.css","../include/font-awesome-4.3.0/css/font-awesome.css","../css/custom.css"));
$columns = array("name","username","extension","enabledisable","edit"); $columns = array("name","username","extension","enabledisable","edit");
$titles = array(T_("Operator"),T_("Username"),T_("Extension"),T_("Enable/Disable"),T_("Edit")); $titles = array(T_("Operator"),T_("Username"),T_("Extension"),"&emsp;<i class='fa fa-lg fa-power-off '></i>","&emsp;<i class='fa fa-lg fa-pencil-square-o'></i>");
if (VOIP_ENABLED) if (VOIP_ENABLED)
{ {
print "<p>" . T_("Download the file for each user and save in the same folder as the voip.exe executable. When the file is executed, it will run the voip.exe program with the correct connection details to connect the operator to the VoIP server") . "</p>";
print "<p><a href='../voipclient.exe'>" . T_("Download Windows VoIP Executable") . "</a></p>";
print "<p><a href='../voipclient'>" . T_("Download Linux VoIP Executable") . "</a></p>";
$columns[] = "voipenabledisable"; $columns[] = "voipenabledisable";
$columns[] = "winbat"; $columns[] = "winbat";
$columns[] = "sh"; $columns[] = "sh";
$titles[] = T_("Enable/Disable VoIP"); $titles[] = T_("VoIP ON/Off");
$titles[] = T_("Windows VoIP"); $titles[] = T_("Win file");//Windows VoIP
$titles[] = T_("*nix VoIP"); $titles[] = T_("*nix flle");//*nix VoIP
} }
echo "<div class=' col-sm-10'><div class=' panel-body'>";
xhtml_table($rs,$columns,$titles); xhtml_table($rs,$columns,$titles);
echo "</div></div>";
echo "<div class='form-group col-sm-2'>
<div class='panel-body'><a href='operators.php?add=add' class='btn btn-default btn-block'><i class='fa fa-lg fa-user-plus'></i>&emsp;" . T_("Add an operator") . "</a></div>
<div class='panel-body'><a href='extensionstatus.php' class='btn btn-default btn-block'><i class='fa fa-lg fa-whatsapp'></i>&emsp;" . T_("Extensions") . "</a></div>
<div class='panel-body'><a href='operatorquestionnaire.php' class='btn btn-default btn-block'><i class='fa fa-lg fa-link'></i> " . T_("Assign to questionnaire") . "</a></div>
<div class='panel-body'><a href='operatorskill.php' class='btn btn-default btn-block'><i class='fa fa-lg fa-user-md'></i>&emsp;" . T_("Operator skills") . "</a></div>
<div class='panel-body'><a href='operatorperformance.php' class='btn btn-default btn-block'><i class='fa fa-lg fa-signal'></i>&emsp;" . T_("Operator performance") . "</a></div>";
if (VOIP_ENABLED)
{
print "<div class='well'>" . T_("Download the file for each user and save in the same folder as the voip.exe executable. When the file is executed, it will run the voip.exe program with the correct connection details to connect the operator to the VoIP server"). "</br></br>";
print "<a href='../voip/voipclient.exe' class='btn btn-default btn-block' title='" . T_("Download Windows VoIP Client Executable file") . "'><i class='fa fa-lg fa-download'></i>&emsp;" . T_("Download Win file") . "</a></br>";
print "<a href='../voip/voipclient' class='btn btn-default btn-block' title='" . T_("Download Linux VoIP Executable file") . "'><i class='fa fa-lg fa-download'></i>&emsp;" . T_("Download Linux file") . "</a></div>";
}
print "</div>";
xhtml_foot(); xhtml_foot();
} }

View File

@@ -106,8 +106,6 @@ function vqd($operator_id,$questionnaire_id)
} }
if (isset($_POST['submit'])) if (isset($_POST['submit']))
{ {
$db->StartTrans(); $db->StartTrans();
@@ -136,7 +134,6 @@ if (isset($_POST['submit']))
} }
$sql = "SELECT questionnaire_id,description $sql = "SELECT questionnaire_id,description
FROM questionnaire FROM questionnaire
WHERE enabled = 1 WHERE enabled = 1
@@ -144,7 +141,7 @@ $sql = "SELECT questionnaire_id,description
$questionnaires = $db->GetAll($sql); $questionnaires = $db->GetAll($sql);
$sql = "SELECT operator_id,firstname as description $sql = "SELECT operator_id, CONCAT(firstName,' ', lastName ) as opname, username
FROM operator FROM operator
WHERE enabled = 1 WHERE enabled = 1
ORDER by operator_id ASC"; ORDER by operator_id ASC";
@@ -152,7 +149,7 @@ $sql = "SELECT operator_id,firstname as description
$operators = $db->GetAll($sql); $operators = $db->GetAll($sql);
xhtml_head(T_("Assign operators to questionnaires"),false,array("../css/table.css")); xhtml_head(T_("Assign operators to questionnaires"),true,array("../include/bootstrap-3.3.2/css/bootstrap.min.css","../include/iCheck/skins/square/blue.css","../css/custom.css"),array("../js/jquery-2.1.3.min.js","../include/iCheck/icheck.min.js"));
?> ?>
@@ -210,8 +207,6 @@ function checkQid(q)
QidOn = 0; QidOn = 0;
} }
function checkVid(v) function checkVid(v)
{ {
@@ -234,51 +229,51 @@ function checkVid(v)
VidOn = 0; VidOn = 0;
} }
</script> </script>
</head> </head>
<body> <body>
<?php <?php
print "<form action=\"\" method=\"post\" class=''><table class='table-bordered table-hover table-condensed form-group'><thead>";
print "<tr><th>&emsp;" . T_("Username") . "&emsp;</th><th>&emsp;" . T_("Operator") . "&emsp;</th>";
print "<form action=\"\" method=\"post\"><table>";
print "<tr><th></th>";
foreach($questionnaires as $q) foreach($questionnaires as $q)
{ {
print "<th><a href=\"javascript:checkQid({$q['questionnaire_id']})\">{$q['description']}</a></th>"; print "<th><a href=\"javascript:checkQid({$q['questionnaire_id']})\">{$q['description']}</a></th>";
} }
print "</tr>"; print "</tr></thead>";
$class = 0;
foreach($operators as $v) foreach($operators as $v)
{ {
print "<tr class='";
if ($class == 0) {$class = 1; print "even";} else {$class = 0; print "odd";} print "<tr class=''>
print "'>"; <th>&emsp;{$v['username']}&emsp;</th>
print "<th><a href=\"javascript:checkVid({$v['operator_id']})\">{$v['description']}</a></th>"; <th style=\"text-align: left;\";>&emsp;<a href=\"javascript:checkVid({$v['operator_id']})\" >{$v['opname']}</a>&emsp;</th>";
foreach($questionnaires as $q) foreach($questionnaires as $q)
{ {
$checked = ""; $checked = "";
if (vq($v['operator_id'],$q['questionnaire_id'])) $checked="checked=\"checked\""; if (vq($v['operator_id'],$q['questionnaire_id'])) $checked="checked=\"checked\"";
print "<td><input type=\"checkbox\" name=\"cb_{$q['questionnaire_id']}_{$v['operator_id']}\" id=\"cb_{$q['questionnaire_id']}_{$v['operator_id']}\" $checked></input></td>"; print "<td class='text-center'><input type=\"checkbox\" name=\"cb_{$q['questionnaire_id']}_{$v['operator_id']}\" id=\"cb_{$q['questionnaire_id']}_{$v['operator_id']}\" $checked style=\"width: 16px; height: 16px; margin-top: 5px;\"></input></td>";
} }
print "</tr>"; print "</tr>";
} }
print "</table><p><input type=\"submit\" name=\"submit\" value=\"" . T_("Assign operators to questionnaires") . "\"/></p></form>"; print "</table><input class='btn btn-default fa' type='submit' name='submit' value='" . T_("Assign operators to questionnaires") . "'/></form>";
xhtml_foot(); xhtml_foot();
?> ?>
<script type="text/javascript">
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
increaseArea: '30%'
});
</script>

View File

@@ -49,7 +49,7 @@ global $db;
$a = false; $a = false;
if (isset($_POST['operator'])) if (isset($_POST['operator']) && isset($_POST['adduser']))
{ {
$operator = $db->qstr($_POST['operator'],get_magic_quotes_gpc()); $operator = $db->qstr($_POST['operator'],get_magic_quotes_gpc());
$firstname = $db->qstr($_POST['firstname'],get_magic_quotes_gpc()); $firstname = $db->qstr($_POST['firstname'],get_magic_quotes_gpc());
@@ -68,8 +68,8 @@ if (isset($_POST['operator']))
$laste = $db->GetRow($sql); $laste = $db->GetRow($sql);
$extensionn = "1000"; $extensionn = "2000";
$extension = "'IAX2/1000'"; $extension = "'IAX2/2000'";
//increment if exists //increment if exists
if (!empty($laste)) if (!empty($laste))
@@ -80,10 +80,10 @@ if (isset($_POST['operator']))
//generate random 8 length password //generate random 8 length password
$extensionnp = ""; $extensionnp = "";
$length = 12; $length = 25;
$chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $chars = "abcdefghijklmnopqrstuvwxyz0123456789";
for ($i = 0; $i < $length; $i++) for ($i = 0; $i < $length; $i++)
$extensionnp .= $chars[(rand() % strlen($chars))]; $extensionnp .= $chars[(mt_rand() % strlen($chars))];
//quote for SQL //quote for SQL
$extensionp = "'$extensionnp'"; $extensionp = "'$extensionnp'";
@@ -144,11 +144,12 @@ if (isset($_POST['operator']))
$htg->addUserGroup(HTGROUP_ADMIN); $htg->addUserGroup(HTGROUP_ADMIN);
} }
$a = T_("Added:") . " " . $operator; $a = "<div class='alert alert-info'><h3>" . T_("Added operator :") . " " . $operator . "</h3>";
if (FREEPBX_PATH !== false) if (FREEPBX_PATH !== false)
$a .= "<br/>" . T_("FreePBX has been reloaded for the new VoIP extension to take effect"); $a .= "<br/>" . T_("FreePBX has been reloaded for the new VoIP extension to take effect");
print "</div>";
if ($temporary) if ($temporary)
{ {
@@ -165,27 +166,26 @@ if (isset($_POST['operator']))
if ($refusal) if ($refusal)
$db->Execute(" INSERT INTO operator_skill (operator_id,outcome_type_id) $db->Execute(" INSERT INTO operator_skill (operator_id,outcome_type_id)
VALUES ('$oid','3')"); VALUES ('$oid','3')");
} }
else else
{ {
$a = T_("Could not add operator. There may already be an operator of this name:") . " $operator "; $a = T_("Could not add operator. There may already be an operator of this name:") . " $operator ";
} }
} }
} }
xhtml_head(T_("Add an operator")); xhtml_head(T_("Add an operator"),true,array("../include/bootstrap-3.3.2/css/bootstrap.min.css","../include/bootstrap-toggle/css/bootstrap-toggle.min.css", "../css/custom.css"), array("../js/jquery-2.1.3.min.js", "../include/bootstrap-3.3.2/js/bootstrap.min.js","../include/bootstrap-toggle/js/bootstrap-toggle.min.js"));
if ($a) if ($a) {
{ echo $a;
?> }
<h3><?php echo $a; ?></h3> else {
<?php echo "<div class='well'>";
//echo "<p>" . T_("Adding an operator here will give the user the ability to call cases") . "<a href='operatorquestionnaire.php'>" . T_("Assign Operator to Questionnaire") . "</a>" . T_("tool") . ".</p>";
echo "<p>" . T_("Use this form to enter the username of a user based on your directory security system. For example, if you have secured the base directory of queXS using Apache file based security, enter the usernames of the users here.") . "</p>";
echo "<p>" . T_("The username and extension must be unique for each operator.") . "</p>";
echo "</div>";
} }
$sql = "SELECT Time_zone_name as value, Time_zone_name as description $sql = "SELECT Time_zone_name as value, Time_zone_name as description
@@ -198,35 +198,119 @@ $sql = "SELECT extension_id as value, extension as description
WHERE current_operator_id IS NULL"; WHERE current_operator_id IS NULL";
$ers = $db->GetAll($sql); $ers = $db->GetAll($sql);
?> ?>
<h1><?php echo T_("Add an operator"); ?></h1>
<p><?php echo T_("Adding an operator here will give the user the ability to call cases"); ?> <a href="operatorquestionnaire.php"><?php echo T_("Assign Operator to Questionnaire"); ?></a> <?php echo T_("tool"); ?>.</p> <script type="text/javascript">
<p><?php echo T_("Use this form to enter the username of a user based on your directory security system. For example, if you have secured the base directory of queXS using Apache file based security, enter the usernames of the users here."); ?></p> //Password generator
<p><?php echo T_("The username and extension must be unique for each operator.")?></p> upp = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
<form enctype="multipart/form-data" action="" method="post"> low = new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
<p><?php echo T_("Enter the username of an operator to add:"); ?> <input name="operator" type="text"/></p> dig = new Array('0','1','2','3','4','5','6','7','8','9');
sym = new Array('~','!','@','#','$','%','^','&','*','(',')','_','+','=','|',';','.','/','?','<','>','{','}','[',']');
// --------------------------------------------------------------------------------------------------------------------------------------------------------------
function rnd(x,y,z) {
var num;
do {
num = parseInt(Math.random()*z);
if (num >= x && num <= y) break;
} while (true);
return(num);
}
// --------------------------------------------------------------------------------------------------------------------------------------------------------------
function generate() {
var pwd = '';
var res, s;
var k = 0;
var n = document.operform.number.value;
var pass = new Array();
var w = rnd(30,80,100);
for (var r = 0; r < w; r++) {
res = rnd(1,25,100); pass[k] = upp[res]; k++;
res = rnd(1,25,100); pass[k] = low[res]; k++;
res = rnd(1,9,100); pass[k] = dig[res]; k++;
res = rnd(1,24,100); pass[k] = sym[res]; k++;
}
for (var i = 0; i < n; i++) {
s = rnd(1,k-1,100);
pwd+= pass[s];
}
document.operform.password.value = pwd;
}
</script>
<form enctype="multipart/form-data" action="" method="post" class="form-horizontal panel-body" name="operform">
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Username") . ": ";?></label>
<div class="col-sm-3"><input name="operator" type="text" class="form-control" required /></div>
</div>
<?php if (HTPASSWD_PATH !== false && HTGROUP_PATH !== false) { ?> <?php if (HTPASSWD_PATH !== false && HTGROUP_PATH !== false) { ?>
<p><?php echo T_("Enter the password of an operator to add:"); ?> <input name="password" type="text"/></p> <div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Password") . ": ";?></label>
<div class="col-sm-3"><input name="password" id="password" type="text" class="form-control" required pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" /></div>
<div class="col-sm-6 form-inline">&emsp;
<input type="button" onclick="generate();" value="<?php echo T_("Generate");?>" class="btn btn-default fa" />&emsp;<?php echo T_("Password with");?>&ensp;
<input type="number" name="number" value="25" min="8" max="50" style="width:5em;" class="form-control" />&ensp;<?php echo T_("characters");?>
</div>
</div>
<?php } ?> <?php } ?>
<p><?php echo T_("Enter the first name of an operator to add:"); ?> <input name="firstname" type="text"/></p> <div class="form-group">
<p><?php echo T_("Enter the surname of an operator to add:"); ?> <input name="lastname" type="text"/></p> <label class="col-sm-3 control-label"><?php echo T_("First name") . ": ";?></label>
<p><a href='timezonetemplate.php'><?php echo T_("Enter the Time Zone of an operator to add:"); echo "</a>"; display_chooser($rs,"Time_zone_name","Time_zone_name",false,false,false,false,array("value",get_setting("DEFAULT_TIME_ZONE"))); ?> </p> <div class="col-sm-3"><input name="firstname" type="text" class="form-control" required/></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Last name") . ": ";?></label>
<div class="col-sm-3"><input name="lastname" type="text" class="form-control"/></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Timezone") . ": ";?></label>
<div class="col-sm-3"><?php display_chooser($rs,"Time_zone_name","Time_zone_name",false,false,false,true,array("value",get_setting("DEFAULT_TIME_ZONE")),true,"form-inline");?></div>
<div class="col-sm-6 form-inline">
<?php echo T_("Edit") . "&emsp;";?>
<a href='timezonetemplate.php' class="btn btn-default fa"><?php echo T_("TimeZones list");?></a>
</div>
</div>
<?php if (FREEPBX_PATH == false) { ?> <?php if (FREEPBX_PATH == false) { ?>
<p><a href='extensionstatus.php'><?php echo T_("Select an extension for this operator:"); echo "</a>"; display_chooser($ers,"extension_id","extension_id",true,false,false,false); ?> </p> <div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Extension") . ": ";?></label>
<div class="col-sm-3"><?php display_chooser($ers,"extension_id","extension_id",true,false,false,true,false,true,"form-inline");?></div>
<div class="col-sm-6 form-inline">
<?php echo T_("Edit") . "&emsp;";?>
<a href='extensionstatus.php' class="btn btn-default fa"><?php echo T_("Extensions");?></a>
</div>
</div>
<?php } ?> <?php } ?>
<p><?php echo T_("Will this operator be using VoIP?"); ?> <input name="voip" type="checkbox" checked="checked"/></p>
<p><?php echo T_("Jabber/XMPP chat user"); ?>: <input name="chat_user" type="text"/></p> <div class="form-group">
<p><?php echo T_("Jabber/XMPP chat password"); ?>: <input name="chat_password" type="text"/></p> <label class="col-sm-3 control-label"><?php echo T_("Uses VoIP") . "? ";?></label>
<p><?php echo T_("Will this operator be using chat?"); ?> <input name="chat_enable" type="checkbox"/></p> <div class="col-sm-3"><input name="voip" type="checkbox" data-toggle="toggle" data-on="<?php echo T_("Yes"); ?>" data-off="<?php echo T_("No"); ?>" checked="checked"/></div>
<p><?php echo T_("Is the operator a normal interviewer?"); ?> <input name="temporary" type="checkbox" checked="checked"/></p> </div>
<p><?php echo T_("Is the operator a supervisor?"); ?> <input name="supervisor" type="checkbox"/></p> <div class="form-group">
<p><?php echo T_("Is the operator a refusal converter?"); ?> <input name="refusal" type="checkbox"/></p> <label class="col-sm-3 control-label"><?php echo T_("Jabber/XMPP chat user") . ": ";?></label>
<p><input type="submit" value="<?php echo T_("Add user"); ?>" /></p> <div class="col-sm-3"><input name="chat_user" type="text" class="form-control"/></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Jabber/XMPP chat password") . ": ";?></label>
<div class="col-sm-3"><input name="chat_password" type="text" class="form-control"/></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Uses chat") . "? ";?></label>
<div class="col-sm-3"><input name="chat_enable" type="checkbox" data-toggle="toggle" data-on="<?php echo T_("Yes"); ?>" data-off="<?php echo T_("No"); ?>" /></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Is the operator a normal interviewer?");?></label>
<div class="col-sm-3"><input name="temporary" type="checkbox" data-toggle="toggle" data-on="<?php echo T_("Yes"); ?>" data-off="<?php echo T_("No"); ?>" data-offstyle="danger" checked="checked"/></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Is the operator a supervisor?");?></label>
<div class="col-sm-3"><input name="supervisor" type="checkbox" data-toggle="toggle" data-on="<?php echo T_("Yes"); ?>" data-off="<?php echo T_("No"); ?>" data-onstyle="danger" data-offstyle="primary"/></div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"><?php echo T_("Is the operator a refusal converter?");?></label>
<div class="col-sm-3"><input name="refusal" type="checkbox" data-toggle="toggle" data-on="<?php echo T_("Yes"); ?>" data-off="<?php echo T_("No"); ?>" data-onstyle="danger" data-offstyle="primary"/></div>
</div>
<div class="form-group"><div class="col-sm-3 col-sm-offset-3"><input type="submit" name="adduser" class="btn btn-primary btn-block" value="<?php echo T_("Add an operator"); ?>" /></div></div>
</form> </form>
<?php <?php
xhtml_foot(); xhtml_foot();
?> ?>

View File

@@ -105,8 +105,6 @@ function vqd($operator_id,$outcome_type_id)
} }
if (isset($_POST['submit'])) if (isset($_POST['submit']))
{ {
$db->StartTrans(); $db->StartTrans();
@@ -138,7 +136,7 @@ $sql = "SELECT outcome_type_id,description
$outcome_types = $db->GetAll($sql); $outcome_types = $db->GetAll($sql);
$sql = "SELECT operator_id,firstname as description $sql = "SELECT operator_id, CONCAT(firstName,' ', lastName) as description, username
FROM operator FROM operator
WHERE enabled = 1 WHERE enabled = 1
ORDER by operator_id ASC"; ORDER by operator_id ASC";
@@ -146,9 +144,10 @@ $sql = "SELECT operator_id,firstname as description
$operators = $db->GetAll($sql); $operators = $db->GetAll($sql);
xhtml_head(T_("Assign operators to Skills"),false,array("../css/table.css")); xhtml_head(T_("Assign operators to Skills"),true,array("../include/bootstrap-3.3.2/css/bootstrap.min.css","../include/iCheck/skins/square/blue.css","../css/custom.css"),array("../js/jquery-2.1.3.min.js","../include/iCheck/icheck.min.js"));
print "<div class='well'>" . T_("Set which types of cases will be made available to each operator. </br> Please note that all operators will be allowed to assign all possible outcomes to a case. This restricts which ones will be assigned to an operator.") . "</div>";
print "<p>" . T_("Set which types of cases will be made available to each operator. Please note that all operators will be allowed to assign all possible outcomes to a case. This restricts which ones will be assigned to an operator.") . "</p>";
?> ?>
@@ -207,7 +206,6 @@ function checkQid(q)
} }
function checkVid(v) function checkVid(v)
{ {
@@ -230,51 +228,52 @@ function checkVid(v)
VidOn = 0; VidOn = 0;
} }
</script> </script>
</head> </head>
<body> <body>
<?php <?php
//$country_code = 'RU'; // Nederlandse Antillen
//print_r(DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, $country_code));
print "<form action=\"\" method=\"post\"><table>";
print "<tr><th></th>"; print "<form action=\"\" method=\"post\"><table class='table-bordered table-hover table-condensed form-group'><thead>";
print "<tr><th>&emsp;" . T_("Username") . "&emsp;</th><th>&emsp;" . T_("Operator") . "&emsp;</th>";
foreach($outcome_types as $q) foreach($outcome_types as $q)
{ {
print "<th><a href=\"javascript:checkQid({$q['outcome_type_id']})\">" . T_($q['description']) . "</a></th>"; print "<th>&emsp;<a href=\"javascript:checkQid({$q['outcome_type_id']})\">" . T_($q['description']) . "</a>&emsp;</th>";
} }
print "</tr>"; print "</tr></thead>";
$ct = 1;
foreach($operators as $v) foreach($operators as $v)
{ {
print "<tr class='"; print "<tr class=''>
if ($ct == 1) {$ct = 0; print "even";} else {$ct = 1; print "odd";} <th>&emsp;{$v['username']}&emsp;</th>
print "'>"; <th>&emsp;<a href=\"javascript:checkVid({$v['operator_id']})\">{$v['description']}</a>&emsp;</th>";
print "<th><a href=\"javascript:checkVid({$v['operator_id']})\">{$v['description']}</a></th>";
foreach($outcome_types as $q) foreach($outcome_types as $q)
{ {
$checked = ""; $checked = "";
if (vq($v['operator_id'],$q['outcome_type_id'])) $checked="checked=\"checked\""; if (vq($v['operator_id'],$q['outcome_type_id'])) $checked="checked=\"checked\"";
print "<td><input type=\"checkbox\" name=\"cb_{$q['outcome_type_id']}_{$v['operator_id']}\" id=\"cb_{$q['outcome_type_id']}_{$v['operator_id']}\" $checked></input></td>"; print "<td class='text-center'><input type=\"checkbox\" name=\"cb_{$q['outcome_type_id']}_{$v['operator_id']}\" id=\"cb_{$q['outcome_type_id']}_{$v['operator_id']}\" $checked></input></td>";
} }
print "</tr>"; print "</tr>";
} }
print "</table><p><input type=\"submit\" name=\"submit\" value=\"" . T_("Modify operator skills") ."\"/></p></form>"; print "</table><input type=\"submit\" class='btn btn-default fa' name=\"submit\" value=\"" . T_("Modify operator skills") ."\"/></form>";
xhtml_foot(); xhtml_foot();
?> ?>
<script type="text/javascript">
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
increaseArea: '30%'
});
</script>

View File

@@ -223,7 +223,7 @@ function get_stats_total($rs)
$callsph = round($calls/($totaltime/3600),4); $callsph = round($calls/($totaltime/3600),4);
} }
$rs[] = array("effectiveness" => $effectiveness, "completions" => $completions,"time" => sec_to_time($totaltime),"totalcalls" => $calls,"callt" => sec_to_time($calltime),"CPH" => $cph,"CALLSPH" => $callsph); $rs[] = array("effectiveness" => '<b>' . $effectiveness . '</b>', "completions" => '<b>' .$completions. '</b>',"time" => '<b>' . sec_to_time($totaltime). '</b>',"totalcalls" => '<b>' . $calls. '</b>',"callt" => '<b>' . sec_to_time($calltime). '</b>',"CPH" => '<b>' . $cph. '</b>',"CALLSPH" => '<b>' . $callsph. '</b>');
return $rs; return $rs;
} }