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

📄 incoming.html

📁 asterisk 的图形管理界面
💻 HTML
📖 第 1 页 / 共 2 页
字号:
		gui_feedback("Please select a service provider !");
		fpv.focus();
		return false;
	}
	if( te.selectedIndex == -1 ){
		gui_feedback("Please select an extension to which<BR> an incoming call should be routed to !");
		te.focus();
		return false;
	}

	if(ir == "frompattern" && fp.value.substr(0,1) != "_" ){ fp.value = "_" + fp.value ; }

	// create an entry under the selected trunk
	// $('incomingrule') == "allunmatched" or "frompattern" , $('frompattern'), $('fromprovider'), $('toextension')
	if (ir == "allunmatched" ){
		var newpattern = "_X." ;
		var temp_provider = fpv.value;
		var temp_priority = "1";
		var temp_action = "Goto(default|" + te.value + "|1)";
		var new_exten = newpattern  + "," + temp_priority + "," + temp_action;
		var new_exten2 = "s,1," + temp_action;
		var uri = build_action('append', 0, temp_provider ,"exten", new_exten);
		uri += build_action('append', 1, temp_provider ,"exten", new_exten2);
	}else{
		var newpattern = fp.value ;
		var temp_provider = fpv.value ;
		var temp_action = "Goto(default|" + te.value + "|1)";
		var temp_priority = "1";
		var new_exten = newpattern  + "," + temp_priority + "," + temp_action;
		var uri = build_action('append', 0, temp_provider ,"exten", new_exten ); 
	}

	// check whether there is an existing entry with this pattern 
	if( typeof didtrunks[temp_provider][newpattern] != "undefined" ){
		gui_feedback("An incoming call rule is already defined <BR> on this trunk for the selcted pattern !! ");
		return false;
	}
	
	var opt = {
		method: 'get',
		asynchronous: true,
		onSuccess: function(t) { 									
			// add this to the global object
			didtrunks[temp_provider][newpattern] = new Object();
			didtrunks[temp_provider][newpattern].priority = temp_priority;
			didtrunks[temp_provider][newpattern].action = temp_action ;
			//addrowtotable(newpattern,temp_provider,temp_action,temp_priority) ; // a is pattern, b is DID_trunk, c is action, d is priority
			refreshtable();
			_$('userscontent').style.display = "none";
			_$('bg_transparent').style.display ='none';
		},
		onFailure: function(t) {
			gui_alert("Config Error: " + t.status + ": " + t.statusText);
		}
	};

	opt.parameters="action=updateconfig&srcfilename=" + encodeURIComponent("extensions.conf") + "&dstfilename=" + encodeURIComponent("extensions.conf") + uri;
	var tmp = new Ajax.Request(asterisk_rawmanPath , opt);
	// 
}


function update_incomingrule(){
	// field validation
	var ir = _$('incomingrule').value ;
	var fp = _$('frompattern') ;
	var te = _$('toextension') ;
 
	if( ir == "frompattern" && fp.value == "" ){
		gui_feedback("Please define an incoming call pattern !");
		fp.focus();
		fp.select();
		return false;
	}
	if( te.selectedIndex == -1 ){
		gui_feedback("Please select an extension to which<BR> an incoming call should be routed to !");
		te.focus();
		return false;
	}

	if( ir == "frompattern" && fp.value.substr(0,1) != "_" ){ fp.value = "_" + fp.value ; }
	// old values before editing are - edit_pattern, edit_DIDtrunk, edit_action, edit_priority
	// check for duplicate other than old
	var p = 0 ;
	var uri = "" ;
	var temp_provider = _$('fromprovider').value ;
	var temp_action = "Goto(default|" + te.value + "|1)";
	var temp_priority = "1";
	var tmp_old_string = edit_pattern  + "," + edit_priority + "," + edit_action;
	uri += build_action('delete', p, edit_DIDtrunk ,"exten", "", tmp_old_string); p++;
	if(edit_pattern == "_X." ){
		var tmp2_old_string = "s," + edit_priority + "," + edit_action ;
		uri += build_action('delete', p, edit_DIDtrunk ,"exten", "", tmp2_old_string); p++;
	}

	if ( ir == "allunmatched" ){
		var newpattern = "_X." ;
		var new_exten = newpattern  + "," + temp_priority + "," + temp_action;
		var new_exten2 = "s," + temp_priority + "," + temp_action;
		uri += build_action('append', p , temp_provider ,"exten", new_exten ); p++ ;
		uri += build_action('append', p , temp_provider ,"exten", new_exten2 ); p++ ;
	}else{
		var newpattern = fp.value ;
		var new_exten = newpattern  + "," + temp_priority + "," + temp_action;
		uri += build_action('append', p , temp_provider ,"exten", new_exten ); p++ ;
	}

	if( typeof didtrunks[temp_provider][newpattern] != "undefined" && ( temp_provider != edit_DIDtrunk || newpattern != edit_pattern ) ){
		gui_feedback("An incoming call rule is already defined <BR> on this trunk for the selcted pattern !! ");
		return false;
	}

	// delete old entry and add new entry
	var opt = {
		method: 'get',
		asynchronous: true,
		onSuccess: function(t) { 									
			delete didtrunks[edit_DIDtrunk][edit_pattern] ;
			didtrunks[temp_provider][newpattern] = new Object();
			didtrunks[temp_provider][newpattern].priority = temp_priority;
			didtrunks[temp_provider][newpattern].action = temp_action ;
			_$('userscontent').style.display = "none";
			_$('bg_transparent').style.display ='none';
			refreshtable();
		},
		onFailure: function(t) {
			gui_alert("Config Error: " + t.status + ": " + t.statusText);
		}
	};
	opt.parameters="action=updateconfig&srcfilename=" + encodeURIComponent("extensions.conf") + "&dstfilename=" + encodeURIComponent("extensions.conf") + uri;
	var tmp = new Ajax.Request(asterisk_rawmanPath , opt);
}


function checksave(k){
	var ir = _$('incomingrule').value ;
	var fpv = _$('fromprovider').value ;
	if( old_incomingrule == ir && old_fromprovider == fpv ){ return true; }

	if( ir == "frompattern" ){
		_$('thatmatch').style.display = "" ;
		if(k.id=="incomingrule"){
			_$('frompattern').focus();
			_$('frompattern').select();
		}
	}else{
		_$('thatmatch').style.display = "none" ;
	}

	_$('save_a').disabled = false;
	old_incomingrule = ir ;
	old_fromprovider = fpv ;
}


function enablesave(){
	_$('save_a').disabled = false;
}


function delete_incomingrule(a,b,c,d){ // a is pattern, b is DID_trunk, c is action, d is priority
	if( !confirm("Are you sure you want to delete this Incoming Calling Rule?") ){ return true; }

	var tmp_match = a+","+d+","+c ;
	var opt = {
		method: 'get',
		asynchronous: true,
		onSuccess: function(t) { 									
			// add this to the global object
			delete didtrunks[b][a];
			refreshtable();
		},
		onFailure: function(t) {
			gui_alert("Config Error: " + t.status + ": " + t.statusText);
		}
	};
	var uri = build_action('delete',0, b, "exten" ,"", tmp_match);
	if( a == "_X." ){
		var tmp2_match = "s," + d + "," + c ;
		uri += build_action('delete',1,b,"exten","", tmp2_match);
	}
	opt.parameters="action=updateconfig&srcfilename=" + encodeURIComponent("extensions.conf") + "&dstfilename=" + encodeURIComponent("extensions.conf") + uri;
	var tmp = new Ajax.Request(asterisk_rawmanPath , opt);
}


function localajaxinit() {
	showdiv_statusmessage();
	setWindowTitle("Incoming Calls");

	parent.astmanEngine.config2list("users.conf", _$('users'), new Array(), user_callbacks);
}


function free_mem( ){
	if( navigator.userAgent.indexOf("MSIE") == -1 ){ return true; }
	try{
		purge( document.body );
	}catch(e){ }
}
</script>
<body id="foo" onload="localajaxinit()"  bgcolor="EFEFEF"  onunload="free_mem()">
<div class="mainscreenTitleBar">
	<span style="margin-left: 4px;font-weight:bold;">Incoming Calls</span>
	<span style="cursor: pointer; cursor: hand;" onclick="window.location.href=window.location.href;" >&nbsp;<img src="images/refresh.png" title=" Refresh " border=0 >&nbsp;</span>
</div>
<div class="mainscreenContentBox" id="mailboxcontent">
	<select id="extensions" style="display:none"></select>
	<select id="users" style="display:none"></select>
	<BR>
	<CENTER><font size="+1">Incoming Call Rules</font></CENTER>
	<table class="table_blacksm" cellpadding=2 cellspacing=2 border=0 align=center width=500 id="table_one">
		<tr>	<td width=35>S.No</td>
			<td> Incoming Rule </td>
			<td width=75 align=center>Options</td>
		</tr>
	</table>
	<div id="callingRulesTable_div" style="height:250px;width=100%; overflow :auto; padding : 0px 0px 0px 0px;">
		<table id="callingRulesTable" cellpadding=2 cellspacing=1 border=0 align=center width=500></table>
	</div>
	<center><input type="button" id="adddid" value="Add a Incoming Rule" onclick="add_incomingrule();" onmouseover="show_tooltip('en', 'incoming',0);"></center>
	<div id="userscontent" STYLE="display:none; position: absolute; left: 20; top: 40; width:475; height:190; background-color:#F4EFE5; border-width: 1px; border-color: #7E5538; border-style: solid;z-index:5">
	<table width="100%" cellpadding=0 cellspacing=0 onmousedown="startDrag(event , 'userscontent');">
		<TR bgcolor="#7E5538"  style="background-image:url('images/title_gradient.gif');">
			<TD Height="20" align="right" style="cursor: move">
				<A href="#" onclick="$('cancel_a').click();"><font style="color:#FFFFFF; font-size: 12px; font-weight:bold;">X</font></A>
			</TD>
			<TD width=4></TD>
		</TR>
	</table>
	<TABLE align=center cellpadding=2 cellspacing=2 border=0 width="100%">
		<TR>	<TD height=10></TD>	</TR>
		<TR>	<TD align=center>
			<NOBR>Route <select id="incomingrule"  onclick="checksave(this)" class="input9">
				<option value="allunmatched">All Unmatched incoming calls</option>
				<option value="frompattern">incoming calls that match </option>
				</select>
				<span id="thatmatch" onmouseover="show_tooltip('en', 'incoming', 1);">pattern 
				<input type="text" id="frompattern" size=12  onchange="enablesave();"  onkeyup="enablesave();"  class="input9">
				</span>
			</NOBR>
			</TD>
		</TR>
		<TR>	<TD align=center>
			from provider <select id="fromprovider" onclick="checksave(this)"  class="input9"></select>
			</TD>
		</TR>
		<TR>	<TD align=center>
			to extension <select id="toextension" onchange="enablesave();"  onkeyup="enablesave();"  class="input9"></select>
			</TD>
		</TR>
		<TR>	<TD align=center height=50 valign=middle>  
			<input type="button" id="save_a" value="Save" onclick="save_incomingrule();">&nbsp;&nbsp;
			<input type="button" id="cancel_a" value="Cancel" onclick="$('userscontent').style.display='none'; $('bg_transparent').style.display ='none';" >
			</TD>
		</TR>
	</TABLE>
	</div>
</div>
<div id="bg_transparent" STYLE="display:none; position: absolute; left: 0; top: 24; width:100%; height:100%;  background-color:#EFEFEF; -moz-opacity:.50;opacity:.50; border-width: 1px; border-color: #EFEFEF; border-style: solid; z-index:4">
</div>
</body>

⌨️ 快捷键说明

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