📄 astman.js.svn-base
字号:
else src = x; if (!widgets[x]) continue; if (widgets[x].options) { var all; if (!cat) { if (widgets[x].options[0]) thevalue = widgets[x].options[0].value; else thevalue = ''; } else if (cat.fieldbyname) { if (cat.fieldbyname[src]) thevalue = cat.fieldbyname[src]; } else if (cat[x]) thevalue = cat[x]; if (widgets[x].splitchar) { for (var z=0;z<widgets[x].options.length;z++) widgets[x].options[z].selected = false; if (thevalue) { all = thevalue.split(widgets[x].splitchar); for (var y=0;y<all.length;y++) { for (var z=0;z<widgets[x].options.length;z++) { if (widgets[x].options[z].value == all[y]) widgets[x].options[z].selected = true; } } } } else { widgets[x].selectedIndex = -1; widgets[x].value = thevalue; } if (cat) widgets[x].disabled = false; else widgets[x].disabled = true; if (savewidget) { widgets[x].savewidget = savewidget; ASTGUI.events.add( widgets[x] , 'click', function(event) { var t = (event.srcElement)?event.srcElement:this; t.oldvalue = t.value; return true; }); ASTGUI.events.add( widgets[x] , 'change', function(event) { var t = (event.srcElement)?event.srcElement:this; t.savewidget.activateSave(); }); } } else if (widgets[x].type) { if (!cat) { thevalue = ''; } else if (x == 'name') thevalue = cat.name; else if (cat.fieldbyname) { if (cat.fieldbyname[src]) thevalue = cat.fieldbyname[src]; else thevalue=''; } else if (cat[x]) thevalue = cat[x]; else thevalue = ''; if (widgets[x].type == 'checkbox') { dfalt = widgets[x].getAttribute('dfalt'); if( dfalt && thevalue=='' ) widgets[x].checked = ast_true(dfalt); else widgets[x].checked = ast_true(thevalue); } else if (widgets[x].type == 'radio') { if (widgets[x].value == thevalue) widgets[x].checked = true; else widgets[x].checked = false; } else{ dfalt = widgets[x].getAttribute('dfalt'); if( dfalt && thevalue=='' ) widgets[x].value = dfalt; else widgets[x].value = thevalue; } if (cat) widgets[x].disabled = false; else widgets[x].disabled = true; if (savewidget) { widgets[x].savewidget = savewidget; if ((widgets[x].type == 'checkbox') || (widgets[x].type == 'radio')) { ASTGUI.events.add( widgets[x] , 'click', function(event) { var t = (event.srcElement)?event.srcElement:this; t.savewidget.activateSave(); }); } else { ASTGUI.events.add( widgets[x] , 'keydown', function(event) { var t = (event.srcElement)?event.srcElement:this; t.oldvalue = t.value; return true; }); ASTGUI.events.add( widgets[x] , 'keyup', function(event) { var t = (event.srcElement)?event.srcElement:this; if (t.oldvalue == t.value){return true;} pattern = t.getAttribute('pattern'); if (pattern && check_pattern(pattern, t.oldvalue) && !check_pattern(pattern, t.value)) { t.value = t.oldvalue; gui_feedback('Invalid Character !','red'); } else{ gui_feedback('','default',10); t.savewidget.activateSave(); } return true; }); } } } else if (widgets[x].src != null) { if (!cat) { thevalue = ''; } else if (x == 'name') thevalue = cat.name; else if (cat.fieldbyname) { if (cat.fieldbyname[src]) thevalue = cat.fieldbyname[src]; else thevalue=''; } else if (cat[x]) thevalue = cat[x]; else thevalue = ''; if (thevalue.length) { widgets[x].src = thevalue; widgets[x].style.visibility = 'inherit'; } else widgets[x].style.visibility = 'hidden'; } else if (widgets[x].innerHTML != null) { if (!cat) { thevalue = ''; } else if (x == 'name') thevalue = cat.name; else if (cat.fieldbyname) { if (cat.fieldbyname[src]) thevalue = cat.fieldbyname[src]; else thevalue=''; } else if (cat[x]) thevalue = cat[x]; else thevalue = ''; widgets[x].innerHTML = thevalue; } }} }; this.doConfig = function(t, box) { if( t[0].headers['message'] && t[0].headers['message'] == "Config file not found" ){ if( box.config_file == "contactinfo.conf" || box.config_file == "providers.conf" ){ parent.astmanEngine.run_tool("/bin/touch /etc/asterisk/"+box.config_file, function(){ window.location.href = window.location.href ; } ); return ; } else { alert( "Asterisk says it cannot find a required config file (" + box.config_file + ") \n You will be now redirected to the main page !" ); parent.window.location.href = parent.window.location.href ; return ; } } var x,y=0; var cfg = new Object; var map; var curcat; var catcnt = -1; var tmp, tmp2; var res; box.innerHTML = ''; cfg.categories = new Array; cfg.catbyname = { }; cfg.names = new Array; for (x=0;t[0].names[x];x++) { map = t[0].names[x].split('-'); if (map[0] == 'category') { catcnt++; cfg.names[catcnt] = t[0].headers[t[0].names[x]]; cfg.categories[catcnt] = new Object; cfg.categories[catcnt].fields = new Array; cfg.categories[catcnt].fieldbyname = { }; cfg.categories[catcnt].names = new Array; cfg.categories[catcnt].subfields = new Array; cfg.categories[catcnt].name = t[0].headers[t[0].names[x]]; cfg.catbyname[t[0].headers[t[0].names[x]]] = cfg.categories[catcnt]; y=0; } else if (map[0] == 'line') { if (catcnt >= 0) { tmp = t[0].headers[t[0].names[x]].split('='); tmp2 = t[0].headers[t[0].names[x]].split('='); tmp2.splice(0,1); tmp[1] = tmp2.join('='); cfg.categories[catcnt].fields[y] = tmp[1]; cfg.categories[catcnt].names[y] = tmp[0]; cfg.categories[catcnt].fieldbyname[tmp[0]] = tmp[1]; y++; } } } cfg.catcnt = catcnt + 1; box.stored_config = cfg; update_box(box); if (box.size == 1) box.selectedIndex = 0; if (box.callbacks.loaded) box.callbacks.loaded(); }; this.managerResponse = function(t) { me.parseResponse(t, me.callback); }; this.doEvents = function(msgs) { me.eventcallback(msgs); }; this.eventResponse = function(t) { if( t.responseText.match(asterisk_guipingerror) ){ parent.window.location.href = parent.window.location.href ; } var _nu = navigator.userAgent; if( _nu.indexOf("MSIE") != -1 || _nu.indexOf("Konqueror") != -1 || _nu.indexOf("Safari") != -1 || _nu.indexOf("Opera") != -1){ // Donot Poll events for non mozilla Browsers }else{ me.parseResponse(t, me.doEvents); } }; this.gotConfig = function(t, box) { me.parseResponse(t, me.doConfig, box); }; this.sendRequest = function(request, callback) { var tmp; var opt = { method: 'get', asynchronous: true, onSuccess: this.managerResponse, onFailure: function(t) { if( request == 'action=ping' && String(t.status) == '404' ){ gui_alert("Error: " +" Make sure <I>enabled=yes</I> and <I>webenabled=yes</I> are set in manager.conf"); setLoggedOn(0); }else{ gui_alert("Error: " + t.status + ": " + t.statusText); } } }; me.callback = callback; opt.parameters = request; tmp = new Ajax.Request(this.url, opt); }; this.pollEvents = function() { var tmp; var opt = { method: 'get', asynchronous: true, onSuccess: this.eventResponse, onFailure: function(t) { gui_alert("Event Error: " + t.status + ": " + t.statusText); } }; opt.parameters="action=waitevent"; tmp = new Ajax.Request(this.url, opt); }; this.config2list = function(config,box,widgets,callbacks) { var tmp; var opt = { method: 'get', asynchronous: true, onSuccess: function(t) { me.gotConfig(t, box); }, onFailure: function(t) { gui_alert("Config Error: " + t.status + ": " + t.statusText); } }; if (!callbacks.identifier) callbacks.identifier = "name"; opt.parameters = "action=getconfig&filename=" + encodeURIComponent(config); box.config_file = config; box.callbacks = callbacks; box.widgets = widgets; box.engine = me; box.oldselect = -1; box.selectitem = function(t) { box.selectedIndex = t; return select_item(this); } box.onchange = function() { return select_item(this) }; if (widgets['save']) { widgets['save'].hostselectbox = box; ASTGUI.events.add( widgets['save'] , 'click', function(event) { var t = (event.srcElement)?event.srcElement:this; save_item(t.hostselectbox); }); } if (widgets['cancel']) { widgets['cancel'].hostselectbox = box; ASTGUI.events.add( widgets['cancel'] , 'click', function(event) { var t = (event.srcElement)?event.srcElement:this; cancel_item(t.hostselectbox); }); } if (widgets['new']) { widgets['new'].hostselectbox = box; widgets['new'].disabled = false; ASTGUI.events.add( widgets['new'] , 'click', function(event) { var t = (event.srcElement)?event.srcElement:this; new_item(t.hostselectbox); }); } if (widgets['newitem']) { widgets['newitem'].hostselectbox = box; widgets['newitem'].disabled = false; ASTGUI.events.add( widgets['newitem'] , 'click', function(event) {var t = (event.srcElement)?event.srcElement:this; new_subitem(t.hostselectbox); }); } if (widgets['delete']) { widgets['delete'].hostselectbox = box; widgets['delete'].disabled = true; ASTGUI.events.add( widgets['delete'] , 'click', function(event) {var t = (event.srcElement)?event.srcElement:this; delete_item(t.hostselectbox); }); } tmp = new Ajax.Request(this.url, opt); };};/* Extension handling below */ var specialcontext = "default"; function app2label(app) { var apps = {} apps["VoiceMailMain"] = "Check Voicemail"; apps["MeetMe"] = "Conference Bridge"; apps["Queue"] = "Call Queue"; if( apps[app] )return apps[app]; return "Custom"; }; function format_extension(box, t, x, multipriority) { var priority, exten, app, args, label ; if ( t.names[x] != 'exten' ) return null; var this_line = t.fields[x]; priority = ASTGUI.parseContextLine.getPriority(this_line); exten = ASTGUI.parseContextLine.getExten(this_line); app = ASTGUI.parseContextLine.getApp(this_line); args = ASTGUI.parseContextLine.getArgs(this_line); label = app2label(app); if (!multipriority && ( priority != '1')) return null; t.subfields[x]['context'] = t.name; t.subfields[x]['name'] = exten; t.subfields[x]['app'] = app; t.subfields[x]['label'] = label; t.subfields[x]['args'] = args; t.subfields[x]['priority'] = priority; if(t.subfields[x]['name'] == 'o'){ label = "Operator"; t.subfields[x]['label'] = label; } if( app.toLowerCase() == "goto" && args.match("voicemenu-custom-") ){ label = "Voice Menu"; t.subfields[x]['label'] = label; t.subfields[x]['args'] = ""; } if( app.toLowerCase() == "goto" && args.match("ringroups-custom") ){ label = "Ring Group"; t.subfields[x]['label'] = label; t.subfields[x]['args'] = ""; } if (priority == 'n') { if ((box.calcname == exten) && (box.calccontext == t.name)) box.calcpriority++; else box.calcpriority = 1; }else if(priority != 's'){ box.calcpriority = priority; } t.subfields[x]['realpriority'] = box.calcpriority; box.calcname = exten; box.calccontext = t.name; return exten + " -- " + label; }function merge_users(e, u) { // read u and add into e according to sort order merge_extensions(e, u);}function merge_extensions(u, e) { // read e and add into u according to sort order var t = e.options.length ; for( var f =0 ; f < t ; f++ ){ // take each element in e var opt_new = e.ownerDocument.createElement('option'); opt_new.text = e.options[f].text ; opt_new.value = 'reserved'; //if( navigator.userAgent.indexOf("Firefox") != -1 ){ opt_new.disabled = true; } opt_new.style.color = "#ABABAB"; // Now decide where to add in u, and add it to u var add = 0; for ( var g=0; g < u.options.length ; g++) { if( opt_new.text < u.options[g].text ){ // add before this element in u add = 1; ASTGUI.selectbox.insertOption_before(u,opt_new,g); break; } } if ( add ==0 ){ ASTGUI.selectbox.append_option(u,opt_new);} }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -