--- /dev/null
+package FS::ClientAPI::MasonComponent;
+
+use strict;
+use vars qw($DEBUG $me);
+use FS::Mason qw( mason_interps );
+use FS::Conf;
+
+$DEBUG = 0;
+$me = '[FS::ClientAPI::MasonComponent]';
+
+my %allowed_comps = map { $_=>1 } qw(
+ /elements/select-did.html
+ /misc/areacodes.cgi
+ /misc/exchanges.cgi
+ /misc/phonenums.cgi
+);
+
+my $outbuf;
+my( $fs_interp, $rt_interp ) = mason_interps('standalone', 'outbuf'=>\$outbuf);
+
+sub mason_comp {
+ my $packet = shift;
+
+ warn "$me mason_comp called on $packet\n" if $DEBUG;
+
+ my $comp = $packet->{'comp'};
+ unless ( $allowed_comps{$comp} ) {
+ return { 'error' => 'Illegal component' };
+ }
+
+ my @args = $packet->{'args'} ? @{ $packet->{'args'} } : ();
+
+ my $conf = new FS::Conf;
+ $FS::Mason::Request::FSURL = $conf->config('selfservice_server-base_url');
+ $FS::Mason::Request::QUERY_STRING = $packet->{'query_string'} || '';
+
+ $outbuf = '';
+ $fs_interp->exec($comp, @args); #only FS for now alas...
+
+ #errors? (turn off in-line error reporting?)
+
+ return { 'output' => $outbuf };
+
+}
+
+1;
'default_pkgpart' => scalar($conf->config('signup_server-default_pkgpart')),
'signup_service' => $svc_x,
+ 'default_svcpart' => scalar($conf->config('signup_server-default_svcpart')),
};
map { new FS::ConfItem {
'key' => $_,
'section' => $proto->section,
- 'description' => 'Alternate ' . $proto->description . ' See the <a href="http://www.sisd.com/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Invoice_templates">billing documentation</a> for details.',
+ 'description' => 'Alternate ' . $proto->description . ' See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Invoice_templates">billing documentation</a> for details.',
'type' => $proto->type,
};
} &$listmaker($base);
{
'key' => 'alerter_template',
'section' => 'billing',
- 'description' => 'Template file for billing method expiration alerts. See the <a href="http://www.sisd.com/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Credit_cards_and_Electronic_checks">billing documentation</a> for details.',
+ 'description' => 'Template file for billing method expiration alerts. See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Credit_cards_and_Electronic_checks">billing documentation</a> for details.',
'type' => 'textarea',
},
{
'key' => 'invoice_template',
'section' => 'billing',
- 'description' => 'Text template file for invoices. Used if no invoice_html template is defined, and also seen by users using non-HTML capable mail clients. See the <a href="http://www.sisd.com/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Plaintext_invoice_templates">billing documentation</a> for details.',
+ 'description' => 'Text template file for invoices. Used if no invoice_html template is defined, and also seen by users using non-HTML capable mail clients. See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Plaintext_invoice_templates">billing documentation</a> for details.',
'type' => 'textarea',
},
{
'key' => 'invoice_html',
'section' => 'billing',
- 'description' => 'Optional HTML template for invoices. See the <a href="http://www.sisd.com/mediawiki/index.php/Freeside:1.7:Documentation:Administration#HTML_invoice_templates">billing documentation</a> for details.',
+ 'description' => 'Optional HTML template for invoices. See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#HTML_invoice_templates">billing documentation</a> for details.',
'type' => 'textarea',
},
{
'key' => 'invoice_latex',
'section' => 'billing',
- 'description' => 'Optional LaTeX template for typeset PostScript invoices. See the <a href="http://www.sisd.com/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Typeset_.28LaTeX.29_invoice_templates">billing documentation</a> for details.',
+ 'description' => 'Optional LaTeX template for typeset PostScript invoices. See the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Administration#Typeset_.28LaTeX.29_invoice_templates">billing documentation</a> for details.',
'type' => 'textarea',
},
{
'key' => 'signupurl',
'section' => 'UI',
- 'description' => 'if you are using customer-to-customer referrals, and you enter the URL of your <a href="http://www.sisd.com/mediawiki/index.php/Freeside:1.7:Documentation:Self-Service_Installation">signup server CGI</a>, the customer view screen will display a customized link to the signup server with the appropriate customer as referral',
+ 'description' => 'if you are using customer-to-customer referrals, and you enter the URL of your <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:Self-Service_Installation">signup server CGI</a>, the customer view screen will display a customized link to the signup server with the appropriate customer as referral',
'type' => 'text',
},
},
},
+ {
+ 'key' => 'signup_server-default_svcpart',
+ 'section' => '',
+ 'description' => 'Default svcpart for the signup server - only necessary for services that trigger special provisioning widgets (such as DID provisioning).',
+ 'type' => 'select-sub',
+ 'options_sub' => sub { require FS::Record;
+ require FS::part_svc;
+ map { $_->svcpart => $_->svc }
+ FS::Record::qsearch( 'part_svc',
+ { 'disabled' => ''}
+ );
+ },
+ 'option_sub' => sub { require FS::Record;
+ require FS::part_svc;
+ my $part_svc = FS::Record::qsearchs(
+ 'part_svc', { 'svcpart'=>shift }
+ );
+ $part_svc ? $part_svc->svc : '';
+ },
+ },
+
{
'key' => 'signup_server-service',
'section' => '',
],
},
+ {
+ 'key' => 'selfservice_server-base_url',
+ 'section' => '',
+ 'description' => 'Base URL for the self-service web interface - necessary for special provisioning widgets to find their way.',
+ 'type' => 'text',
+ },
+
{
'key' => 'show-msgcat-codes',
'section' => 'UI',
{
'key' => 'ticket_system',
'section' => '',
- 'description' => 'Ticketing system integration. <b>RT_Internal</b> uses the built-in RT ticketing system (see the <a href="http://www.sisd.com/mediawiki/index.php/Freeside:1.7:Documentation:RT_Installation">integrated ticketing installation instructions</a>). <b>RT_External</b> accesses an external RT installation in a separate database (local or remote).',
+ 'description' => 'Ticketing system integration. <b>RT_Internal</b> uses the built-in RT ticketing system (see the <a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.7:Documentation:RT_Installation">integrated ticketing installation instructions</a>). <b>RT_External</b> accesses an external RT installation in a separate database (local or remote).',
'type' => 'select',
#'select_enum' => [ '', qw(RT_Internal RT_Libs RT_External) ],
'select_enum' => [ '', qw(RT_Internal RT_External) ],
'agent_logout' => 'Agent/agent_logout',
'agent_info' => 'Agent/agent_info',
'agent_list_customers' => 'Agent/agent_list_customers',
+ 'mason_comp' => 'MasonComponent/mason_comp',
);
@EXPORT_OK = ( keys(%autoload), qw( regionselector expselect popselector domainselector didselector) );
return '<INPUT TYPE="hidden" NAME="domsvc" VALUE="">'
unless scalar(keys %$domains);
-
+
if (scalar(keys %$domains) == 1) {
my $key;
foreach(keys %$domains) {
=over 4
+=item field
+
+=item svcpart
+
=back
Returns an HTML fragment for DID selection.
$param = { @_ };
}
- return "choose your DID XXX";
+ my $rv = mason_comp( 'comp'=>'/elements/select-did.html',
+ 'args'=>[ %$param ],
+ );
+
+ #hmm.
+ $rv->{'error'} || $rv->{'output'};
}
--- /dev/null
+#!/usr/bin/perl -w
+
+use strict;
+use CGI;
+use FS::SelfService qw( mason_comp );
+
+my $cgi = new CGI;
+
+my $rv = mason_comp( 'comp' => '/misc/areacodes.cgi',
+ 'query_string' => $cgi->query_string, #pass CGI params...
+ );
+
+#hmm.
+my $output = $rv->{'error'} || $rv->{'output'};
+
+print $cgi->header( '-expires' => 'now' ).
+ $output;
+
--- /dev/null
+#!/usr/bin/perl -w
+
+use strict;
+use CGI;
+use FS::SelfService qw( mason_comp );
+
+my $cgi = new CGI;
+
+my $rv = mason_comp( 'comp' => '/misc/exchanges.cgi',
+ 'query_string' => $cgi->query_string, #pass CGI params...
+ );
+
+#hmm.
+my $output = $rv->{'error'} || $rv->{'output'};
+
+print $cgi->header( '-expires' => 'now' ).
+ $output;
+
--- /dev/null
+#!/usr/bin/perl -w
+
+use strict;
+use CGI;
+use FS::SelfService qw( mason_comp );
+
+my $cgi = new CGI;
+
+my $rv = mason_comp( 'comp' => '/misc/phonenums.cgi',
+ 'query_string' => $cgi->query_string, #pass CGI params...
+ );
+
+#hmm.
+my $output = $rv->{'error'} || $rv->{'output'};
+
+print $cgi->header( '-expires' => 'now' ).
+ $output;
+
if ( $signup_service eq 'svc_phone' ) {
$OUT .= '<TR><TD ALIGN="right">Phone number</TD><TD>'.
- didselector().
+ didselector( 'field' => 'phonenum',
+ 'svcpart' => $default_svcpart,
+ ).
'</TD></TR>';
$OUT .= <<ENDOUT;
include('/elements/select-did.html',
'field' => 'phonenum',
+
'svcpart' => 5,
+ #OR
+ 'object' => $svc_phone,
);
</%doc>
my $country = $conf->config('countrydefault') || 'US';
#XXX make sure this comes through on errors too
-my $svcpart = $opt{'object'}->svcpart;
+my $svcpart = $opt{'svcpart'} || $opt{'object'}->svcpart;
my $part_svc = qsearchs('part_svc', { 'svcpart'=>$svcpart } );
die "unknown svcpart $svcpart" unless $part_svc;