pari: trunk r31 - in /trunk/config: ./ scripts/ stylesheets/

asterisk-gui-commits at lists.digium.internal asterisk-gui-commits at lists.digium.internal
Tue Sep 19 12:53:28 CDT 2006


Author: pari
Date: Tue Sep 19 12:53:28 2006
New Revision: 31

URL: http://svn.digium.com/view/asterisk-gui?rev=31&view=rev
Log:
call Queues - 'multiple users save' is pending

Modified:
    trunk/config/queues.html
    trunk/config/scripts/astman.js
    trunk/config/sip.html
    trunk/config/sip_general.html
    trunk/config/status.html
    trunk/config/stylesheets/schwing.css

Modified: trunk/config/queues.html
URL: http://svn.digium.com/view/asterisk-gui/trunk/config/queues.html?rev=31&r1=30&r2=31&view=diff
==============================================================================
--- trunk/config/queues.html (original)
+++ trunk/config/queues.html Tue Sep 19 12:53:28 2006
@@ -22,146 +22,87 @@
 <script src="scripts/prototype.js"></script>
 <script src="scripts/rico.js"></script>
 <script src="scripts/astman.js"></script>
-<script src="scripts/extensions.js"></script>
 <link href="stylesheets/rico.css" media="all" rel="Stylesheet" type="text/css" />
 <link href="stylesheets/schwing.css" media="all" rel="Stylesheet" type="text/css" />
 
 <script>
-	var origwidth;
-	var widgets = new Array;
-	var adstatus;
-	var queues;
-	var callbacks = new Object;
-	var usercallbacks = new Object;
-	var fieldnames = new Array(
-				'name', 'delete', 'status', 'newitem', 
-				'music','menu', 'announce',
-				'room','record','waitmarked','setmarked','quiet',
-				'pin', 'pinadmin', 'save', 'cancel');
-
-	function changed_extension() {
-		var app;
-		tmp = $('extensions').value.split(']');
-		app = findapp($('extensions').stored_config.catbyname[tmp[0]].subfields[tmp[1]]['app']);
-		$('name').value = $('extensions').stored_config.catbyname[tmp[0]].subfields[tmp[1]]['name'];
-		$('features').value = app.name.toLowerCase();
-	};
-
-	callbacks.fields2val = function(box, subfields) {
-		var flags = "d";
-		var xargs="";
-		var room = '${EXTEN}';
-		if (subfields['music'] != 'no')
-			flags += "M";
-		if (subfields['menu'] != 'no')
-			flags += 's';
-		if (subfields['announce'] != 'no')
-			flags += 'I';
-		if (subfields['record'] != 'no')
-			flags += 'r';
-		if (subfields['waitmarked'] != 'no')
-			flags += 'w';
-		if (subfields['setmarked'] != 'no')
-			flags += 'A';
-		if (subfields['quiet'] != 'no')
-			flags += 'q';
-		if (subfields['room'].length > 0)
-			room = subfields['room'];
-		return $('name').value + ",1,Queue(" + room + "," + flags + "," + subfields['pin'] + "," + subfields['pinadmin'] + ")";
-	}
-
-	callbacks.format = function(t, x) {
-		var ret;
-		var tmp;
-		var options = new Array;
-		var tmp2, y;
-		if ((t.name != specialcontext))
-			return null;
-		ret = format_extension($('extensions'), t, x);
-		if (ret) {
-			tmp = t.subfields[x].args.split(',');
-			if (tmp[1]) {
-				tmp2 = tmp[1].split('');
-				for (y=0;y<tmp2.length;y++)
-					options[tmp2[y]] = 'yes';
-			}
-			if (tmp[2])
-				t.subfields[x].pin = tmp[2];
+var adstatus;
+var queuecallbacks = new Object;
+var usercallbacks = new Object;
+var widgets = new Array;
+var queuemembers = new  Array;
+var queuenames = new Array;
+var fieldnames = new Array( 'name', 'delete', 'status', 'new',  'save', 'cancel','fullname', 'strategy', 'timeout', 'wrapuptime','autofill','autopause','maxlen', 'joinempty',  'leavewhenempty', 'reportholdtime','members');
+var k =0;
+var j = -1; 
+
+queuecallbacks.format = function(t,x) {
+		tmp = t.name.split('general');
+		if(tmp.length>1)
+				return false;
+		else if (t.name && x==undefined){	 				// if is a category
+				k=0;
+				j = j +1;
+				queuemembers[j] = new Array;
+				queuenames[j] = t.name;
+				return t.name + " -- " + t.fieldbyname['fullname'];
+		}else {																// if is a subcategory 
+				if(t.names[x] == 'member'){
+					queuemembers [j] [k] = t.fields[x].substr(-4);
+					k = k+1;
+				}
+				return false;
+		}
+}
+
+
+queuecallbacks.postselect = function(box, val ) {
+		if($('queues').selectedIndex	==-1){return true; } // while page loads .. do nothing
+
+		// show all member entires listed under the queue member - $('queues').value
+		for( k=0; k<queuenames.length; k++ ){
+				if( queuenames[k] == $('queues').value ){
+					j = k;
+					break;
+				}
+		}
+
+		for (k=0;k< $('members').length ;k++ )
+		{
+			if( InArray( queuemembers[j], $('members').options[k].value ) )
+				$('members').options[k].selected = true;			
 			else
-				t.subfields[x].pin = '';
-			if (tmp[3])
-				t.subfields[x].pinadmin = tmp[3];
-			else
-				t.subfields[x].pinadmin = '';
-			if (tmp[0] == '${EXTEN}')
-				t.subfields[x].room = '';
-			else
-				t.subfields[x].room = tmp[0];
-			t.subfields[x].music = options['M'];
-			t.subfields[x].menu = options['s'];
-			t.subfields[x].announce = options['I'];
-			t.subfields[x].record = options['r'];
-			t.subfields[x].waitmarked = options['w'];
-			t.subfields[x].setmarked = options['A'];
-			t.subfields[x].quiet = options['q'];
-		}
-		return ret;
-	}
-	
-	callbacks.loaded = function() {
-		merge_users($('extensions'), $('hiddenusers'));
-		for (x=0;x<$('extensions').options.length;x++) {
-			var tmp;
-			tmp = $('extensions').options[x].value.split(']');
-			if (tmp.length > 1) {
-				if ($('extensions').stored_config.catbyname[tmp[0]].subfields[tmp[1]]['app'].toLowerCase() != "queue") {
-					$('extensions').options[x].disabled = true;
-				}
-			}
-		}
-		$('extensions').contentEditable = 'true';
-		$('extensions').disabled = 0;
-		parent.loadscreen(this);
-	}
-	callbacks.sortfunc = function(a,b) {
-		return (a.name < b.name) ? -1 : 1;
-	}
-	callbacks.newsubitem = function() {
-		var tmp = new Object;
-		var x;
-		var gen;
-		gen = $('hiddenusers').stored_config.catbyname['general'];
-		if (gen)
-			x = gen.fieldbyname['userbase'];
-		if (x)
-			tmp['name'] = first_free_exten($('extensions'), x);
-		tmp['pin'] = '';
-		tmp['pinadmin'] = '';
-		tmp['music'] = 'yes';
-		tmp['menu'] = 'no';
-		tmp['announce'] = 'yes';
-		tmp['room'] = '';
-		tmp['>'] = true;
-		return new Array(specialcontext, 'exten', tmp);
-	}
-	callbacks.newcategory = function() {
+				$('members').options[k].selected = false;
+		}
+}
+
+
+
+
+queuecallbacks.loaded = function() {
+		parent.astmanEngine.config2list("users.conf", $('members'), new Array(), usercallbacks);
+}
+
+
+queuecallbacks.newcategory = function(t) {
 		var tmp = null;
 		var x;
-		if ($('extensions').stored_config.catbyname['general'])
-			tmp = objcopy($('extensions').stored_config.catbyname['general']);
-		if (tmp) {
+		if ($('members').stored_config.catbyname['general']){
+			tmp = objcopy($('members').stored_config.catbyname['general']);
 			x = tmp.fieldbyname['userbase'];
+		}
+
+		if ($('queues').stored_config.catbyname['general']){
+			tmp = objcopy($('queues').stored_config.catbyname['general']);
 			if (x) {
-				while($('extensions').stored_config.catbyname[x]) x++;
-				tmp.name = x;
+				tmp.name = first_free_exten($('members'), x);
 			}
 		}
 		return tmp;
-	}
-	callbacks.identifier = "extension";
-	callbacks.eachline = true;
-	
-	usercallbacks.format = function(t) {
+}
+
+
+usercallbacks.format = function (t){
 		if ((t.name == 'general'))
 			return null;
 		if (t.name.substring(0,6) == 'trunk_')
@@ -170,36 +111,54 @@
 			return t.name + " -- " + t.fieldbyname['fullname'];
 		} else
 			return t.name;
+}
+
+
+
+usercallbacks.identifier = "extension";
+
+
+
+usercallbacks.postselect = function (){
+
+}
+
+
+usercallbacks.loaded = function (){
+
+}
+
+
+function togglefeatures() {
+	if (adstatus == "shown") {
+		adstatus = "hidden";
+		new Rico.Effect.Size('advancedw', null, 1, 120, 8, {complete:function() { $('advancedw').style.height=1;} } );
+	} else {
+		adstatus = "shown";
+		$('advancedw').style.visibility = "visible";
+		new Rico.Effect.Size('advancedw', null, 200, 120, 8 );
 	}
-	usercallbacks.loaded = function() {
-		parent.astmanEngine.config2list("extensions.conf", $('extensions'), widgets, callbacks);
+}
+
+
+
+
+function localajaxinit() {
+	parent.loadscreen(this);
+	for (var x in fieldnames) {
+		widgets[fieldnames[x]] = $(fieldnames[x]);
+		widgets[fieldnames[x]].disabled = true;
 	}
-
-	function togglefeatures() {
-		if (adstatus == "shown") {
-			adstatus = "hidden";
-			new Rico.Effect.Size('advancedw', null, 1, 120, 8, {complete:function() { $('advancedw').style.height=1;} } );
-		} else {
-			adstatus = "shown";
-			$('advancedw').style.visibility = "visible";
-			new Rico.Effect.Size('advancedw', null, 240, 120, 8 );
-		}
-	}
-	function localajaxinit() {
-		$('advancedw').style.overflow = "hidden";
-		$('advancedw').style.height = 1;
-		$('advancedw').style.width = $('split').width;
-		$('advancedi').style.width = $('split').width - 60;
-		adstatus = "hidden";
-		$('extensions').contentEditable = 'false';
-		for (var x in fieldnames) {
-			widgets[fieldnames[x]] = $(fieldnames[x]);
-			widgets[fieldnames[x]].disabled = true;
-		}
-		parent.astmanEngine.config2list("users.conf", $('hiddenusers'), new Array(), usercallbacks);
-	}
+	adstatus = "hidden";
+	parent.astmanEngine.config2list("queues.conf", $('queues'), widgets, queuecallbacks);
+	return;
+}
+
+
+
+queuecallbacks.eachline = true;
+queuecallbacks.includecats = true;
 </script>
-
 
 <body id="foo" onload="localajaxinit()">
 <div class="mainscreenTitleBar">
@@ -214,7 +173,7 @@
 	</tr>
 	<tr valign="top">
 		<td>
-		<select disabled size="28" id="extensions" style="width:220px">
+		<select size="28" id="queues" style="width:220px">
 		<option>Loading...</option>
 		</select>
 		</td>
@@ -223,12 +182,19 @@
 		<table cellspacing='0' cellpadding='0'>
 			<tr valign="top"><td>
 				<table>
-				<tr><td>Extension:</td><td><input size='5' id='name'  onkeypress="return OnlyNumbers(event)"></td></tr>
-				<tr><td>PIN Code:</td><td><input size='5' id='pin'  onkeypress="return OnlyNumbers(event)"></td></tr>
-				<tr><td>Administrator PIN Code:</td><td><input size='5' id='pinadmin'  onkeypress="return OnlyNumbers(event)"></td></tr>
-				<tr><td>Play hold music for first caller</td><td><input type='checkbox' id='music'></td></tr>
-				<tr><td>Enable caller menu</td><td><input type='checkbox' id='menu'></td></tr>
-				<tr><td>Announce callers</td><td><input type='checkbox' id='announce'></td></tr>
+				<tr><td>Queue:</td><td><input size='5' id='name'></td></tr>
+				<tr><td>Full Name:</td><td><input size='24' id='fullname'></td></tr>
+				<tr><td>strategy :</td><td><select id='strategy'> 
+																<option value="ringall">ringall</option> 
+																<option value="roundrobin">roundrobin</option> 
+																<option value="leastrecent">leastrecent</option> 
+																<option value="fewestcalls">fewestcalls</option> 
+																<option value="random">random</option> 
+																<option value="rrmemory">rrmemory</option> 
+																</select>
+						</td>
+				</tr>
+				<tr><td style='width:80px' valign='top'>Members:</td><td><select size="6" multiple='true' id='members' style='width:200px'></select></td></tr>
 				<tr><td colspan='2' align='center'><div style="height:15px" id='status'></div></td></tr>
 				<tr><td colspan='2'></td></tr>
 				</table>
@@ -236,15 +202,18 @@
 			</tr>
 			<tr><td><img id="split" onClick="togglefeatures()" src="images/split-v.png"></td></tr>
 			<tr><td>
-				<div style="background-image:url(images/slice-v.png)" id='advancedw'>
-				<table id='advancedi' align='center'><tr><td>
-				<tr><td>Room Override:</td><td><input size='5' id='room'  onkeypress="return OnlyNumbers(event)"></td></tr>
-				<tr><td>Record conference</td><td><input type='checkbox' id='record'></td></tr>
-				<tr><td>Quiet Mode</td><td><input type='checkbox' id='quiet'></td></tr>
-				<tr><td>Wait for marked user</td><td><input type='checkbox' id='waitmarked'></td></tr>
-				<tr><td>Set marked user</td><td><input type='checkbox' id='setmarked'></td></tr>
-				</td></tr></table>
-				</div>
+						<div style="height :1px;background-image:url(images/slice-v.png); overflow: auto;" id='advancedw'>
+									<table id='advancedi' align='center'>
+									<tr><td>timeout:</td><td>&nbsp;<input size='2' id='timeout'></td></tr>
+									<tr><td>wrapuptime:</td><td>&nbsp;<input size='2' id='wrapuptime'></td></tr>
+									<tr><td>autofill:</td><td><input type=checkbox id='autofill'></td></tr>
+									<tr><td>autopause:</td><td><input type=checkbox id='autopause'></td></tr>
+									<tr><td>maxlen:</td><td>&nbsp;<input size='2' id='maxlen'></td></tr>
+									<tr><td>joinempty:</td><td><input type=checkbox id='joinempty'></td></tr>
+									<tr><td>leavewhenempty:</td><td><input type=checkbox id='leavewhenempty'></td></tr>
+									<tr><td>reportholdtime:</td><td><input type=checkbox id='reportholdtime'></td></tr>
+									</table>
+						</div>
 			</td></tr>
 			<tr><td>
 				<img onClick="togglefeatures()" src="images/adv-v.png">
@@ -258,7 +227,7 @@
 		<td align='center'>
 			<table>
 			<tr align='center'><td>
-			<input style='width:80' type='button' id='newitem' value='New'>
+			<input style='width:80' type='button' id='new' value='New'>
 			</td><td>
 			<input style='width:80' type='button' id='delete' value='Delete'>
 			</td></tr>

Modified: trunk/config/scripts/astman.js
URL: http://svn.digium.com/view/asterisk-gui/trunk/config/scripts/astman.js?rev=31&r1=30&r2=31&view=diff
==============================================================================
--- trunk/config/scripts/astman.js (original)
+++ trunk/config/scripts/astman.js Tue Sep 19 12:53:28 2006
@@ -19,6 +19,18 @@
  *
  */
 
+function  InArray(search_array, searchstring ){
+	var i = search_array.length
+	if( i>0){
+			for(i=0; i < search_array.length; i++ ){
+				if( search_array[i] === searchstring )
+					return true;
+			}
+	}
+
+return false;	
+}
+
 
 function objcopy(orig) {
 	var copy = new Object;
@@ -31,7 +43,6 @@
 	}
 	return copy;
 };
-
 
 
 

Modified: trunk/config/sip.html
URL: http://svn.digium.com/view/asterisk-gui/trunk/config/sip.html?rev=31&r1=30&r2=31&view=diff
==============================================================================
--- trunk/config/sip.html (original)
+++ trunk/config/sip.html Tue Sep 19 12:53:28 2006
@@ -59,8 +59,10 @@
 <table class="mainscreenTable" align="center">
 <tr><td align="center">
 	<BR>
-	<a href="" class="tab" onclick="return show_window(1);" id="tab1">General</a>&nbsp;&nbsp;
+	<div align="left">
+	<a href="" class="tab" onclick="return show_window(1);" id="tab1">General</a>&nbsp;
     <a href="" class="tab" onclick="return show_window(2);" id="tab2">Tab&nbsp;2</a>&nbsp;&nbsp;
+	</div>
 	<iframe style=" border: solid 1px black; background-color: white; padding: 4px; height:95%; width:550; overflow: auto;" src="" id="tabwindow"></iframe>
 	</td>
 </tr>

Modified: trunk/config/sip_general.html
URL: http://svn.digium.com/view/asterisk-gui/trunk/config/sip_general.html?rev=31&r1=30&r2=31&view=diff
==============================================================================
--- trunk/config/sip_general.html (original)
+++ trunk/config/sip_general.html Tue Sep 19 12:53:28 2006
@@ -1,6 +1,7 @@
 <script src="scripts/prototype.js"></script>
 <script src="scripts/rico.js"></script>
 <script src="scripts/astman.js"></script>
+<script src="scripts/tooltip.js"></script>
 <link href="stylesheets/rico.css" media="all" rel="Stylesheet" type="text/css" />
 <link href="stylesheets/schwing.css" media="all" rel="Stylesheet" type="text/css" />
 <script>
@@ -17,19 +18,13 @@
 			return false;
 }
 
-
-
 phonecallbacks.postselect = function(box, val) {
 
 }
-
-
 
 phonecallbacks.loaded = function() {
 		$('hiddenfield').selectitem(0);
 }
-
-
 
 function localajaxinit(){
 		for (var x in fieldnames) {
@@ -41,92 +36,92 @@
 }
 </script>
 <body onload="localajaxinit()" bgcolor="#EFEFEF">
-
+<div id="dhtmltooltip"></div>
 <div class="mainscreenContentBox" id="userscontent">
 <div  style="height :85%;width :100%; overflow :auto;">
 <table align="center" cellspacing=0 cellpadding=2 width="97%" bgcolor="#EFEFEF">
-<tr><td align=right>Context:</td>
-		<td>&nbsp;<input type='text' size=10 id='context' title=""></td>
-</tr>
-<tr><td align=right>Allow Guest:</td>
-		<td><input type='checkbox' dfalt='y' id='allowguest'></td>
-</tr>
-<tr><td align=right>Allow Overlap:</td>
+<tr onMouseover="ddrivetip('Default context for incoming calls','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>Context:</td>
+		<td>&nbsp;<input type='text' size=10 id='context'></td>
+</tr>
+<tr onMouseover="ddrivetip('Allow/deny guest calls.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>Allow guest calls:</td>
+		<td><input type='checkbox' dfalt='y' id='allowguest' ></td>
+</tr>
+<tr><td align=right>Overlap dialing support:</td>
 		<td><input type='checkbox' dfalt='y' id='allowoverlap'></td>
 </tr>
-<tr><td align=right>Allow Transfer:</td>
+<tr><td align=right>Allow Transfers:</td>
 		<td><input type='checkbox' dfalt='y' id='allowtransfer'></td>
 </tr>
-<tr><td align=right>Realm:</td>
+<tr onMouseover="ddrivetip('Realm for digest authentication.defaults to \'asterisk\'. If you set a system name in asterisk.conf, it defaults to that system name. Realms MUST be globally unique according to RFC 3261. Set this to your host name or domain name','#F4EBD8',300)" onMouseout="hideddrivetip()"><td align=right>Realm for digest authentication:</td>
 		<td>&nbsp;<input type='text' id='realm'></td>
 </tr>
-<tr><td align=right>Bind Port:</td>
+<tr onMouseover="ddrivetip('SIP standard port is 5060','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>UDP Port to bind to:</td>
 		<td>&nbsp;<input type='text' size=4 id='bindport'></td>
 </tr>
-<tr><td align=right>Bind Address:</td>
+<tr onMouseover="ddrivetip('0.0.0.0 binds to all','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>IP address to bind to:</td>
 		<td>&nbsp;<input type='text' size=16 id='bindaddr'></td>
 </tr>
-<tr><td align=right>SRV Lookup:</td>
+<tr onMouseover="ddrivetip('Enable DNS SRV lookups on calls','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>Enable DNS SRV lookups (on outbound calls):</td>
 		<td><input type='checkbox' dfalt='y' id='srvlookup'></td>
 </tr>
-<tr><td align=right>Domain:</td>
+<tr onMouseover="ddrivetip('Comma separated list of domains which Asterisk is responsible for','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>Domain:</td>
 		<td>&nbsp;<input type='text' size=18 id='domain'></td>
 </tr>
-<tr><td align=right>Pedantic:</td><td>
+<tr onMouseover="ddrivetip('Enable slow, pedantic checking of Call-ID:s, multiline SIP headers and URI-encoded headers','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>Pedantic:</td><td>
 		<input type='checkbox' dfalt='no' id='pedantic'></td>
 </tr>
-<tr><td align=right>tos_sip:</td>
+<tr  onMouseover="ddrivetip('Sets TOS for SIP packets','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>TOS for SIP packets:</td>
 		<td>&nbsp;<input type='text' size=5 id='tos_sip'></td>
 </tr>
-<tr><td align=right>tos_audio:</td>
+<tr onMouseover="ddrivetip('Sets TOS for RTP audio packets ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>TOS for RTP audio packets:</td>
 		<td>&nbsp;<input type='text' size=5 id='tos_audio'></td>
 </tr>
-<tr><td align=right>tos_video:</td>
+<tr onMouseover="ddrivetip('Sets TOS for RTP video packets ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>TOS for RTP video packets:</td>
 		<td>&nbsp;<input type='text' size=5 id='tos_video'></td>
 </tr>
-<tr><td align=right>maxexpiry:</td>
-		<td>&nbsp;<input type='text' size=4 id='maxexpiry'></td>
-</tr>
-<tr><td align=right>minexpiry:</td>
+<tr onMouseover="ddrivetip('Max duration (in seconds) of incoming registration we allow. Default 3600 seconds.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>Maximum length registrations/subscriptions:</td>
+		<td>&nbsp;<input type='text' size=4 id='maxexpiry' dfalt="3600"></td>
+</tr>
+<tr onMouseover="ddrivetip('Minimum length of registrations/subscriptions (default 60)','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>Minimum length of registrations/subscriptions:</td>
 		<td>&nbsp;<input type='text' dfalt='60'  size=4 id='minexpiry'></td>
 </tr>
-<tr><td align=right>defaultexpiry:</td>
+<tr onMouseover="ddrivetip(' Default length of incoming/outoing registration','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right> Default length of incoming/outoing registration:</td>
 		<td>&nbsp;<input type='text'  size=4 id='defaultexpiry'></td>
 </tr>
-<tr><td align=right>t1min:</td>
+<tr onMouseover="ddrivetip(' Minimum roundtrip time for messages to monitored hosts,  Defaults to 100 ms','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>t1min:</td>
 		<td>&nbsp;<input type='text' dfalt='100'  size=4 id='t1min'></td>
 </tr>
-<tr><td align=right>notifymimetype:</td>
+<tr onMouseover="ddrivetip('Allow overriding of mime type in MWI NOTIFY','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>notifymimetype:</td>
 		<td>&nbsp;<input type='text'  size=16 id='notifymimetype'></td>
 </tr>
-<tr><td align=right>checkmwi:</td>
+<tr onMouseover="ddrivetip('Allow overriding of mime type in MWI NOTIFY','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>checkmwi:</td>
 		<td>&nbsp;<input type='text'  size=4 id='checkmwi'></td>
 </tr>
-<tr><td align=right>mohinterpret:</td>
+<tr onMouseover="ddrivetip('This option specifies a preference for which music on hold class this channel should listen to when put on hold if the music class has not been set on the channel with Set(CHANNEL(musicclass)=whatever) in the dialplan, and the peer channel putting this one on hold did not suggest a music class','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>mohinterpret:</td>
 		<td>&nbsp;<input type='text'  size=12 id='mohinterpret'></td>
 </tr>
-<tr><td align=right>mohsuggest:</td>
+<tr onMouseover="ddrivetip('This option specifies which music on hold class to suggest to the peer channel when this channel places the peer on hold. It may be specified globally or on a per-user or per-peer basis.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>mohsuggest:</td>
 		<td>&nbsp;<input type='text'  size=12 id='mohsuggest'></td>
 </tr>
-<tr><td align=right>language:</td>
+<tr onMouseover="ddrivetip(' Default language setting for all users/peers','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>language:</td>
 		<td>&nbsp;<input type='text' size=3 id='language'></td>
 </tr>
-<tr><td align=right>relaxdtmf:</td>
+<tr onMouseover="ddrivetip('Relax dtmf handling','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>relaxdtmf:</td>
 		<td><input type='checkbox' id='relaxdtmf'></td>
 </tr>
-<tr><td align=right>rtptimeout:</td>
+<tr onMouseover="ddrivetip(' Terminate call if 60 seconds of no RTP activity when we're not on hold ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>rtptimeout:</td>
 		<td>&nbsp;<input type='text' size=4 id='rtptimeout'></td>
 </tr>
-<tr><td align=right>rtpholdtimeout:</td>
+<tr onMouseover="ddrivetip(' Terminate call if 300 seconds of no RTP activity when we're on hold (must be > rtptimeout)','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>rtpholdtimeout:</td>
 		<td>&nbsp;<input type='text' size=4 id='rtpholdtimeout'></td>
 </tr>
-<tr><td align=right>trustrpid:</td>
+<tr onMouseover="ddrivetip('If Remote-Party-ID should be trusted','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>trustrpid:</td>
 		<td><input type='checkbox' id='trustrpid'></td>
 </tr>
-<tr><td align=right>sendrpid:</td>
+<tr onMouseover="ddrivetip('If Remote-Party-ID should be sent','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>sendrpid:</td>
 		<td><input type='checkbox' id='sendrpid'></td>
 </tr>
-<tr><td align=right>progressinband:</td>
+<tr onMouseover="ddrivetip(' If we should generate in-band ringing always use \'never\' to never use in-band signalling, even in cases where some buggy devices might not render it. Default: never','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>progressinband:</td>
 		<td>&nbsp;<select id='progressinband'>
 					<option value='never'>never</option>
 					<option value='no'>no</option>
@@ -134,16 +129,16 @@
 				</select>
 		</td>
 </tr>
-<tr><td align=right>useragent:</td>
+<tr onMouseover="ddrivetip('Allows you to change the user agent string','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>useragent:</td>
 		<td>&nbsp;<input type='text' size=12 id='useragent'></td>
 </tr>
-<tr><td align=right>promiscredir:</td>
+<tr onMouseover="ddrivetip('If yes, allows 302 or REDIR to non-local SIP address Note that promiscredir when redirects are made to the local system will cause loops since Asterisk is incapable of performing a \'hairpin\' call.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>promiscredir:</td>
 		<td><input type='checkbox' id='promiscredir'></td>
 </tr>
-<tr><td align=right>usereqphone:</td>
+<tr onMouseover="ddrivetip(' If checked, \'user=phone\' is added to uri that contains a valid phone number','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>usereqphone:</td>
 		<td><input type='checkbox' id='usereqphone'></td>
 </tr>
-<tr><td align=right>dtmfmode:</td>
+<tr onMouseover="ddrivetip(' Set default dtmfmode for sending DTMF. Default: rfc2833H ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>dtmfmode:</td>
 		<td>&nbsp;<select id='dtmfmode'>
 					<option value='rfc2833'>rfc2833</option>
 					<option value='info'>info</option>
@@ -152,42 +147,42 @@
 				</select>
 		</td>
 </tr>
-<tr><td align=right>compactheaders:</td>
+<tr onMouseover="ddrivetip('  send compact sip headers','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>compactheaders:</td>
 		<td><input type='checkbox' id='compactheaders'></td>
 </tr>
-<tr><td align=right>videosupport:</td>
+<tr onMouseover="ddrivetip('Turn on support for SIP video ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>videosupport:</td>
 		<td><input type='checkbox' id='videosupport'></td>
 </tr>
-<tr><td align=right>maxcallbitrate (kb/s):</td>
+<tr onMouseover="ddrivetip('Maximum bitrate for video calls (default 384 kb/s)','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>maxcallbitrate (kb/s):</td>
 		<td>&nbsp;<input type='text' size=4  dfalt=384 id='maxcallbitrate'></td>
 </tr>
-<tr><td align=right>callevents:</td>
+<tr onMouseover="ddrivetip('generate manager events when sip ua performs events (e.g. hold)','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>callevents:</td>
 		<td><input type='checkbox' id='callevents'></td>
 </tr>
-<tr><td align=right>alwaysauthreject:</td>
+<tr onMouseover="ddrivetip(' When an incoming INVITE or REGISTER is to be rejected, for any reason, always reject with \'401 Unauthorized\' instead of letting the requester know whether there was a matching user or peer for their request ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>alwaysauthreject:</td>
 		<td><input type='checkbox' id='alwaysauthreject'></td>
 </tr>
-<tr><td align=right>g726nonstandard:</td>
+<tr onMouseover="ddrivetip(' If the peer negotiates G726-32 audio, use AAL2 packing order instead of RFC3551 packing order (this is required for Sipura and Grandstream ATAs, among others). This is contrary to the RFC3551 specification, the peer _should_ be negotiating AAL2-G726-32 instead :-( ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>g726nonstandard:</td>
 		<td><input type='checkbox' id='g726nonstandard'></td>
 </tr>
 
 
 <tr bgcolor="#FFFFFF" height=15><td colspan=2></td></tr>
 <tr bgcolor="#FFFFFF" ><td colspan=2><B>&nbsp;T.38 FAX Passthrough Support</B></td></tr>
-<tr bgcolor="#FFFFFF" ><td align=right>t38pt_udptl:</td>
+<tr bgcolor="#FFFFFF"  onMouseover="ddrivetip('Enables T.38 fax (UDPTL) passthrough on SIP to SIP calls','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>t38pt_udptl:</td>
 										<td><input type='checkbox' id='t38pt_udptl'></td>
 </tr>
 
 
 <tr bgcolor="#FFFFFF" height=15><td colspan=2></td></tr>
 <tr><td colspan=2><B>&nbsp;Sip Debugging</B></td></tr>
-<tr><td align=right>sipdebug:</td>
+<tr onMouseover="ddrivetip('Turn on SIP debugging by default ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>sipdebug:</td>
 		<td><input type='checkbox' id='sipdebug'></td>
 </tr>
-<tr><td align=right>recordhistory:</td>
+<tr onMouseover="ddrivetip(' Record SIP history by default ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>recordhistory:</td>
 		<td><input type='checkbox' id='recordhistory'></td>
 </tr>
-<tr><td align=right>dumphistory:</td>
+<tr onMouseover="ddrivetip('Dump SIP history at end of SIP dialogue ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>dumphistory:</td>
 		<td><input type='checkbox' id='dumphistory'></td>
 </tr>
 
@@ -196,13 +191,13 @@
 <tr   height=15><td colspan=2></td></tr>
 <tr bgcolor="#FFFFFF" height=15><td colspan=2></td></tr>
 <tr bgcolor="#FFFFFF"><td colspan=2><B>&nbsp;Status Notifications (Subscriptions) </B></td></tr>
-<tr bgcolor="#FFFFFF"><td align=right>allowsubscribe:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip(' Support for subscriptions.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>allowsubscribe:</td>
 										<td><input type='checkbox' id='allowsubscribe'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>subscribecontext:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip(' Set a specific context for SUBSCRIBE requests. Useful to limit subscriptions to local extensions','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>subscribecontext:</td>
 										<td>&nbsp;<input size=8 type='text' id='subscribecontext'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>notifyringing:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip(' Notify subscriptions on RINGING state','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>notifyringing:</td>
 										<td><input type='checkbox' id='notifyringing'></td>
 </tr>
 
@@ -210,13 +205,13 @@
 
 <tr bgcolor="#FFFFFF" height=15><td colspan=2></td></tr>
 <tr><td colspan=2><B>&nbsp;Outbound SIP Registrations</B></td></tr>
-<tr><td align=right>register:</td>
+<tr onMouseover="ddrivetip('Register as a SIP user agent to a SIP proxy (provider)','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>register:</td>
 		<td>&nbsp;<input size=18 type='text' id='register'></td>
 </tr>
-<tr><td align=right>registertimeout:</td>
+<tr onMouseover="ddrivetip('retry registration calls at every \'x\' seconds (default 20)','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>registertimeout:</td>
 		<td>&nbsp;<input size=4 type='text' id='registertimeout'></td>
 </tr>
-<tr><td align=right>registerattempts:</td>
+<tr onMouseover="ddrivetip(' Number of registration attempts before we give up; 0 = continue foreverp','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>registerattempts:</td>
 		<td>&nbsp;<input size=4 type='text' id='registerattempts'></td>
 </tr>
 <tr height=15><td colspan=2></td></tr>
@@ -225,19 +220,19 @@
 
 <tr bgcolor="#FFFFFF" height=15><td colspan=2></td></tr>
 <tr bgcolor="#FFFFFF"><td colspan=2><B>&nbsp;NAT Support</B></td></tr>
-<tr bgcolor="#FFFFFF"><td align=right>externip:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip('Address that we're going to put in outbound SIP messages if we're behind a NAT','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>externip:</td>
 										<td>&nbsp;<input size=16 type='text' id='externip'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>externhost:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip('Alternatively you can specify an external host, and Asterisk will perform DNS queries periodically.  Not recommended for production environments!  Use externip instead ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>externhost:</td>
 										<td>&nbsp;<input size=16 type='text' id='externhost'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>externrefresh:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip('How often to refresh externhost if used. You may a local network in the field below.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>externrefresh:</td>
 										<td>&nbsp;<input size=4 type='text' id='externrefresh'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>localnet:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip(' \'192.168.0.0/255.255.0.0\'  : All RFC 1918 addresses are local networks, \'10.0.0.0/255.0.0.0\' : Also RFC1918,  \'172.16.0.0/12\' : Another RFC1918 with CIDR notation, \'169.254.0.0/255.255.0.0\' : Zero conf local network ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>localnet:</td>
 										<td>&nbsp;<input size=16 type='text' id='localnet'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>nat:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip('Global NAT settings  (Affects all peers and users); yes = Always ignore info and assume NAT; no = Use NAT mode only according to RFC3581; never = Never attempt NAT mode or RFC3581 support; route = Assume NAT, don't send rport','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>nat:</td>
 		<td>&nbsp;<select id='nat'>
 					<option value='yes'>yes</option>
 					<option value='no'>no</option>
@@ -246,7 +241,7 @@
 				</select>
 		</td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>canreinvite:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip(' Asterisk by default tries to redirect the RTP media stream (audio) to go directly from the caller to the callee.  Some devices do not support this (especially if one of them is behind a NAT). ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>canreinvite:</td>
 		<td>&nbsp;<select id='canreinvite'>
 					<option value='yes'>yes</option>
 					<option value='nonat'>nonat</option>
@@ -258,63 +253,64 @@
 
 <tr   height=15><td colspan=2></td></tr>
 <tr><td colspan=2><B>&nbsp;Realtime Support</B></td></tr>
-<tr><td align=right>rtcachefriends:</td>
+<tr onMouseover="ddrivetip(' Cache realtime friends by adding them to the internal list ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>rtcachefriends:</td>
 		<td><input type='checkbox' id='rtcachefriends'></td>
 </tr>
-<tr><td align=right>rtsavesysname:</td>
+<tr onMouseover="ddrivetip('Save systemname in realtime database at registration','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>rtsavesysname:</td>
 		<td><input type='checkbox' id='rtsavesysname'></td>
 </tr>
-<tr><td align=right>rtupdate:</td>
+<tr onMouseover="ddrivetip('Send registry updates to database using realtime?','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>rtupdate:</td>
 		<td><input type='checkbox' id='rtupdate'></td>
 </tr>
-<tr><td align=right>rtautoclear:</td>
-		<td><input type='checkbox' id='rtautoclear'></td>
-</tr>
-<tr><td align=right>ignoreregexpire:</td>
+<tr onMouseover="ddrivetip(' Auto-Expire friends created on the fly on the same schedule as if it had just registered? (yes|no|<seconds>) If set to yes, when the registration expires, the friend will vanish from the configuration until requested again. If set to an integer, friends expire within this number of seconds instead of the registration interval.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>rtautoclear:</td>
+		<td><input type='text' size=4 id='rtautoclear'></td>
+</tr>
+<tr onMouseover="ddrivetip(' Enabling this setting has two functions: <P> For non-realtime peers, when their registration expires, the information will _not_ be removed from memory or the Asterisk database if you attempt to place a call to the peer, the existing information will be used in spiteof it having expired</P> <P>For realtime peers, when the peer is retrieved from realtime storage, the registration information will be used regardless of whether it has expired or not; if it expires while the realtime peer is still in memory (due to caching or other reasons), the information will not be removed from realtime storage</P>','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>ignoreregexpire:</td>
 		<td><input type='checkbox' id='ignoreregexpire'></td>
 </tr>
 
 <tr bgcolor="#FFFFFF" height=15><td colspan=2></td></tr>
 <tr bgcolor="#FFFFFF"><td colspan=2><B>&nbsp;SIP Domain Support</B></td></tr>
-<tr bgcolor="#FFFFFF"><td align=right>domain:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip('list of \'allowed\' domains ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>domain:</td>
 										<td>&nbsp;<input type='text' id='domain'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>autodomain:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip(' Turn this on to have Asterisk add local host name and local IP to domain list.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>autodomain:</td>
 										<td><input type='checkbox' id='autodomain'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>allowexternaldomains:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip('Allow requests for domains not serviced by this server ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>allowexternaldomains:</td>
 										<td><input type='checkbox' id='allowexternaldomains'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>allowexternalinvites:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip('Enable INVITE and REFER to non-local domains ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>allowexternalinvites:</td>
 										<td><input type='checkbox' id='allowexternalinvites'></td>
 </tr>
-<tr bgcolor="#FFFFFF"><td align=right>fromdomain:</td>
+<tr bgcolor="#FFFFFF" onMouseover="ddrivetip('When making outbound SIP INVITEs to non-peers, use your primary domain \'identity\' for From: headers instead of just your IP address. This is to be polite and it may be a mandatory requirement for some destinations which do not have a prior account relationship with your server. ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>fromdomain:</td>
 										<td>&nbsp;<input type='text' size=18 id='fromdomain'></td>
 </tr>
 <tr bgcolor="#FFFFFF" height=15><td colspan=2></td></tr>
 
 <tr   height=15><td colspan=2></td></tr>
 <tr><td colspan=2><B>&nbsp;Jitter Buffer Configuration</B></td></tr>
-<tr><td align=right>jbenable:</td>
+<tr onMouseover="ddrivetip('  Enables the use of a jitterbuffer on the receiving side of a SIP channel.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>jbenable:</td>
 		<td><input type='checkbox' id='jbenable'></td>
 </tr>
-<tr><td align=right>jbforce:</td>
+<tr onMouseover="ddrivetip('Forces the use of a jitterbuffer on the receive side of a SIP channel ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>jbforce:</td>
 		<td><input type='checkbox' id='jbforce'></td>
 </tr>
-<tr><td align=right>jbmaxsize:</td>
+<tr onMouseover="ddrivetip(' Max length of the jitterbuffer in milliseconds ','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>jbmaxsize:</td>
 		<td>&nbsp;<input type='text' size=4 id='jbmaxsize'></td>
 </tr>
-<tr><td align=right>jbresyncthreshold:</td>
+<tr onMouseover="ddrivetip(' Jump in the frame timestamps over which the jitterbuffer is resynchronized. Useful to improve the quality of the voice, with big jumps in/broken timestamps, usualy sent from exotic devices and programs. Defaults to 1000.','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>jbresyncthreshold:</td>
 		<td>&nbsp;<input type='text' size=4 id='jbresyncthreshold'></td>
 </tr>
-<tr><td align=right>jbimpl:</td>
+<tr onMouseover="ddrivetip(' 
+Jitterbuffer implementation, used on the receiving side of a SIP channel. Two implementations are currenlty available - \'fixed\' (with size always equals to jbmaxsize) and \'adaptive\' (with variable size, actually the new jb of IAX2)','#F4EBD8')" onMouseout="hideddrivetip()"><td align=right>jbimpl:</td>
 		<td>&nbsp;<select id='jbimpl'>
 					<option value='fixed'>fixed</option>
 					<option value='adaptive'>adaptive</option>
 				</select>
 		</td>
 </tr>
-<tr><td align=right>jblog:</td>

[... 52 lines stripped ...]


More information about the asterisk-gui-commits mailing list