📄 astman.js.svn-base
字号:
t.appendChild(y); matched++; } } if(matched){ t.style.display = "";} }; var cleanupDiv = function(){ var y = this; var sf = function(){ if(y.comboDiv){ var q = y.comboDiv; q.parentNode.removeChild(q); delete y.comboDiv; ASTGUI.events.remove( y, 'blur' , cleanupDiv ) ; y.blur(); } }; setTimeout( sf, 300 ); }; this.comboOptions = a.sort(); ASTGUI.events.add( this, 'focus' , creatediv ) ; ASTGUI.events.add( this, 'keyup' , updateDivAndShow ) ; }}; // AstGUIfunction gui_feedback(a,b,c){ // a is msg, b is color (optional ), c is display time in milliseconds(optional, default to asterisk_guifbt) if(!b || b=='default'){ b = "#DA2804"; // dark reddish brown } if(b=='blue'){ b = "#303BCA"; // dark blue }else if(b=='green'){ b = "#448156"; // dark green } if(!c){c = asterisk_guifbt;} var _f = top._$('feedback_round'); var _g = top._$('feedback'); _g.style.color = b; _g.innerHTML = a ; _f.style.display = ''; top.window.setTimeout( function(){top._$('feedback_round').style.display = "none"; }, c );}function makerequest(c,f,a,b){ // c = 'u' for updateconfig, 'g' for getconfig , '' for other custom actions like 'action=logoff' etc // f is the filename, a is action string , b is the callback function, make sure that a starts with "&" when c is not "" var tmp, acs; if( c == 'u'){ acs = 'action=updateconfig&srcfilename=' + encodeURIComponent(f) + '&dstfilename=' + encodeURIComponent(f) + a ; }else if(c == 'g'){ acs = 'action=getconfig&filename=' + encodeURIComponent(f) ; }else{ acs = a; } var opt = { method: 'get', parameters: acs, asynchronous: true, onComplete: function(t){ if(b){ b(t.responseText); } }, onFailure: function(t) { gui_alert("Config Error: " + t.status + ": " + t.statusText); return false; } }; tmp = new Ajax.Request( asterisk_rawmanPath, opt);}function gui_alert(msg){ top.alertframename = "alertiframe"; top.alertmsg = msg ; top.alertmsgtype = 1 ; var h,_hs; if( !top.document.getElementById(top.alertframename)){ h= top.document.createElement("IFRAME"); h.setAttribute("id", top.alertframename ); h.setAttribute("ALLOWTRANSPARENCY", "true"); _hs = h.style ; _hs.position="absolute"; _hs.left= 0; _hs.top= 0; _hs.width= '100%'; _hs.height= '100%'; _hs.zIndex = 9999 ; h.src = "guialert.html" ; h.frameBorder="0"; h.scrolling="no"; _hs.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=90)'; //h.style.MozOpacity = .90; top.document.body.appendChild(h); }else{ top.document.getElementById( top.alertframename ).contentWindow.update( ); top.document.getElementById( top.alertframename ).style.display = ""; }}// Douglas Crockford's purge function for IE Memory leaks// http://javascript.crockford.com/memory/leak.html// No details about copyrights or License mentioned - assumed to be in public domainfunction purge(d) { var a = d.attributes, i, l, n; if (a) { l = a.length; for (i = 0; i < l; i += 1) { n = a[i].name; if (typeof d[n] === 'function') { d[n] = null; } } } a = d.childNodes; if (a) { l = a.length; for (i = 0; i < l; i += 1) { purge(d.childNodes[i]); } }}function isInt(x) { var y=parseInt(x); if (isNaN(y)) return false; return x==y && x.toString()==y.toString();}function config2json(a, b, c){ // a is filename (string) , b is 0 or 1 , c is callback function makerequest('g',a,'', function(t){ var response = t.split("\n"); if( response[1].toLowerCase().match("config file not found") ){ c("ERROR: CONFIG FILE NOT FOUND"); } var f = toJSO(t, b) ; c(f) ; });}function toJSO(z, p){ // This function converts z, the asterisk config file as read using 'action=getconfig' to a JavaScript Object // where z is originalRequest.responseText of the getconfig on a asterisk format config file, // and p is 0 or 1, // 0 for non unique subfields ( extensions.conf context where there are multiple subfields with same name - - Ex: 'exten =' ) // 1 for unique subfields ( config files where there are no two subfields of a context have same name ) // if not sure , use p = 0 var a = [ ] ; var json_data = ""; var t = z.split("\n"); var f, h, catno, g, catname, j, subfield, v, subfield_a , subfield_b; for(var r=0; r < t.length ; r++){ f = t[r].split("-") ; h = f[0].toLowerCase(); catno = parseInt( f[1] ,10 ); if( h == "category" ){ g = t[r].indexOf(":") ; catname = t[r].substr(g+1) ; // category catname = catname.replace(/^\s*|\s*$/g,'') ; // trim if(!a[catname]){ // contexts could be spread at different places in the config file if(!p){ a[catname] = []; }else{ a[catname] = {}; } } }else if ( h == "line" ){ j = t[r].indexOf(":") ; subfield = t[r].substr(j+1) ; // subfield subfield = subfield.replace(/^\s*|\s*$/g,'') ; // trim if(!p){ a[catname].push(subfield); }else{ v = subfield.indexOf("="); subfield_a = subfield.substring(0,v);//subfield variable subfield_b = subfield.substr(v+1) ;//subfield variable value a[catname][subfield_a] = subfield_b; } } } return a ;}function setWindowTitle(a){ top.document.title = asterisk_guiappname + " -- " + a ;}function check_patternonfields(fields){ // for checking validity of field contents before form submitting var x; for (var i=0; i < fields.length; i++){ x = document.getElementById(fields[i]); if( x.getAttribute('pattern') && !check_pattern(x.getAttribute('pattern') , x.value) ){ gui_alert("Invalid Characters in "+ fields[i]); x.focus(); return false; } } return true;}function showdiv_statusmessage(){ var h= document.createElement("div"); h.setAttribute("id","status_message"); var _hs = h.style; _hs.display="none"; _hs.position="absolute"; _hs.left= 170; _hs.top= 190; _hs.width= 350; _hs.height= 115; _hs.backgroundColor= "#F4EFE5"; _hs.borderWidth= "1px"; _hs.borderColor= "#7E5538"; _hs.borderStyle= "solid"; h.innerHTML = '<BR><BR><TABLE border=0 cellpadding=0 cellspacing=3 align=center>' + '<TR><TD><img src="images/loading.gif"></TD>' + '<TD valign=middle align=center> <div id=message_text></div></TD></TR></TABLE>'; document.body.appendChild(h);}function InArray(search_array, searchstring ){ if(search_array.length){ for(i=0; i < search_array.length; i++ ){ if( search_array[i] === searchstring )return true; } } return false;}function objcopy(orig) { var copy = {}; for (var i in orig) { if (typeof orig[i] == 'object') { copy[i] = objcopy(orig[i]); } else { copy[i] = orig[i]; } } return copy;}function do_compare(box, a, b){ var ret; if (box.callbacks.compare) { return box.callbacks.compare(box, a,b); } else if (a.innerHTML < b.innerHTML) return true; return false;}function insert_option(box, res, value, core_name){ var z; if (res) { var opt_new = box.ownerDocument.createElement('option'); opt_new.text = res ; opt_new.value = value ; opt_new.core_name = core_name; // Now decide where to add in box, and add it to box var add = 0; for ( var g=0; g < box.options.length ; g++) { if( opt_new.text < box.options[g].text ){ // add before this element in box add = 1; ASTGUI.selectbox.insertOption_before(box,opt_new, g); } } if ( add ==0 ){ ASTGUI.selectbox.append_option(box,opt_new);} }}function reformat_option(box, index){ var v, tmp, res; var cfg = box.stored_config; v = box.options[index].value; tmp = v.split(']'); res = ( tmp.length > 1 ) ? box.callbacks.format(cfg.catbyname[tmp[0]], tmp[1]) : box.callbacks.format(cfg.catbyname[v]) ; if (res){ box.options[index].innerHTML = res;}}function update_option(box, index){ var v, tmp, res; var cfg = box.stored_config; v = box.options[index].value; tmp = v.split(']'); box.remove(index); if (tmp.length > 1) { res = box.callbacks.format(cfg.catbyname[tmp[0]], tmp[1]); insert_option(box, res, tmp[0] + "]" + tmp[1], cfg.catbyname[tmp[0]].subfields[tmp[1]].name); } else { res = box.callbacks.format(cfg.catbyname[v]); insert_option(box, res, cfg.catbyname[v].name, cfg.categories[v].name); }}function update_box(box) { var x,y,z; var res; var oldselect = box.value; cfg = box.stored_config; while (box.options.length) box.remove(0); for (x=0;x<cfg.catcnt;x++) { if (box.callbacks.eachline) { if (box.callbacks.includecats) { res = box.callbacks.format(cfg.categories[x]); insert_option(box,res,cfg.categories[x].name,cfg.categories[x].name); } for (y=0;cfg.categories[x].names[y];y++) { cfg.categories[x].subfields[y] = {}; res = box.callbacks.format(cfg.categories[x], y); insert_option(box,res,cfg.categories[x].name + "]" + y,cfg.categories[x].subfields[y]['name']); } } else { res = box.callbacks.format(cfg.categories[x]); insert_option(box,res,cfg.categories[x].name,cfg.categories[x].name); } } box.oldselect = -1; box.selectedIndex = -1; box.value = null; for (x=0;x<box.options.length;x++) { if (box.options[x].value == oldselect) box.selectedIndex = x; } select_item(box);}function select_item(box, errmsg) { var category; var tmp; if (!errmsg) errmsg = "Discard changes?"; if ((box.widgets['save'] && !box.widgets['save'].disabled)) { if (!confirm(errmsg)) { box.selectedIndex = box.oldselect; return false; } } tmp = box.value.split(']'); if (box.oldselect && (box.oldselect > -1)) { if ((tmp.length > 1) && (!box.stored_config.catbyname[tmp[0]].subfields[tmp[1]].name)) { box.remove(box.oldselect); box.oldselect = -1; box.stored_config.catbyname[tmp[0]].subfields.splice(tmp[1], 1); box.stored_config.catbyname[tmp[0]].names.splice(tmp[1], 1); try{ box.stored_config.catbyname[tmp[0]].values.splice(tmp[1], 1); } catch(err){ } } else if (!box.options[box.oldselect].value) { box.remove(box.oldselect); box.oldselect = -1; box.stored_config.catbyname[""] = null; box.stored_config.categories[--box.stored_config.catcnt] = null; } else if (box.options[box.oldselect].text == "New Entry") { box.remove(box.oldselect); box.oldselect = -1; } } if (tmp.length > 1) { category = box.stored_config.catbyname[tmp[0]].subfields[tmp[1]]; } else { category = box.stored_config.catbyname[box.value]; } box.engine.cat2fields(box.widgets, category); if (box.widgets['delete']) { if (category) box.widgets['delete'].disabled = false; else box.widgets['delete'].disabled = true; } box.oldselect = box.selectedIndex; if (box.widgets['new']) box.widgets['new'].disabled = false; if (box.widgets['newitem']) box.widgets['newitem'].disabled = false; if (box.callbacks.postselect) box.callbacks.postselect(box, box.value); return true;}function cancel_item(box) { var tmp = box.options[box.selectedIndex].value.split(']'); if (tmp.length > 1) { if (box.stored_config.catbyname[tmp[0]].subfields[tmp[1]].name.length < 1) { if (select_item(box,"Discard new entry?")){ gui_feedback("New Entry cancelled!",'default') ; box.selectedIndex = -1; } } else { if (select_item(box)) gui_feedback("Changes cancelled!",'default') ; } } else { if (box.options[box.selectedIndex].value == "") { if (select_item(box,"Discard new entry?")){ gui_feedback("New Entry cancelled!",'default') ; //box.selectedIndex = -1; if (box.callbacks.cancelnewcategory) box.callbacks.cancelnewcategory(); } } else { if (select_item(box)) { gui_feedback("Changes cancelled!",'default') ; if (box.callbacks.cancelchanges) box.callbacks.cancelchanges(); } } }}function first_free_exten(box, start) { var x = start; var y; for (;;) { for (y=0;y<box.options.length;y++) { if (box.options[y].core_name == x) break; } if (y >= box.options.length) break; x++; } return x;}function action_issuccess(responseText) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -