📄 incoming.html
字号:
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;" > <img src="images/refresh.png" title=" Refresh " border=0 > </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();">
<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 + -