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

📄 numberplan.html.svn-base

📁 asterisk-gui asterisk网关接口编程 控制asterisk的接口
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
<!-- * Asterisk-GUI	-	an Asterisk configuration interface * * Create Manage 'Dial Plans' * * 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/astman.js"></script><script src="scripts/tooltip.js"></script><link href="stylesheets/schwing.css" media="all" rel="Stylesheet" type="text/css" /><script>var widgets = { } ;var trunkcallbacks = { };var trunks_desc = { };var numplan_callbacks = { };var numberplansdata = { };var fieldnames = ['cancel', 'delete', 'include', 'name', 'new', 'plancomment', 'save'];//var default_numberplan = 0;var isnewrule ;var iscustom ;var pattern_beingedited ;var pattern_beingedited_priority ;var np_oldselect;function update_parkedcalls() {	var _exten = _$('extensions').innerHTML;	var _context = _$('extensions').value;	_$('message_text').innerHTML = "Updating ... ";	var _bg_s = _$('bg_transparent').style ;	var _sm_s = _$('status_message').style ;	_sm_s.zIndex = _bg_s.zIndex + 1;	_bg_s.display = '' ;	_sm_s.display = '' ;	if(_$("parked").checked) {		gui_feedback("Parking lots now added for Dialplan: " + _exten + " context: " + _context, 'blue');		var uri = build_action('append', 0, _context , "include", "parkedcalls");			makerequest('u', 'extensions.conf', uri, function(t) { return true;});		setTimeout( function(){ _bg_s.display = 'none'; _sm_s.display = 'none'; } , 1000 ); // add an unnecessary delay - for user perception, BE-335	} 	if(!_$("parked").checked) {		gui_feedback("Parking lots now deleted for Dialplan: " + _exten + " context: " + _context);		var uri = build_action('delete', 0, _context , "include", "", "parkedcalls");		makerequest('u', 'extensions.conf', uri, function(t) { return true;});		setTimeout( function(){ _bg_s.display = 'none'; _sm_s.display = 'none'; } , 1000 ); // add an unnecessary delay - for user perception, BE-335	}}function basicpattern(){	iscustom = false;	_$('define_advanced').style.display="none";	_$('define_usual').style.display="";}function ownpattern(){	iscustom = true;	_$('define_advanced').style.display="";	_$('define_usual').style.display="none";}function enablesave(){	_$('save_a').disabled = 0;	return true;}function add_callingrule(){	isnewrule = true;	iscustom = false;	_$('rulename').value = "";	_$('trunks').selectedIndex = -1 ;	_$('pattern').value = "";	_$('prepend').value = "";	_$('strip').value = "0" ;	_$('save_a').disabled = 1;	_$('define_advanced').style.display="none";	_$('define_usual').style.display="";	_$('userscontent').style.display="";	_$('bg_transparent').style.display ='';	_$('addrule').disabled =1;	_$('beginswith').value = "";	_$('followedby').value ="";	_$('ormore').checked = false;}function checkfields(){	if( _$('rulename').value.length == 0 ){		gui_alert("Please enter a Rule Name");		_$('rulename').focus();		return false;	}	if( _$('trunks').selectedIndex == -1){		gui_alert("Please select a service provider to place this call through");		return false;	}	if( _$('define_advanced').style.display=="none" && _$('beginswith').value.length==0 ){		gui_alert("Please Enter the beginning pattern of the number");		_$('beginswith').focus();		return false;	}	if( _$('define_usual').style.display=="none" && _$('pattern').value.length == 0 ){		gui_alert("Please Enter a custom pattern");		_$('pattern').focus();		return false;	}return true;}function buildpatternstring(){	var pattern = $('beginswith').value;	// Add an underscore	pattern = "_" + pattern;	// append 'followedby' number of X's 	var s = _$('followedby').value ;       for (var r=0; r < s ; r++){               pattern = pattern + "X" ;       }	// append a '.' if 'ormore' is checked	if( _$('ormore').checked ){		pattern = pattern + "!" ;	}	// assign this to the field 'pattern'	_$('pattern').value = pattern;}function add_rule_fromeditform( this_priority, oncomplete ){	var commentstring = (iscustom )? "custom" :"standard" ;	var _ptv = _$('pattern').value ;	var _extv = _$('extensions').value ;	var _rnv = _$('rulename').value ;	var _tv = _$('trunks').value ;	var _sv = _$('strip').value ;	var _pv = _$('prepend').value ;	var provider_name;	config2json('users.conf', 1, function(b) {         var c = b ;       	provider_name = (c[_tv]['provider']) ? unescape(c[_tv]['provider']) : _tv;	if( provider_name == 'bandwidth' && _pv.indexOf('+') != 0 ){ _pv = "+" + _pv ; }	var rule_string = _ptv + ',' + this_priority + ',Macro(trunkdial,${' + _tv + '}/'+ _pv +'${EXTEN:' + _sv + '},${'+_tv +"_cid})";	var uri = build_action('append', 0 , _extv ,"exten", rule_string );	commentstring = _ptv + ',' + this_priority + ',' + _rnv + "," + commentstring ;	uri += build_action('append', 1 , _extv ,"comment", commentstring );	_$('userscontent').style.display = "none";	_$('bg_transparent').style.display = "none";	_$('status_message').style.display = "";	makerequest('u', 'extensions.conf', uri,		function(t){			_$('status_message').style.display="none";			var m = numberplansdata[_extv]['npdata'];			if ( typeof m[_ptv] == 'undefined' ) { m[_ptv] = { }; }			m[_ptv][this_priority] = new ruleinanpdata(_tv, _sv , _pv );			m[_ptv][this_priority].rulename =  _rnv ; 			m[_ptv][this_priority].ruledesc = (iscustom) ? "custom" : parsepattern(_ptv,0) ;			oncomplete(); 		}	);	});}function saverule(){	if ( !checkfields() ) return false;	if( !iscustom){	buildpatternstring();}	var _extv = _$('extensions').value ;	var _pv = _$('pattern').value ;	if(isnewrule){ 		var newpriority=1;		var m = numberplansdata[_extv]['npdata'];		if( m.hasOwnProperty(_pv) && m[_pv].hasOwnProperty(''+newpriority)  ) { 			gui_alert("A rule for this pattern is already defined !") ; 			return ;		}		//if( typeof m[$('pattern').value] !="undefined" ){		//	for ( var y in m[$('pattern').value] ){		//		if ( m[$('pattern').value].hasOwnProperty( y ) ){break;}		//		newpriority++;		//	}		//}		var msg = "Calling Rule Added." ;		add_rule_fromeditform( newpriority, oncomplete = function(){ show_npdata_table(_extv);gui_feedback(msg,'blue'); } );	 }else{	// update exiting rule		// delete existing rule		// add rule with new values		delete_callingrule(pattern_beingedited,pattern_beingedited_priority, oncomplete = function(){				var msg = "Calling Rule Updated." ;				add_rule_fromeditform( pattern_beingedited_priority, oncomplete = function(){show_npdata_table(_extv); gui_feedback(msg,'blue');});			} 		);		//$('userscontent').style.display='none';		//$('addrule').disabled =0;		//return true;	 }}function parse_nprulesAndnpcomments(){	// for each element in numberplansdata[t.name]	{	//			create an object numberplansdata[t.name]['npdata']	//			parse "numberplansdata[t.name]['nprules']" and add to "numberplansdata[t.name]['npdata']"	//			parse "numberplansdata[t.name]['npcomments']" and add to "numberplansdata[t.name]['npdata']"	//	}	for(x in numberplansdata){ if (numberplansdata.hasOwnProperty(x)) {		var z = numberplansdata[x];		var y = z['npdata'];		for ( k =0 ; k < z['nprules'].length ; k++ ){			var temp = z['nprules'][k].split(","); // temp[0] is the pattern, temp[1] is the priority,temp[2] is 'Macro(trunkdial', temp[3] is ${trunkname}/${EXTEN:1})			var temp1 = temp[3].split("{");			var temp1b = temp1[1].split("/");			var temp1c = temp1b[1].split("$") ;			var temp2 = temp1[1].split("}");			var temp3 = temp1[2].split("}");			var temp4 = temp3[0].split(":");			temp[4] = temp2[0] ; // temp[4] is trunkname			temp[5] = temp4[1] ; // temp[5] is the #digits to strip in the front			if ( typeof y[temp[0]] == 'undefined' ) {				y[temp[0]] = { };			}			y[temp[0]][temp[1]] = new ruleinanpdata(temp[4], temp[5],temp1c[0]);		}		for ( k =0 ; k < z['npcomments'].length ; k++ ){			var temp = z['npcomments'][k].split(","); 			if( typeof y[temp[0]] == "undefined"){ continue ; }			if ( typeof y[temp[0]][temp[1]]  == "undefined" ){  continue ; }			y[temp[0]][temp[1]].rulename = temp[2] ;			y[temp[0]][temp[1]].ruledesc = ( temp[3] !="custom" ) ? parsepattern(temp[0],0) : "custom" ; 		}	}}}function show_npdata_table(a){	// now show m in a table - where m is the npdata of the selected numberplan	clear_table();	_$('table_one').style.display="";	var rules_nosp = new Array ;	var m = numberplansdata[a]['npdata'];	var _trunks = _$('trunks') ;	for( var x in  m ){ if (m.hasOwnProperty(x)) {		var sorted_priorities = [ ];		for ( var y in m[x] ){			if (m[x].hasOwnProperty(y)) { sorted_priorities.push(y); }		}		sorted_priorities.sort();		for( var z=0; z < sorted_priorities.length ; z++ ){			var trunk_exists = 0;			for(var i=0; i < _trunks.length ; i++ ){				if( _trunks.options[i].value == m[x][sorted_priorities[z]].trunk ){					trunk_exists = 1;					break;				}			}							if ( m[x][sorted_priorities[z]].trunk  == "" ){				rules_nosp.push(m[x][sorted_priorities[z]].rulename) ;				addrowtotable( x , sorted_priorities[z] , "undefined" , m[x][sorted_priorities[z]].digits2strip );			}else if(trunk_exists == 0){				rules_nosp.push(m[x][sorted_priorities[z]].rulename) ;				//$('trunks').selectedIndex = -1;											addrowtotable( x , sorted_priorities[z] , "invalid" , m[x][sorted_priorities[z]].digits2strip );			}else{				addrowtotable( x , sorted_priorities[z] , m[x][sorted_priorities[z]].trunk , m[x][sorted_priorities[z]].digits2strip );			}		}	}}	if(rules_nosp.length > 0 ){		gui_feedback("A Service Provider is not defined for the Rule(s)<BR>" + rules_nosp,'default');		_trunks.selectedIndex = -1;	}	if( _$('callingRulesTable').rows.length == 0 ){		_$('table_one').style.display="none";		var newRow = _$('callingRulesTable').insertRow(-1);		var newCell0 = newRow.insertCell(0);		newCell0 .align = "center";		newCell0 .innerHTML = "<BR>A <I>Calling Rule</I> is not defined<BR><BR> Please click on the 'Add a Calling Rule' button<BR> to add a Calling Rule<BR><BR>" ;		return true;	}	_$('addrule').disabled = false;} function clear_table(){	var _crt = _$('callingRulesTable') ;	for( var i=0; i <  _crt.rows.length; ){ _crt.deleteRow(i); }}function parsepattern(a,e){	returnstring="";	// Parsing into fields	// if first character is underscore (always) - remove it 	var temp = a.substr(1);	// if there is a dot at the end 	//		check ormore and remove the trailing dot	if( temp.substr(-1,1) == "!" ){		temp = temp.slice(0, -1);		returnstring = "or more";		if(e == 1){ _$('ormore').checked = true; }	}	var posofx = temp.indexOf('X');	// if X does not occur anywhere followedby is = 0	// if X happens somewhere then beginswith = string till somewhere	//		and followedby = length of string from somewhere till end	if(posofx == -1){ 			if(returnstring == "or more"){			returnstring = "Begins with " + temp + " and followed by 0 or more digits" ;		}else{			returnstring = "Exactly matches " + temp  ;		}		if(e == 1){			_$('beginswith').value = temp;			_$('followedby').value = 0;		}	}else{		if(returnstring == "or more"){			returnstring = "Begins with " + temp.substr(0,posofx) + " and followed by "+(temp.length - posofx)+" or more digits" ;		}else{			returnstring = "Begins with " + temp.substr(0,posofx) + " and followed by "+(temp.length - posofx) + " digits";		}		if(e == 1){			_$('beginswith').value = temp.substr(0,posofx);			_$('followedby').value = (temp.length - posofx);		}	}return returnstring;}function addrowtotable(a,b,c,d){	// a is pattern, b is priority, c is trunk, d is digits2strip	var m = numberplansdata[_$('extensions').value]['npdata'];	var _crt = _$('callingRulesTable') ;	var sno = _crt.rows.length + 1;	var newRow = _crt.insertRow(-1);	newRow.id = "row" + sno; 	var newCell0 = newRow.insertCell(0);	newCell0.innerHTML = sno ;	newCell0.width=35;	newCell0.align="center";	var newCell1 = newRow.insertCell(1);	newCell1.innerHTML =  (m[a][b].rulename) ? m[a][b].rulename : "Not Defined" ; 	newCell1.width=90;	var newCell2 = newRow.insertCell(2);	newCell2.innerHTML =  (m[a][b].ruledesc) ? m[a][b].ruledesc : a ; 	if(newCell2.innerHTML == "custom"){ newCell2.innerHTML = "custom ("+ a + ")"; }	var newCell3 = newRow.insertCell(3);	newCell3.align="center";	newCell3.width=85;	if(c == "invalid" || c== "undefined"  ){		newCell3.innerHTML = "<span style='cursor:pointer; color : #0000ff;'  onclick=\"editcallingrule('"+ a +"', '"+ b +"')\">Select a ServiceProvider</span>";	}else{		newCell3.innerHTML = trunks_desc[c].comment  ;	}	var newCell4 = newRow.insertCell(4);	newCell4.innerHTML = "<A href=\"#\" onclick=\"editcallingrule('"+ a +"', '"+ b +"')\" tip=\"en,callingrules,2\">Edit</A>&nbsp;&nbsp;<A href=\"#\" onclick=\"deletecallingrule('"+ a +"', '"+ b +"')\" tip=\"en,callingrules,3\">Delete</A>";	newCell4.width=75;	newCell4.align="center";	return true;}function deletecallingrule(a,b){ // a is pattern, b is priority	if(!confirm("Are you sure ?")) { return true; }	delete_callingrule(a,b, oncomplete = function(){ show_npdata_table( _$('extensions').value ); gui_feedback("Calling Rule Deleted",'default'); } ) ;}function delete_callingrule(a,b,oncomplete){ // a is pattern, b is priority	var _extv = $('extensions').value ;	var m = numberplansdata[_extv]['npdata'];	var commentstring = (m[a][b].ruledesc == 'custom') ? "custom" : "standard" ;	var foo = m[a][b].prepend;	if(m[a][b].trunk && trunks_desc[m[a][b].trunk] && trunks_desc[m[a][b].trunk].provider.toLowerCase() == "bandwidth" && foo.indexOf('+') != 0 ) {		foo = "+" + foo;	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -