⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queues.html

📁 asterisk 的图形管理界面
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!--
 * 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 + -