Initial Commit of AgileBill Open Source

This commit is contained in:
unknown
2008-11-26 14:50:40 -08:00
parent ae5a0fc25e
commit 02306ccc47
2954 changed files with 410976 additions and 0 deletions

View File

@@ -0,0 +1,259 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
{if $plugin_data.type == 'pin'}
<!-- PIN CODE AUTHENTICATION -->
{if $SESS_LOGGED}
<p>
{$method->exe_noauth('voip_prepaid','menu_pins')}
{if $pins}
<p><b>You can select an existing Pin # below to replenish, or leave the selection as is and we will generate a new Pin number.</b></p>
<select name="attr[pin]">{html_options options=$pins}</select>
{/if}
{else}You are not logged in. If you already have an account and have purchased our prepaid service in the past, please login and return to this page if you wish to select one of your existing pins to add minutes to. {/if}
{literal}
<script language="javascript">
function product_plugin_validate() {return true;}
</script>
{/literal}
{elseif $plugin_data.type == 'ani'}
<!-- ANI AUTHENTICATION -->
<p>
<p><b>Enter the number you will be calling from, we will authenticate against this number.</b></p>
<input id="ani_new" name="attr[ani_new]" type="text">
Example: 18885551212
{if $SESS_LOGGED}
{$method->exe_noauth('voip_prepaid','menu_ani')}
{if $ani}
<p><b>You can select an existing number below to replenish, or leave enter a new number above to create a separate balance for a new ANI.</b></p>
<select id="ani_old" name="attr[ani_old]">{html_options options=$ani}</select>
{else} <input id="ani_old" type="hidden" value="0">{/if}
{else}
<p>You are not logged in. If you already have an account and have purchased our prepaid service in the past, please login and return to this page if you wish to select one of your existing pins to add minutes to. <input id="ani_old" type="hidden" value="0"></p>
{/if}
{literal}
<script language="javascript">
var http = getHTTPObject();
function product_plugin_validate()
{
var ani_new = document.getElementById('ani_new').value;
var ani_old = document.getElementById('ani_old').value;
if(ani_old != 0 && ani_old != '' && ani_new.length == 0) return true;
if(ani_new == '' || ani_new.length < 11) {
alert( "Please enter a valid number to continue. " );
return false;
}
var charpos = ani_new.search("[^0-9]");
if(ani_new.length > 0 && charpos >= 0) {
alert('Only numeric digits allowed');
return false;
}
return true;
}
</script>
{/literal}
{elseif $plugin_data.type == 'did'}
<!-- SIP AUTHENTICATION -->
{literal}
<script>
function switchDidType() {
var old=document.getElementById('newdid').checked;
if(old==false) {
document.getElementById('olddidDiv').style.display='block';
document.getElementById('newdidDiv').style.display='none';
try{document.getElementById('voip_station').name='';} catch(e) {}
try{document.getElementById('voip_station_old').name='attr[station]';} catch(e) {}
} else {
document.getElementById('olddidDiv').style.display='none';
document.getElementById('newdidDiv').style.display='block';
try{document.getElementById('voip_station_old').name='';} catch(e) {}
try{document.getElementById('voip_station').name='attr[station]';} catch(e) {}
}
}
</script>
{/literal}
<p><b><input id="newdid" name="didtype" type="radio" value="1" checked onClick="switchDidType()" />
Setup a new prepaid account, please select this option and select your location below.</b></p>
<div id="newdidDiv">
<p>Select your country: <br>
{$method->exe_noauth('voip','menu_countries')} </p>
<div id="div_state" {style_hide}>
<p>Select your State: <br>
{$method->exe_noauth('voip','menu_states')}</p>
</div>
<div id="div_location" {style_hide}>
<p>Select your Location:<br>
<select id="voip_location" name="attr[location]" onChange="voipChangeLocation(this.value)"></select></p>
</div>
<div id="div_station" {style_hide}>
<p>Select your Number:<br>
<select id="voip_station" name="attr[station]"></select></p>
</div>
</div>
<p><b><input id="olddid" name="didtype" type="radio" value="1" onClick="switchDidType()" />
Add a balance to an existing prepaid account, please select this option.</b></p>
<div id="olddidDiv" {style_hide}>
{if $SESS_LOGGED}
{$method->exe_noauth('voip_prepaid','menu_did')}
{if $dids}<select id="voip_station_old" name="">{html_options options=$dids}</select>{/if}
{else}
You are not logged in. If you already have an account and have purchased our prepaid service in the past, please login and return to this page if you wish to select one of your existing pins to add minutes to.
<input id="station_old" type="hidden" value="0">
{/if}
{if $plugin.parent_enabled && $SESS_LOGGED}
<p>Associated Account: <br>
{$method->exe_noauth('voip','menu_parent_service')}</p>
{/if}
{if $admin}
<p>Ported Number:<br>
<input type="text" id="voip_ported" name="attr[ported]"></p>
{/if}
</div>
{literal}
<script language="javascript">
var http = getHTTPObject();
// change selected country
function voipChangeCountry(code) {
menuClearOptions('voip_location');
menuClearOptions('voip_station');
if(code == '1' ) {
document.getElementById('div_state').style.display='block';
} else if (code != '') {
document.getElementById('div_state').style.display='none';
document.getElementById('div_location').style.display='block';
document.getElementById('div_station').style.display='none';
voipGetLocationListByCountry(code);
} else {
document.getElementById('div_state').style.display='none';
document.getElementById('div_location').style.display='none';
document.getElementById('div_station').style.display='none';
}
}
// change selected state
function voipChangeState(state) {
document.getElementById('div_location').style.display='block';
if(state) {
voipGetLocationList(state);
} else {
menuClearOptions('voip_location');
menuClearOptions('voip_station');
}
}
// change selected location
function voipChangeLocation(location) {
document.getElementById('div_station').style.display='block';
if(location) {
voipGetStationList(location,'');
} else {
menuClearOptions('voip_station');
}
}
// update location list
function voipGetLocationList(state) {
var url = "ajax.php?do[]=voip:menu_location&state="+state+"&id="+document.product_view.product_id.value;
http.open("GET", url, true);
http.onreadystatechange = function() {
if (http.readyState == 4) {
try { eval(http.responseText) } catch(e) {}
}
}
http.send(null);
}
function voipGetLocationListByCountry(country) {
var url = "ajax.php?do[]=voip:menu_location&country="+country+"&id="+document.product_view.product_id.value;
http.open("GET", url, true);
http.onreadystatechange = function() {
if (http.readyState == 4) {
try { eval(http.responseText) } catch(e) {}
}
}
http.send(null);
}
// update Station list
function voipGetStationList(location,country) {
var url = "ajax.php?do[]=voip:menu_station&location="+location+"&country="+country+"&id="+document.product_view.product_id.value;
http.open("GET", url, true);
http.onreadystatechange = function() {
if (http.readyState == 4) {
try { eval(http.responseText) } catch(e) {}
}
}
http.send(null);
}
function product_plugin_validate()
{
{/literal}{if $admin}{literal}
if(document.getElementById('voip_ported').value!='') {
if(document.getElementById('voip_station').value!='') {
alert("You cannot select both a Phone Number and Ported Number");
return false;
}
return true;
}
{/literal}{/if}{literal}
// validate old did
var oldChecked=document.getElementById('newdid').checked;
if(oldChecked==false && document.getElementById('voip_station_old').value < 1){
alert( "Please select a number to continue. " );
return false;
} else if(oldChecked==false && document.getElementById('voip_station_old').value != "" ) {
return true;
}
if(document.getElementById('voip_country').value=='') {
alert( "Please select a country to continue. ");
return false;
} else if(document.getElementById('voip_country').value=='USA') {
if(document.getElementById('voip_state').value=='') {
alert( "Please select a state to continue. ");
return false;
}
if(document.getElementById('voip_location').value=='') {
alert( "Please select a location and area code to continue." );
return false;
}
}
if(document.getElementById('voip_station').value=='') {
alert( "Please select a number to continue. " );
return false;
}
return true;
}
<!-- menu handlers -->
function menuClearOptions(element) {
var elSel = document.getElementById(element); var i; for (i = elSel.length - 1; i>=0; i--) elSel.remove(i);
}
function menuAppendOption(element,value,text) {
var elOptNew = document.createElement('option');
elOptNew.text = text;
elOptNew.value = value;
var elSel = document.getElementById(element);
try { elSel.add(elOptNew, null); } catch(ex) { elSel.add(elOptNew); }
}
</script>
{/literal}
{/if}

View File

@@ -0,0 +1,28 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
<div>
<p>Contact Name:<p> <input type="text" name="attr[contact]" />
</div>
<div>
<p>Contact E-mail:<p> <input type="text" name="attr[email]" />
</div>
<div>
<p>Contact Phone:<p> <input type="text" name="attr[phone]" />
</div>
<div>
<p>URL To Your Agileco Product and Admin Login:<p>
<input name="attr[url]" type="text" value="" size="60">
</div>
<div>
<p>FTP Details for your Agileco Product:<p>
<input name="attr[ftp]" type="text" value="" size="60">
</div>
<div>
<p>Description of Issue for this Incident:<p>
<textarea name="attr[desc]" cols="65" rows="6"></textarea>
</div>

View File

@@ -0,0 +1,154 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
{if $plugin_data.virtual_number || $plugin_data.provision_enabled || $plugin_data.fax_account || $plugin_data.remote_call_forwarding}
<p>Select your country: <br>
{$method->exe_noauth('voip','menu_countries')} </p>
<div id="div_state" {style_hide}>
<p>Select your State: <br>
{$method->exe_noauth('voip','menu_states')}</p>
</div>
<div id="div_location" {style_hide}>
<p>Select your Location:<br>
<select id="voip_location" name="attr[location]" onChange="voipChangeLocation(this.value)"></select></p>
</div>
<div id="div_station" {style_hide}>
<p>Select your Number:<br>
<select id="voip_station" name="attr[station]"></select></p>
</div>
{if $admin}
<p>Ported Number:<br>
<input type="text" id="voip_ported" name="attr[ported]"></p>
{/if}
{/if}
{if $plugin.parent_enabled && $SESS_LOGGED}
<p><strong>Associated Account: </strong><br>
{$method->exe_noauth('voip','menu_parent_service')}</p>
{/if}
{literal}
<script language="javascript">
var http = getHTTPObject();
// change selected country
function voipChangeCountry(code) {
menuClearOptions('voip_location');
menuClearOptions('voip_station');
if(code == '1' ) {
document.getElementById('div_state').style.display='block';
} else if (code != '') {
document.getElementById('div_state').style.display='none';
document.getElementById('div_location').style.display='block';
document.getElementById('div_station').style.display='none';
voipGetLocationListByCountry(code);
} else {
document.getElementById('div_state').style.display='none';
document.getElementById('div_location').style.display='none';
document.getElementById('div_station').style.display='none';
}
}
// change selected state
function voipChangeState(state) {
document.getElementById('div_location').style.display='block';
if(state) {
voipGetLocationList(state);
} else {
menuClearOptions('voip_location');
menuClearOptions('voip_station');
}
}
// change selected location
function voipChangeLocation(location) {
document.getElementById('div_station').style.display='block';
if(location) {
voipGetStationList(location,'');
} else {
menuClearOptions('voip_station');
}
}
// update location list
function voipGetLocationList(state) {
var url = "ajax.php?do[]=voip:menu_location&state="+state+"&id="+document.product_view.product_id.value;
http.open("GET", url, true);
http.onreadystatechange = function() {
if (http.readyState == 4) {
try { eval(http.responseText) } catch(e) {}
}
}
http.send(null);
}
function voipGetLocationListByCountry(country) {
var url = "ajax.php?do[]=voip:menu_location&country="+country+"&id="+document.product_view.product_id.value;
http.open("GET", url, true);
http.onreadystatechange = function() {
if (http.readyState == 4) {
try { eval(http.responseText) } catch(e) {}
}
}
http.send(null);
}
// update Station list
function voipGetStationList(location,country) {
var url = "ajax.php?do[]=voip:menu_station&location="+location+"&country="+country+"&id="+document.product_view.product_id.value;
http.open("GET", url, true);
http.onreadystatechange = function() {
if (http.readyState == 4) {
try { eval(http.responseText) } catch(e) {}
}
}
http.send(null);
}
function product_plugin_validate()
{
{/literal}{if $admin}{literal}
if(document.getElementById('voip_ported').value!='') {
if(document.getElementById('voip_station').value!='') {
alert("You cannot select both a Phone Number and Ported Number");
return false;
}
return true;
}
{/literal}{/if}{literal}
if(document.getElementById('voip_country').value=='') {
alert( "Please select a country to continue. ");
return false;
} else if(document.getElementById('voip_country').value=='USA') {
if(document.getElementById('voip_state').value=='') {
alert( "Please select a state to continue. ");
return false;
}
if(document.getElementById('voip_location').value=='') {
alert( "Please select a location and area code to continue." );
return false;
}
}
if(document.getElementById('voip_station').value=='') {
alert( "Please select a number to continue. " );
return false;
}
return true;
}
<!-- menu handlers -->
function menuClearOptions(element) {
var elSel = document.getElementById(element); var i; for (i = elSel.length - 1; i>=0; i--) elSel.remove(i);
}
function menuAppendOption(element,value,text) {
var elOptNew = document.createElement('option');
elOptNew.text = text;
elOptNew.value = value;
var elSel = document.getElementById(element);
try { elSel.add(elOptNew, null); } catch(ex) { elSel.add(elOptNew); }
}
</script>
{/literal}

View File

@@ -0,0 +1,44 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
<table width="100%" border="0" cellspacing="0" cellpadding="4">
{if $service.id}
<tr valign="top" class="row2">
<td>Link to assigned Assets:</td>
<td><a href="?_page=core:search&module=asset&asset_service_id={$service.id}">Click Here</a></td>
</tr>
{/if}
<tr valign="top" class="row2">
<td width="34%">Asset Pool </td>
<td width="66%">
{ $list->menu("no", "product_prod_plugin_data[AssetPool]", "asset_pool", "name", $plugin_data.AssetPool, "") }
The pool to assign available assets from </td>
</tr>
<tr valign="top" class="row2">
<td>Allow Manual Assignment </td>
<td><label>
<input type="checkbox" name="product_prod_plugin_data[manual]" value="1" {if $plugin_data.manual}checked{/if}>
Allow manual assignment from any asset pool
</label></td>
</tr>
<tr valign="top" class="row2">
<td>Asset Quanity </td>
<td><label>
<input name="product_prod_plugin_data[AssetQty]" type="text" value="{$plugin_data.AssetQty}" size="4" maxlength="3">
</label>
Number of assets to assign to this service </td>
</tr>
<tr valign="top" class="row2">
<td>Verify Availibility on Checkout </td>
<td>
<input type="checkbox" name="product_prod_plugin_data[CartCheck]" value="1" {if $plugin_data.CartCheck}checked{/if}>
Verifies availibility of assets when adding this item to the cart </td>
</tr>
<tr valign="top" class="row2">
<td>Un-assign asset on service suspension </td>
<td>
<input type="checkbox" name="product_prod_plugin_data[OnSuspend]" value="1" {if $plugin_data.OnSuspend}checked{/if}> </td>
</tr>
<tr valign="top" class="row2">
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

View File

@@ -0,0 +1,23 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
<table width="100%" border="0" cellspacing="0" cellpadding="4">
{if $service.id}
{/if}
<tr valign="top" class="row2">
<td width="34%">Product SKU </td>
<td width="66%">
{ $list->menu("no", "product_prod_plugin_data[sku]", "product", "sku", $plugin_data.sku, "") }
Example Assoc Menu </td>
</tr>
<tr valign="top" class="row2">
<td>Quanity </td>
<td><label>
<input name="product_prod_plugin_data[qty]" type="text" value="{$plugin_data.qty}" size="4" maxlength="3">
</label> </td>
</tr>
<tr valign="top" class="row2">
<td>Boolean</td>
<td>
<input type="checkbox" name="product_prod_plugin_data[bool]" value="1" {if $plugin_data.bool}checked{/if}>
</td>
</tr>
</table>

View File

@@ -0,0 +1,32 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
<table width="100%" border="0" cellspacing="3" cellpadding="1" class="row1">
<tr valign="top">
<td width="55%">Prepaid Type</td>
<td width="45%">
<select name="product_prod_plugin_data[type]" value="{$plugin_data.type}" onChange="submit()">
<option>-- Select One --</option>
<option value="pin" {if $plugin_data.type=='pin'}selected{/if}>PIN Authentication</option>
<option value="ani" {if $plugin_data.type=='ani'}selected{/if}>ANI Authentication</option>
<option value="did" {if $plugin_data.type=='did'}selected{/if}>SIP Prepaid</option>
</select> </td>
</tr>
{if $plugin_data.type == 'pin' || $plugin_data.type == 'ani'}
<tr valign="top">
<td width="55%"> Toll free number to sent to user in e-mail confirmation after provisioning </td>
<td> <input type="text" name="product_prod_plugin_data[number]" value="{$plugin_data.number}"> </td>
</tr>
<tr valign="top">
<td>Set auto expire pin after first use? </td>
<td>{ $list->bool("product_prod_plugin_data[expire]", $plugin_data.expire, "") } after
<input name="product_prod_plugin_data[expire_days]" type="text" id="product_prod_plugin_data[expire_days]" value="{$plugin_data.expire_days}" size="5"> days
</td>
</tr>
{elseif $plugin_data.type == 'did'}
{$block->display("product_plugin:plugin_prod_VOIP")}
{/if}
</table>

View File

@@ -0,0 +1,83 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
<table width="100%" border="0" cellspacing="3" cellpadding="1" class="row1">
<tr valign="top">
<td>Account Type </td>
<td><select name="product_prod_plugin_data[auth]">
<option value="login" {if $plugin_data.auth=="login"}selected{/if}>Login (user/pass)</option>
<option value="wireless" {if $plugin_data.auth=="wireless"}selected{/if}>Wireless (MAC ID)</option>
</select></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td width="45%"> Accounts Allowed</td>
<td width="21%">
<input type="text" name="product_prod_plugin_data[max]" value="{$plugin_data.max}" size="10">
</td>
<td width="34%"> Example: 1 </td>
</tr>
<tr valign="top">
<td>Service Type </td>
<td><input type="text" name="product_prod_plugin_data[service_type]" value="{$plugin_data.service_type}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Profiles</td>
<td><input type="text" name="product_prod_plugin_data[session_limit]" value="{$plugin_data.session_limit}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Time Bank </td>
<td><input type="text" name="product_prod_plugin_data[time_bank]" value="{$plugin_data.time_bank}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Speed Limit </td>
<td><input type="text" name="product_prod_plugin_data[speed_limit]" value="{$plugin_data.speed_limit}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Session Limit </td>
<td><input type="text" name="product_prod_plugin_data[session_limit]" value="{$plugin_data.session_limit}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Idle Limit </td>
<td><input type="text" name="product_prod_plugin_data[idle_limit]" value="{$plugin_data.idle_limit}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Port Limit </td>
<td><input type="text" name="product_prod_plugin_data[port_limit]" value="{$plugin_data.port_limit}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Filter Id </td>
<td><input type="text" name="product_prod_plugin_data[filter_id]" value="{$plugin_data.filter_id}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Netmask</td>
<td><input type="text" name="product_prod_plugin_data[netmask]" value="{$plugin_data.netmask}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Framed Route </td>
<td><input type="text" name="product_prod_plugin_data[framed_route]" value="{$plugin_data.framed_route}" size="10"></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Analog</td>
<td><input type="checkbox" name="product_prod_plugin_data[analog]" value="1" {if $plugin_data.analog}checked{/if}></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Digital</td>
<td><input type="checkbox" name="product_prod_plugin_data[digital]" value="1" {if $plugin_data.digital}checked{/if}></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td>Static IP</td>
<td><input type="text" name="product_prod_plugin_data[static_ip]" value="{$plugin_data.static_ip}" size="10"></td>
<td>Enter this value only after the service has been provisioned</td>
</tr>
</table>

View File

@@ -0,0 +1,25 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<tr valign="top" class="row2">
<td width="34%">Text for ticket </td>
<td width="66%"><textarea name="product_prod_plugin_data[message]" cols="60" rows="10">{$plugin_data.message}</textarea></td>
</tr>
<tr valign="top" class="row2">
<td>Department to Create Ticket In </td>
<td>{html_menu name=product_prod_plugin_data[department_id] assoc_table="ticket_department" assoc_field="name" size=5 default=$plugin_data.department_id}</td>
</tr>
<tr valign="top" class="row2">
<td>Extra E-mails to Notify (comma separated)</td>
<td><input type="text" name="product_prod_plugin_data[emails]" value="{$plugin_data.emails}" size="32"></td>
</tr>
<!--
<tr valign="top">
<td width="49%"> MeetMe Conference Limit (Combined Calling Minute Usage)</td>
<td width="17%"> ---</td>
<td width="34%">
<input type="text" name="product_prod_plugin_data[meetme_min_limit]" value="{$plugin_data.meetme_min_limit}" size="10">
0-Unlimited</td>
</tr>
-->
</table>

View File

@@ -0,0 +1,247 @@
{$list->unserial($product.prod_plugin_data, "plugin_data")}
<table width="100%" border="0" cellspacing="0" cellpadding="4">
<tr valign="top" class="row2">
<td colspan="2"><font size="+1">VoIP Platform</font></td>
</tr>
<tr valign="top" class="row2">
<td>Platform: </td>
<td><select name="product_prod_plugin_data[voip_platform]" onChange="submit();">
<option value="asterisk" {if $plugin_data.voip_platform =="asterisk"}selected{/if}>Asterisk</option>
<option value="ser" {if $plugin_data.voip_platform =="ser"}selected{/if}>SER</option>
</select></td>
</tr>
<tr valign="top" class="row2">
<td colspan="2">&nbsp;</td>
</tr>
{if $plugin_data.voip_platform eq "asterisk" || $plugin_data.voip_platform eq ""}
<tr valign="top" class="row2">
<td colspan="2"><font size="+1">Account Creation and Provisioning</font></td>
</tr>
<tr valign="top" class="row2">
<td width="49%"><em>Allow Selection of Parent Service?</em><br>
This allows you to modify existing accounts to provision additional features to their existing services. It also allows you to provision virtual accounts to a parent service. </td>
<td valign="top">{ $list->bool("product_prod_plugin_data[parent_enabled]", $plugin_data.parent_enabled, "form_menu") }</td>
</tr>
<tr valign="top" class="row2">
<td colspan="2"><div align="center"><strong>NOTE: From the selections available below, only <em>ONE</em> may be yes. Failure to yield to this will cause unpredictable results. </strong></div></td>
</tr>
<tr valign="top" class="row2">
<td><em>Virtual Account?</em><br>
This allows the assignment of new DIDs to a parent service, so that calling a purchased DID actually rings the phone associated with a parent service. </td>
<td>{ $list->bool("product_prod_plugin_data[virtual_number]", $plugin_data.virtual_number, "form_menu") } </td>
</tr>
<tr valign="top" class="row2">
<td><em>Provision a peer account on Asterisk?</em><br>
For regular accounts, this allows the provisioning of a channel, allowing for an actual telephone/adaptor to register with the Asterisk server using the channel type selected below.. </td>
<td>{ $list->bool("product_prod_plugin_data[provision_enabled]", $plugin_data.provision_enabled, "form_menu") } </td>
</tr>
<tr valign="top" class="row2">
<td><em>Channel Type</em><br>
The channel type to be provisioned. Requires the above selection to be Yes. </td>
<td><select name="product_prod_plugin_data[provision_channel]">
<option value="0" {if $plugin_data.provision_channel =="0"}selected{/if}>SIP</option>
<option value="1" {if $plugin_data.provision_channel =="1"}selected{/if}>IAX2</option>
</select>
</td>
</tr>
<tr valign="top" class="row2">
<td><em>Remote Call Forwarding?</em><br>
Allows a DID to forward to another DID.</td>
<td>{$list->bool("product_prod_plugin_data[remote_call_forwarding]", $plugin_data.remote_call_forwarding, "form_menu")} <font color="red">*</font></td>
</tr>
<tr valign="top" class="row2">
<td><em>MeetMe Conferencing?</em><br>
Allows the DID to terminate into a MeetMe conference</td>
<td>{ $list->bool("product_prod_plugin_data[meetme_account]", $plugin_data.meetme_account, "form_menu") } <font color="red">*</font></td>
</tr>
<tr valign="top" class="row2">
<td><em>Fax2Email?</em><br>
Allows the DID to terminate into the fax 2 email application</td>
<td>{ $list->bool("product_prod_plugin_data[fax_account]", $plugin_data.fax_account, "form_menu") } <font color="red">*</font></td>
</tr>
<tr valign="top" class="row2">
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr valign="top" class="row2">
<td><em>Context within the dial plan for provisioned account:</em><br>
This gives you the ability to create different service levels, by placing different services in to different contexts. For instance: A context called economy could terminate all calls over VoIP, but a context called premium could terminate all calls out TDM. </td>
<td><input type="text" name="product_prod_plugin_data[context]" value="{$plugin_data.context}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td><em>Use DID Pool Plugin(s) :</em><br>
Allow the customer to pick their DIDs from the following..</td>
<td>{html_menu_multi name=product_prod_plugin_data[voip_did_plugins] assoc_table="voip_did_plugin" assoc_field="name" size=5 default=$plugin_data.voip_did_plugins}</td>
</tr>
<tr valign="top" class="row2">
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr valign="top" class="row2">
<td colspan="2"><font size="+1">Features</font></td>
</tr>
<tr valign="top" class="row2">
<td>Provision Voicemail? </td>
<td>{ $list->bool("product_prod_plugin_data[voicemail_enabled]", $plugin_data.voicemail_enabled, "form_menu") }</td>
</tr>
<tr valign="top" class="row2">
<td>Provision Call waiting? </td>
<td>{ $list->bool("product_prod_plugin_data[callwaiting_enabled]", $plugin_data.callwaiting_enabled, "form_menu") }</td>
</tr>
<tr valign="top" class="row2">
<td>Provision Blacklisting? </td>
<td>{ $list->bool("product_prod_plugin_data[blacklist_enabled]", $plugin_data.blacklist_enabled, "form_menu") } <font color="red">*</font></td>
</tr>
<tr valign="top" class="row2">
<td>Provision ANI call routing? </td>
<td>{ $list->bool("product_prod_plugin_data[anirouting_enabled]", $plugin_data.anirouting_enabled, "form_menu") } <font color="red">*</font></td>
</tr>
<tr valign="top" class="row2">
<td>Provision Fax detection? </td>
<td>{ $list->bool("product_prod_plugin_data[faxdetection_enabled]", $plugin_data.faxdetection_enabled, "form_menu") } <font color="red">*</font></td>
</tr>
<tr valign="top" class="row2">
<td>Calling Name Display?<br>
Requires add-on service from iSPServices.</td>
<td>{ $list->bool("product_prod_plugin_data[cnam_enabled]", $plugin_data.cnam_enabled, "form_menu") } <font color="red">*</font></td>
</tr>
<tr valign="top" class="row2">
<td>Allow assignment of fail-over destination? </td>
<td>{ $list->bool("product_prod_plugin_data[can_failover]", $plugin_data.can_failover, "form_menu") } <font color="red">*</font></td>
</tr>
<tr valign="top" class="row2">
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr valign="top" class="row2">
<td colspan="2"><font size="+1">Rating Engine</font></td>
</tr>
<tr valign="top" class="row2">
<td>Add DIDs provisioned in to &quot;In-Network&quot; rating type? </td>
<td>{ $list->bool("product_prod_plugin_data[innetwork_enabled]", $plugin_data.innetwork_enabled, "form_menu") }</td>
</tr>
<tr valign="top" class="row2">
<td>Rate CDR records associated with this service? </td>
<td>{ $list->bool("product_prod_plugin_data[rate_cdr]", $plugin_data.rate_cdr, "form_menu") } </td>
</tr>
<tr valign="top" class="row2">
<td>Rate CDR records associated with this service as account codes?<br>
Required if there isn't a DID assignment. </td>
<td>{ $list->bool("product_prod_plugin_data[rate_accountcode]", $plugin_data.rate_accountcode, "form_menu") } </td>
</tr>
<!--
<tr valign="top">
<td width="49%"> MeetMe Conference Limit (Combined Calling Minute Usage)</td>
<td width="17%"> ---</td>
<td width="34%">
<input type="text" name="product_prod_plugin_data[meetme_min_limit]" value="{$plugin_data.meetme_min_limit}" size="10">
0-Unlimited</td>
</tr>
-->
{/if}
{if $plugin_data.voip_platform eq "ser"}
<tr valign="top" class="row2">
<td colspan="2"><font size="+1">Account Creation and Provisioning</font></td>
</tr>
<tr valign="top" class="row2">
<td width="49%"><em>Allow Selection of Parent Service?</em><br>
This allows you to modify existing accounts to provision additional features to their existing services. It also allows you to provision virtual accounts to a parent service. </td>
<td valign="top">{ $list->bool("product_prod_plugin_data[parent_enabled]", $plugin_data.parent_enabled, "form_menu") }</td>
</tr>
<tr valign="top" class="row2">
<td colspan="2">&nbsp;</td>
</tr>
<tr valign="top" class="row2">
<td><em>Virtual Account?</em><br>
This allows the assignment of new DIDs to a parent service, so that calling a purchased DID actually rings the phone associated with a parent service. </td>
<td>{ $list->bool("product_prod_plugin_data[virtual_number]", $plugin_data.virtual_number, "form_menu") } </td>
</tr>
<tr valign="top" class="row2">
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr valign="top" class="row2">
<td><em>Groups granted for provisioned account:</em><br>
This gives you the ability to create different service levels, by placing different services in to different groups. For instance: A group called economy could terminate all calls over VoIP, but a group called premium could terminate all calls out TDM. </td>
<td><p>
<input type="text" name="product_prod_plugin_data[context]" value="{$plugin_data.context}" size="24">
</p>
<p><em>Please separate multiple entries with a comma. </em> </p></td>
</tr>
<tr valign="top" class="row2">
<td><em>Use DID Pool Plugin(s) :</em><br>
Allow the customer to pick their DIDs from the following..</td>
<td>{html_menu_multi name=product_prod_plugin_data[voip_did_plugins] assoc_table="voip_did_plugin" assoc_field="name" size=5 default=$plugin_data.voip_did_plugins}</td>
</tr>
<tr valign="top" class="row2">
<td>&nbsp;</td>
<td>&nbsp;
<input type="hidden" name="product_prod_plugin_data[provision_channel]" value="0">
<input type="hidden" name="product_prod_plugin_data[provision_enabled]" value="1">
</td>
</tr>
<tr valign="top" class="row2">
<td colspan="2"><font size="+1">Rating Engine</font></td>
</tr>
<tr valign="top" class="row2">
<td>Add DIDs provisioned in to &quot;In-Network&quot; rating type? </td>
<td>{ $list->bool("product_prod_plugin_data[innetwork_enabled]", $plugin_data.innetwork_enabled, "form_menu") }</td>
</tr>
<tr valign="top" class="row2">
<td>Rate CDR records associated with this service? </td>
<td>{ $list->bool("product_prod_plugin_data[rate_cdr]", $plugin_data.rate_cdr, "form_menu") } </td>
</tr>
<tr valign="top" class="row2">
<td>Rate CDR records associated with this service as account codes?<br>
Required if there isn't a DID assignment. </td>
<td>{ $list->bool("product_prod_plugin_data[rate_accountcode]", $plugin_data.rate_accountcode, "form_menu") } </td>
</tr>
<tr valign="top" class="row2">
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr valign="top" class="row2">
<td colspan="2"><font size="+1">SER Specific</font></td>
<td>&nbsp;</td>
</tr>
<tr valign="top" class="row2">
<td>Database Host: </td>
<td><input type="text" name="product_prod_plugin_data[ser_db_host]" value="{$plugin_data.ser_db_host}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td>Database Name: </td>
<td><input type="text" name="product_prod_plugin_data[ser_db_name]" value="{$plugin_data.ser_db_name}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td>Database Username: </td>
<td><input type="text" name="product_prod_plugin_data[ser_db_user]" value="{$plugin_data.ser_db_user}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td>Database Password: </td>
<td><input type="text" name="product_prod_plugin_data[ser_db_pass]" value="{$plugin_data.ser_db_pass}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td>SER IP or Hostname for URIs: </td>
<td><input type="text" name="product_prod_plugin_data[ser_ip]" value="{$plugin_data.ser_ip}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td>Subscriber table name: </td>
<td><input type="text" name="product_prod_plugin_data[ser_db_subscriber]" value="{$plugin_data.ser_db_subscriber}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td>Aliases table name: </td>
<td><input type="text" name="product_prod_plugin_data[ser_db_alias]" value="{$plugin_data.ser_db_alias}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td>Group table name: </td>
<td><input type="text" name="product_prod_plugin_data[ser_db_grp]" value="{$plugin_data.ser_db_grp}" size="24"></td>
</tr>
<tr valign="top" class="row2">
<td>Accounting table name: </td>
<td><input type="text" name="product_prod_plugin_data[ser_db_acc]" value="{$plugin_data.ser_db_acc}" size="24"></td>
</tr>
{/if}
<tr valign="top" class="row2">
<td colspan="2"><font size="-1">(<font color="red">*</font>) Anything marked with an asterisk is available in the professional version only.</font></td>
</tr>
</table>