Sorry, disregard my last email. Here is the patch.
Erin
----- Original Message -----
> From: "Andrew Latham" <[email protected]>
> To: "Asterisk GUI project discussion" <[email protected]>
> Sent: Thursday, August 26, 2010 12:40:03 PM
> Subject: Re: [asterisk-gui] Manage Calling Rules + Prepend These Digits error
> We have been watching...
>
>
> ~
> Andrew "lathama" Latham
> [email protected]
>
> * Learn more about OSS
> http://en.wikipedia.org/wiki/Open-source_software
> * Learn more about Linux http://en.wikipedia.org/wiki/Linux
> * Learn more about Tux http://en.wikipedia.org/wiki/Tux
>
>
>
> On Thu, Aug 26, 2010 at 1:28 PM, Erin Spiceland
> <[email protected]> wrote:
> > Please forgive the out-of-thread email. I have just subscribed to
> > this list, so I cannot reply to a previous email.
> >
> > The issue where extraneous ${ and } are added to the calling rule
> > has been fixed in svn r5070.
> >
> > Regards,
> >
> > Erin
> >
> > --
> > _____________________________________________________________________
> > -- Bandwidth and Colocation Provided by http://www.api-digital.com
> > --
> >
> > asterisk-gui mailing list
> > To UNSUBSCRIBE or update options visit:
> > http://lists.digium.com/mailman/listinfo/asterisk-gui
> >
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-gui mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-gui
Index: js/astman.js
===================================================================
--- js/astman.js (revision 5069)
+++ js/astman.js (revision 5070)
@@ -1685,11 +1685,60 @@
getArgsArrayFromArgsString: function(x){ // expects x as 'context,exten,pri' or 'context,exten,pri'
if (typeof x != 'string') return [];
+
+ var nested_parse = function (str, sep) {
+ var buffer = '';
+ var stack = new Array();
+ var depth = 0;
+ var len = str.length;
+ for(var i=0; i<len; i++) {
+ var char = str.charAt(i);
+ switch(char) {
+ case '(':
+ depth++;
+ break;
+ case sep.toString():
+ if (!depth) {
+ if (buffer != '') {
+ stack.push(buffer);
+ buffer = '';
+ }
+
+ continue;
+ }
+
+ break;
+ case ' ':
+ if (!depth) {
+ continue;
+ }
+ break;
+ case ')':
+ if (depth) {
+ depth--;
+ } else {
+ stack.push("" + buffer + char);
+ buffer = '';
+ continue;
+ }
+ break;
+ }
+ buffer += char;
+ }
+
+ if (buffer == '') {
+ stack.push(buffer);
+ }
+
+ return stack;
+ };
+
if(x.contains(',') ){
- return x.split(',');
+ nested_parse(x,',');
+ return nested_parse(x,',');
}
if(x.contains('|') ){
- return x.split('|');
+ return nested_parse(x,'|');
}
return [x] ;
},
@@ -1906,16 +1955,26 @@
if(!WhatToDial.contains('${EXTEN')){ // if WhatToDial is in some other format that the gui does not understand
// TODO : replace the above if condition with a regular expression to check for the acceptable formats
// TODO : THROW ERROR
- return {name : trunkname, channel : channel, prepend : WhatToDial, stripx : ''};
+ return {name : trunkname, channel : channel, prepend : WhatToDial, stripx : '', filter: ''};
}
var prepend = WhatToDial.beforeChar('$') ;
- var extenString = WhatToDial.betweenXY('{','}') ;
+ if (WhatToDial.contains('FILTER')) {
+ var filterstring = WhatToDial.betweenXY('(', ')');
+ filterstring = filterstring.split(',');
+
+ var extenString = filterstring[1].betweenXY('{', '}');
+ var filter = filterstring[0];
+ } else {
+ var extenString = WhatToDial.betweenXY('{','}') ;
+ var filter = '';
+ }
var stripXdigitsfromfront = ( extenString.contains(':') ) ? extenString.afterChar(':') || '0' : '0' ;
} else { // WhatToDial is a plain extension string such as '911' or 'pari'
var prepend = WhatToDial ;
var stripXdigitsfromfront = 'ALL' ;
+ var filter = '';
}
- return { name : trunkname, channel : channel, prepend : prepend, stripx : stripXdigitsfromfront };
+ return { name : trunkname, channel : channel, prepend : prepend, stripx : stripXdigitsfromfront, filter: filter};
},
obCallingRule: function(str){ // usage ASTGUI.parseContextLine.obCallingRule(str)
@@ -1953,16 +2012,19 @@
cr.firstTrunk = t1.name ;
cr.firstPrepend = t1.prepend ;
cr.stripdigits_firstTrunk = t1.stripx ;
+ cr.firstFilter = t1.filter;
if( macroargs.length <= 2 || ( macroargs.length > 2 && macroargs[2].trim() == '') ){ // if a failback trunk is not defined
cr.secondTrunk = '' ;
cr.secondPrepend = '' ;
cr.stripdigits_secondTrunk = '' ;
+ cr.secondFilter = '';
}else{
var t2 = ASTGUI.parseContextLine.parseTrunkDialArgument( macroargs[2] ) ;
cr.secondTrunk = t2.name ;
cr.secondPrepend = t2.prepend ;
cr.stripdigits_secondTrunk = t2.stripx ;
+ cr.secondFilter = t2.filter;
}
}else{
cr.destination = ASTGUI.parseContextLine.getAppWithArgs( str ) ;
Index: js/callingrules.js
===================================================================
--- js/callingrules.js (revision 5069)
+++ js/callingrules.js (revision 5070)
@@ -46,6 +46,9 @@
isNew = false;
_$('cr_dialog_title').innerHTML =' Edit Calling Rule';
+ DOM_new_crl_tr_filter.value = '';
+ DOM_new_crl_fotr_filter.value = '';
+
EDIT_CR = a;
EDIT_CR_RULE = b;
var tmp_cr = ASTGUI.parseContextLine.obCallingRule(b) ;
@@ -63,11 +66,13 @@
DOM_new_crl_tr_stripx.value = tmp_cr.stripdigits_firstTrunk ;
DOM_new_crl_tr_prepend.value = tmp_cr.firstPrepend ;
+ DOM_new_crl_tr_filter.value = tmp_cr.firstFilter;
if(tmp_cr.secondTrunk){
DOM_new_crl_foChkbx.checked = true
ASTGUI.selectbox.selectOption(DOM_new_crl_fotrunk, tmp_cr.secondTrunk );
DOM_new_crl_fotr_stripx.value = tmp_cr.stripdigits_secondTrunk ;
DOM_new_crl_fotr_prepend.value = tmp_cr.secondPrepend ;
+ DOM_new_crl_fotr_filter.value = tmp_cr.secondFilter;
} else {
DOM_new_crl_foChkbx.checked = false;
}
@@ -335,12 +340,12 @@
}
var t1_braces = (t1 == 'Skype') ? t1 : '${' + t1 + '}' ;
- var Trunk_Build_str = ',' + t1_braces + '/' + DOM_new_crl_tr_prepend.value + '${' + DOM_new_crl_tr_filter.value +',${EXTEN:' + tmp_stripx + '})}' ;
+ var Trunk_Build_str = ',' + t1_braces + '/' + DOM_new_crl_tr_prepend.value + '${FILTER(' + DOM_new_crl_tr_filter.value +',${EXTEN:' + tmp_stripx + '})}' ;
var foTrunk_Build_str = ',' ;
if(DOM_new_crl_foChkbx.checked){
var t2_braces = (t2 == 'Skype') ? t2 : '${' + t2 + '}' ;
- foTrunk_Build_str += t2_braces + '/' + DOM_new_crl_fotr_prepend.value + '${EXTEN:' + tmp_fotr_stripx + '}' ;
+ foTrunk_Build_str += t2_braces + '/' + DOM_new_crl_fotr_prepend.value + '${FILTER(' + DOM_new_crl_fotr_filter.value + ',${EXTEN:' + tmp_fotr_stripx + '})}' ;
}
var t1_cidarg = ( t1 == 'Skype') ? ',' : ',' + t1 ;
--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
asterisk-gui mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/asterisk-gui