📄 menus.html.svn-base
字号:
if(voicemenusdata[_vmv].extensions['s'] && voicemenusdata[_vmv].extensions['s'].length > 0 ){ // you might be tempted to say " newpriority = voicemenusdata[_vmv].extensions['s'].length + 1; " but this won't work cause // you might be dealing a "[s,1][s,3][s,7]" where the array length is 3 - but new priority shud be 8 // so , var laststep_tmp = voicemenusdata[_vmv].extensions['s'][ voicemenusdata[_vmv].extensions['s'].length -1 ] ; var laststep_priority = ASTGUI.parseContextLine.getPriority( laststep_tmp ); // gui versions before AA50 firmware 1.1 used 's,n' // this is updated to's,number' in 1.1 // so if we find a old format - we will delete all the 's' extension and update it to new format newpriority = ( laststep_priority == 'n' ) ? voicemenusdata[_vmv].extensions['s'].length + 1 : Number(laststep_priority) + 1 ; }else{ newpriority = 1; } switch ( _nsa.value ){ case 'Answer': action_string = "s,"+ newpriority+ ",Answer"; break; case 'Authenticate': action_string = "s,"+ newpriority+ ",Authenticate(" + _nsv.value + ")"; break; case 'DISA': action_string = "s,"+ newpriority+ ",DISA(" + _nsv.value + ")"; break; case 'Background': action_string = "s,"+ newpriority+ ",Background(" + _nsv.value + ")"; break; case 'Busy': action_string = "s,"+ newpriority+ ",Busy"; break; case 'Congestion': action_string = "s,"+ newpriority+ ",Congestion"; break; case 'DigitTimeout': action_string = "s,"+ newpriority+ ",Set(TIMEOUT(digit)=" + _nsv.value + ")"; break; case 'ResponseTimeout': action_string = "s,"+ newpriority+ ",Set(TIMEOUT(response)=" + _nsv.value + ")"; break; case 'Playback': action_string = "s,"+ newpriority+ ",Playback(" + _nsv.value + ")"; break; case 'Wait': action_string = "s,"+ newpriority+ ",Wait(" + _nsv.value + ")"; break; case 'WaitExten': action_string = "s,"+ newpriority+ ",WaitExten(" + _nsv.value + ")"; break; case 'GotoMenu': action_string = "s,"+ newpriority+ ",Goto(" + _nsv.value + "|s|1)"; break; case 'GotoExtension': action_string = "s,"+ newpriority+ ",Goto(default|" + _nsv.value + "|1)"; break; case 'GotoTimeBasedRule': //action_string = "s,"+ newpriority+ ",Goto(" + _$('tbr').value + ")"; break; case 'DialRingGroup': action_string = "s,"+ newpriority+ ",Goto(" + _$('rgrp').value + ")"; break; case 'Hangup': action_string = "s,"+ newpriority+ ",Hangup"; break; case 'GotoDirecotry': action_string = "s,"+ newpriority+ ",Directory(default|" + _vmv + "||)"; break; case 'CheckOwnVoiceMail': action_string = "s,"+ newpriority+ ",VoiceMailMain(${CALLERID(num)}@default)" ; break; default : action_string = "s,undefined,undefined"; } var after = function(t){ setTimeout(function(){ _$('status_message').style.display = 'none'; },sc_displaytime); hide_addStep(); // if request successfull then add this to the steps select box var newoption = document.createElement("option"); newoption.text = format_step(action_string ); newoption.value = action_string ; var _steps = _$('steps') ; _steps.options.add ( newoption ); // and also add the information to the voicemenus data if(voicemenusdata[_vmv].extensions['s']){ voicemenusdata[_vmv].extensions['s'].push(action_string); }else{ voicemenusdata[_vmv].extensions['s'] = new Array; voicemenusdata[_vmv].extensions['s'][0] = action_string; } // empty this textbox & disable this button, select the newly added item to the steps options box _nsa.selectedIndex = 0; _$('deletestep').disabled = false; _steps.selectedIndex = _steps.length - 1 ; gui_feedback('New step added !','blue'); update_updown(); _nsv.value = ""; _nss.value=""; _nsv.style.display = "none" ; _nss.style.display = "none" ; _$('add_newstep_extensions').style.display = "none"; _$('add_newstep_menus').style.display = "none"; _nsvd = _$('newstep_var_digit'); _nsvd.value= ""; _nsvd.style.display= "none" ; if(laststep_priority == 'n' ){ window.location.reload(); } } if( laststep_priority=='n' ){ // if old configuration - update to new var chs = new listOfActions(); chs.filename('extensions.conf'); var c = 0; for(var vg=0; vg < voicemenusdata[_vmv]['extensions']['s'].length ; vg++ ){ chs.build_action ( 'delete', c , _vmv, "exten", '', voicemenusdata[_vmv]['extensions']['s'][vg] ); } var tmp_priority = 1; for(var vg=0; vg < voicemenusdata[_vmv]['extensions']['s'].length ; vg++ ){ var tmp_step = 's,' + tmp_priority + ','+ ASTGUI.parseContextLine.getAction( voicemenusdata[_vmv]['extensions']['s'][vg] ) ; voicemenusdata[_vmv]['extensions']['s'][vg] = tmp_step; tmp_priority++ ; chs.build_action ( 'append', c , _vmv, 'exten', tmp_step ); } chs.build_action( 'append', c , _vmv, 'exten', action_string ); chs.callActions(after); return; }else{ uri += build_action('append', 0, _vmv,"exten", action_string ); makerequest('u','extensions.conf', uri, after ); return; }}function next_freevmenu(){ // return the next smallest available voicemenu name var x=1; while(typeof voicemenusdata['voicemenu-custom-'+x] != 'undefined' ) x++; return 'voicemenu-custom-'+x ;}function save_vmenu(){ var _ae = _$('alias_exten') ; var _vms = _$('vmenus') ; var _ale = _$('allowexten'); if( _ae.value.length > 0 && localextenlength !=0 && localextenlength != _ae.value.length){ gui_alert("Sorry, An Extension must be "+ localextenlength + " digits !"); _ae.focus(); return false; } if (!check_patternonfields( [ 'comment', 'newstep_var_digit' ] ) ){ return false; } _$('status_message').style.display ="" ; var _cmv = _$('comment').value ; var uri = "" ; var p = 0 ; var buildstring = new Object ; if( _vms.options[_vms.selectedIndex].innerHTML=='New Entry' ){ var current_vmenu = next_freevmenu(); uri += build_action('newcat', p, current_vmenu,"", ""); p = p+1; uri += build_action('append', p, current_vmenu,"comment", _cmv ); p = p+1; uri += build_action('append', p, current_vmenu,"alias_exten", _ae.value); p = p+1; if(_ae.value.length > 0){ // alias for this voicemenu in [default] section of extensions.conf var alias_string = _ae.value + ",1,Goto(" + current_vmenu + "|s|1)" ; uri += build_action('append', p, specialcontext ,"exten", alias_string ); p = p+1; } if( _ale.checked){ uri += build_action('append', p, current_vmenu,"include", "default"); p = p+1; } uri += build_action('append', p, current_vmenu,"exten", answer_call_string); p = p+1; }else{ // Updating existing Voicemenu var current_vmenu = _vms.value; if( voicemenusdata[current_vmenu].comment != _cmv ){ uri += build_action('update', p, current_vmenu ,"comment", _cmv); p = p+1; change_vmenuname_inlistofmenus(voicemenusdata[current_vmenu].comment,_cmv); voicemenusdata[current_vmenu].comment = _cmv; } if( voicemenusdata[current_vmenu].alias_exten != _ae.value ){ var existing_alias_string = voicemenusdata[current_vmenu].alias_exten + ",1,Goto(" + current_vmenu + "|s|1)" ; if( _ae.value.length > 0 ){ // change alias for this voicemenu in 'default' section of extensions.conf var new_alias_string = _ae.value + ",1,Goto(" + current_vmenu + "|s|1)" ; uri += build_action('update', p, specialcontext ,"exten", new_alias_string,existing_alias_string); p = p+1; }else{ // if the user is deleting the alias for this voicemenu, then delete the defined alias in the [default] extensions.conf uri += build_action('delete', p, specialcontext ,"exten", "",existing_alias_string); p = p+1; } uri += build_action('update', p, current_vmenu ,"alias_exten", _ae.value ); p = p+1; voicemenusdata[current_vmenu].alias_exten = _ae.value; } if( voicemenusdata[current_vmenu].include =="default" && !_ale.checked ){ uri += build_action('delete', p, current_vmenu ,"include",""); p = p+1; voicemenusdata[current_vmenu].include = "" ; }else if ( voicemenusdata[current_vmenu].include !="default" && _ale.checked ){ uri += build_action('append', p, current_vmenu,"include", "default"); p = p+1; voicemenusdata[current_vmenu].include = "default" ; }else if ( !voicemenusdata[current_vmenu].include && _ale.checked ){ uri += build_action('append', p, current_vmenu ,"include", "default"); p = p+1; voicemenusdata[current_vmenu].include = "default" ; } for (var k=0; k< keys.length; k++){ if(voicemenusdata[current_vmenu].extensions[keys[k]]){ uri += build_action('delete', p, current_vmenu,"exten", "", voicemenusdata[current_vmenu].extensions[keys[k]][0] ); p = p+1; } } } // Build exten strings for enabled keys and append/update the for (var k=0; k< keys.length; k++){ var current_key_action='keypress_'+ keys[k] + '_action'; var current_key_text='keypress_'+ keys[k] + '_text'; var current_key_exts='keypress_'+ keys[k] + '_exts'; var current_key_menus='keypress_'+ keys[k] + '_menus'; if( $(current_key_action).value == "disabled") continue; else if( $(current_key_action).value == "gotomenu" ) buildstring[keys[k]] = keys[k] + ",1,Goto("+ $(current_key_menus).value + "|s|1)" ; else if( $(current_key_action).value == "gotoextension" ) buildstring[keys[k]] = keys[k] + ",1,Goto(default|"+ $(current_key_exts).value + "|1)" ; else if( $(current_key_action).value == "Custom" ) buildstring[keys[k]] = keys[k] + ",1,"+ $(current_key_text).value ; else if( $(current_key_action).value == "Hangup" ) buildstring[keys[k]] = keys[k] + ",1,"+ "Hangup" ; else if( $(current_key_action).value == "PlayInvalid" ) buildstring[keys[k]] = keys[k] + ",1,"+ "Playback(invalid)" ; uri += build_action('append', p, current_vmenu,"exten", buildstring[keys[k]]); p = p+1; } makerequest('u','extensions.conf', uri , function(t){ setTimeout( function(){_$('status_message').style.display="none"; },sc_displaytime ); gui_feedback('Updated.','blue'); _$('savevmenu').disabled = true; _$('save').disabled = true; _$('cancel').disabled = true; if( _vms.options[_vms.selectedIndex].innerHTML=='New Entry' ){ // (if new Voicemenu voicemenusdata[current_vmenu] = new Object(); voicemenusdata[current_vmenu].comment = _cmv ; voicemenusdata[current_vmenu].alias_exten = _ae.value; voicemenusdata[current_vmenu].extensions = new Object(); // add the "s,1,Answer" data to voicemenus data voicemenusdata[current_vmenu].extensions['s'] = new Array(); voicemenusdata[current_vmenu].extensions['s'][0] = answer_call_string; for (var k=0; k< keys.length; k++){ if( buildstring[keys[k]] ){ voicemenusdata[current_vmenu].extensions[keys[k]] = new Array(); voicemenusdata[current_vmenu].extensions[keys[k]][0] = buildstring[keys[k]] ; } } // update vmenus _vms.options[_vms.selectedIndex].text = "VoiceMenu - " + _cmv; _vms.options[_vms.selectedIndex].value = current_vmenu; select_vmenu(); // add the new menu to the list of menus being displayed in the keypad options add_newvmenu_tolistofkeymenus(); }else{ // if editing existing keypress options for (var k=0; k< keys.length; k++){ if( buildstring[keys[k]] ){ voicemenusdata[current_vmenu].extensions[keys[k]] = new Array(); voicemenusdata[current_vmenu].extensions[keys[k]][0] = buildstring[keys[k]] ; }else{ if( voicemenusdata[current_vmenu].extensions[keys[k]] ){ voicemenusdata[current_vmenu].extensions[keys[k]] = []; } } } } } );}function enable_savecancel(){ _$('save').disabled=false; _$('savevmenu').disabled = false; _$('cancel').disabled = false;}function generate_fields(key){ var t = '<select class="input8" style="font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: 11px;" id=\'keypress_'+ key + '_action\' onchange="key_action(this.value, \'' + key + '\')">\n'; t += '<option value="disabled">Disabled</option>\n' ; t += '<option value="gotomenu">Goto Menu</option>\n'; t += '<option value="gotoextension">Goto Extension</option>\n';// t += '<option value="Custom">Custom</option>\n'; t += '<option value="Hangup">Hangup</option>\n'; t += '<option value="PlayInvalid">Play Invalid</option>\n'; t += '</select> <input type="text" class="input8" size=16 style="display:none;font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: 11px;" id="keypress_' + key+ '_text" onchange="enable_savecancel()">\n'; t += '<select style="display:none; font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: 11px;" id="keypress_'+ key + '_menus" onchange="enable_savecancel()" class="input8"></select>\n'; t += '<select style="display:none; font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: 11px;" id="keypress_'+ key + '_exts" onchange="enable_savecancel()" class="input8"></select>\n'; return t;}function step_onselect(){ // enable delete button if(_$('steps').value){ _$('deletestep').disabled = false; } // enable Up/Down buttons accordingly update_updown();}function update_updown(){ var _steps = _$('steps') ; _$('stepUp').disabled =( _steps.selectedIndex ) ? false : true ; _$('stepDown').disabled = ( _steps.selectedIndex != (_steps.length-1) ) ? false: true ;}function step_up(){ // Swap x, x-1 var _steps = _$('steps') ; swap_step(_steps.selectedIndex, _steps.selectedIndex-1 );}function step_down(){ //swap x, x+1 var _steps = _$('steps') ; swap_step( _steps.selectedIndex, _steps.selectedIndex+1 );}function swap_step(a,b){ var _steps = _$('steps'); var _vms_v = _$('vmenus').value ; var tmp1 = _steps.options[a].value.split(",") ; var step1_action = tmp1.slice(2).join(","); var tmp2 = _steps.options[b].value.split(",") ; var step2_action = tmp2.slice(2).join(",");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -