📄 queues.html
字号:
<!--
* Asterisk-GUI - an Asterisk configuration interface
*
* Manage Queues
*
* Copyright (C) 2006-2007, Digium, Inc.
*
* Mark Spencer <markster@digium.com>
* Pari Nannapaneni <pari@digium.com>
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*
-->
<script src="scripts/prototype.js"></script>
<script src="scripts/rico.js"></script>
<script src="scripts/astman.js"></script>
<script src="scripts/tooltip.js"></script>
<link href="stylesheets/rico.css" media="all" rel="Stylesheet" type="text/css" />
<link href="stylesheets/schwing.css" media="all" rel="Stylesheet" type="text/css" />
<script>
var adstatus;
var mohcallbacks = new Object;
var queuecallbacks = new Object;
var usercallbacks = new Object;
var extencallbacks = new Object;
var callbacks = new Object;
var widgets = {};
var queueagents = new Array;
var queuenames = new Array;
var fieldnames = ['agents', 'autofill', 'autopause', 'cancel', 'delete', 'fullname', 'joinempty', 'leavewhenempty', 'maxlen', 'musicclass', 'name', 'new', 'reportholdtime', 'save', 'strategy', 'timeout', 'wrapuptime'];
var k =0;
var j = -1;
var extensions_conf_qs = new Array;
var localextenlength ;
var userbase;
function togglefeatures() {
if (adstatus == "shown") {
adstatus = "hidden";
new Rico.Effect.Size('advancedw', null, 1, 120, 8, {complete:function() { $('advancedw').style.height=1;} } );
} else {
adstatus = "shown";
$('advancedw').style.visibility = "visible";
new Rico.Effect.Size('advancedw', null, 190, 120, 8 );
}
}
function rename_extension(a,b){
// rename extension 'a' in extensions.conf to 'b'
// change 'exten => a,1,Queue' in default to 'exten => b,1,Queue'
var opt0 = {
method: 'get',
asynchronous: true,
onSuccess: function() {
return true;
},
onFailure: function(t) {
gui_alert("Config Error: " + t.status + ": " + t.statusText);
return false;
}
};
uri0 = build_action('update', 0, specialcontext ,'exten', b+',1,Queue(${EXTEN})', a+',1,Queue(${EXTEN})' );
opt0.parameters="action=updateconfig&srcfilename=" + encodeURIComponent("extensions.conf") + "&dstfilename=" + encodeURIComponent("extensions.conf") + uri0;
tmp0 = new Ajax.Request(asterisk_rawmanPath, opt0);
}
function add_extension(a){
// add extension 'a' in extensions.conf
// add 'exten => a,1,Queue' to default
var opt0 = {
method: 'get',
asynchronous: true,
onSuccess: function() {
return true;
},
onFailure: function(t) {
gui_alert("Config Error: " + t.status + ": " + t.statusText);
return false;
}
};
uri0 = build_action('append', 0, specialcontext ,'exten', a+',1,Queue(${EXTEN})');
opt0.parameters="action=updateconfig&srcfilename=" + encodeURIComponent("extensions.conf") + "&dstfilename=" + encodeURIComponent("extensions.conf") + uri0;
tmp0 = new Ajax.Request(asterisk_rawmanPath, opt0);
}
function delete_extension(a){
// delete extension 'a' in extensions.conf
var opt0 = {
method: 'get',
asynchronous: true,
onSuccess: function() {
return true;
},
onFailure: function(t) {
gui_alert("Config Error: " + t.status + ": " + t.statusText);
return false;
}
};
uri0 = build_action('delete', 0, specialcontext ,'exten', '',a+',1,Queue(${EXTEN})');
opt0.parameters="action=updateconfig&srcfilename=" + encodeURIComponent("extensions.conf") + "&dstfilename=" + encodeURIComponent("extensions.conf") + uri0;
tmp0 = new Ajax.Request(asterisk_rawmanPath, opt0);
}
function save_queue(){
var p = 0;
var q = 0;
var r = 0;
var fields = new Array('fullname', 'strategy', 'timeout', 'wrapuptime','autofill','autopause','maxlen', 'joinempty', 'leavewhenempty', 'reportholdtime','musicclass');
var otherfields_action, tmp;
var opt = {
method: 'get',
asynchronous: true,
onSuccess: function() {
$('status_message').style.display='none';
gui_feedback('Updated','blue');
$('new').disabled = false;
$('save_q').disabled = true;
$('save').disabled = true;
$('cancel').disabled = true;
var cattmp = new Object;
cattmp.catname = $('queues').value;
$('queues').engine.fields2changes($('queues').widgets, $('queues').stored_config, cattmp);
$('queues').options[$('queues').selectedIndex].innerHTML = $('name').value + " -- Queue '" + $('fullname').value +"'";
$('queues').options[$('queues').selectedIndex].value =$('name').value;
$('queues').options[$('queues').selectedIndex].core_name = cattmp.catname;
for (var y = 0; y < $('queues').options.length + 1; y++) {
if (!$('queues').options[y] ||
do_compare($('queues'), $('queues').options[$('queues').selectedIndex], $('queues').options[y])) {
$('queues').options.add($('queues').options[$('queues').selectedIndex], y);
break;
}
}
},
onFailure: function(t) {
$('status_message').style.display='none';
gui_alert("Config Error: " + t.status + ": " + t.statusText);
}
};
// before going any further check whether there is another entry with this name
if( $('name').value != $('queues').value ){
if ($('queues').stored_config.catbyname[$('name').value]) {
gui_alert("Sorry, an entry named " + $('name').value + " already exists!");
return;
}
for(var k=0; k<$('queues').length; k++ ){
var tmp = $('queues').options[k].innerHTML.split(' -- ');
if( tmp[0] == $('name').value ){
gui_alert("Sorry, an entry named " + $('name').value + " already exists!");
return;
}
}
}
if(!$('name').value.length){
gui_alert("Sorry, an Extension must be specified for this Queue!");
$('name').focus();
return;
}
if(!$('fullname').value.length){
gui_alert("Sorry, a Full Name must be specified !");
$('fullname').focus();
return;
}
if( localextenlength !=0 && (localextenlength != $('name').value.length) ) {
gui_alert("Sorry, An Extension must be "+ localextenlength + " digits !");
$('name').focus();
return ;
}
if (!check_patternonfields( [ 'name', 'fullname','timeout','wrapuptime','maxlen' ] ) ){
return false;
}
$('status_message').style.display="block";
p = 0;
uri = "";
if( $('queues').options[$('queues').selectedIndex].innerHTML=='New Entry' ){
uri += build_action('newcat', p, $('name').value,"", ""); p = p+1;
otherfields_action = 'append'; // add other fields
add_extension( $('name').value ); // add in extensions.conf
//add to stored names & fields
r = queuenames.length;
queueagents[r] = new Array;
queuenames[r] = $('name').value ;
q =0;
for (k=0;k< $('agents').length ;k++ ){
if( $('agents').options[k].selected ){
queueagents [r][q] = $('agents').options[k].innerHTML.split(' -- ')[0] ;
q = q+1;
}
}
}else{
if( $('name').value != $('queues').value ){
uri += build_action('renamecat', p, $('queues').value ,"", $('name').value ); p = p+1;
rename_extension($('queues').value,$('name').value ); // rename in extensions.conf
}
// delete existing agents
uri += build_action('delete', p, $('name').value,"member", ""); p = p+1;
otherfields_action = 'update'; // update other fields
//update the stored names & fields
for( k=0; k<queuenames.length; k++ ){
if( queuenames[k] == $('queues').value ){
j = k;
break;
}
}
// reset the array queueagents [j] to selected elements of $('agents')
queueagents [j] = [];
q =0;
for (k=0;k< $('agents').length ;k++ ){
selectedagent = "selectedagent" + k;
if( $(selectedagent).checked ){
queueagents [j][q] = $('agents').options[k].innerHTML.split(' -- ')[0] ;
$('agents').options[k].selected = true;
q = q+1;
}else{
$('agents').options[k].selected = false;
}
}
// also reset queuenames[j] to $('name').value
queuenames[j] = $('name').value;
}
for(k=0; k<fields.length; k++ ){
if ( $(fields[k]).type =='checkbox'){
tmp=( $(fields[k]).checked)? 'yes': 'no';
}else{
tmp = $(fields[k]).value;
}
uri += build_action(otherfields_action, p, $('name').value , fields[k] , tmp);
p = p + 1;
}
//add agents
for(k=0; k<$('agents').length; k++){
selectedagent = "selectedagent" + k;
if( $(selectedagent).checked ){
uri += build_action('append', p, $('name').value,"member", "Agent/"+$(selectedagent).value);
p = p+1;
}
}
opt.parameters="action=updateconfig&srcfilename=" + encodeURIComponent("queues.conf") + "&dstfilename=" + encodeURIComponent("queues.conf") + uri;
tmp = new Ajax.Request(asterisk_rawmanPath, opt);
}
// User call backs
usercallbacks.loaded = function (){
merge_extensions($('queues'), $('extensions'));
merge_extensions($('queues'), $('devices'));
parent.loadscreen(this);
}
usercallbacks.identifier = "extension";
usercallbacks.postselect = function (){ }
usercallbacks.format = function (t,x){
if ((t.name == 'general'))
return null;
if ( t.fieldbyname['hasagent']=='yes' )
return t.name + " -- " + t.fieldbyname['fullname'];
else
return null;
}
// Call Backs
callbacks.loaded = function (){ parent.astmanEngine.config2list("users.conf", $('agents'), new Array(), usercallbacks); }
callbacks.identifier = "extension";
callbacks.postselect = function (){ }
callbacks.format = function (t,x){
if ((t.name == 'general')){
if ( t.fieldbyname['localextenlength'] && t.fieldbyname['localextenlength'].length){ localextenlength = parseInt(t.fieldbyname['localextenlength']) ; }
if ( t.fieldbyname['userbase'] && t.fieldbyname['userbase'].length){ userbase = t.fieldbyname['userbase'] ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -