-<% include("/elements/header.html",
- $title,
- menubar(
- 'View all agents' => $p.'browse/agent.cgi',
- )
- )
-%>
+<% include("/elements/header.html", $title, menubar(@menubar)) %>
Click on a configuration value to change it.
<BR><BR>
-<SCRIPT TYPE="text/javascript" SRC="<%$fsurl%>elements/overlibmws.js"></SCRIPT>
-<SCRIPT TYPE="text/javascript" SRC="<%$fsurl%>elements/overlibmws_iframe.js"></SCRIPT>
-<SCRIPT TYPE="text/javascript" SRC="<%$fsurl%>elements/overlibmws_draggable.js"></SCRIPT>
-<SCRIPT TYPE="text/javascript" SRC="<%$fsurl%>elements/iframecontentmws.js"></SCRIPT>
+% unless ( $page_agent ) {
+%
+% if ( $cgi->param('showagent') ) {
+% $cgi->param('showagent', 0);
+ ( <a href="<% $cgi->self_url %>">hide agent overrides</a> )
+% $cgi->param('showagent', 1);
+% } else {
+% $cgi->param('showagent', 1);
+ ( <a href="<% $cgi->self_url %>">show agent overrides</a> )
+% $cgi->param('showagent', 0);
+% }
+%
+% }
+<BR><BR>
-% if ($FS::UID::use_confcompat) {
+<% include('/elements/init_overlib.html') %>
+% if ($FS::UID::use_confcompat) {
<FONT SIZE="+1" COLOR="#ff0000">CONFIGURATION NOT STORED IN DATABASE -- USING COMPATIBILITY MODE</FONT><BR><BR>
%}
+
+% foreach my $section (@sections) {
+
+ <A NAME="<% $section || 'unclassified' %>"></A>
+ <FONT SIZE="-2">
+
+% foreach my $nav_section (@sections) {
%
-% foreach my $section ( qw(required billing username password UI session
-% shell BIND
-% ),
-% '', 'deprecated') {
-
- <A NAME="<% $section || 'unclassified' %>"></A>
- <FONT SIZE="-2">
-% foreach my $nav_section ( qw(required billing username password UI session
-% shell BIND
-% ),
-% '', 'deprecated') {
-% if ( $section eq $nav_section ) {
-
- [<A NAME="not<% $nav_section || 'unclassified' %>" style="background-color: #cccccc"><% ucfirst($nav_section || 'unclassified') %></A>]
-% } else {
-
- [<A HREF="#<% $nav_section || 'unclassified' %>"><% ucfirst($nav_section || 'unclassified') %></A>]
-% }
-% }
+% if ( $section eq $nav_section ) {
+ [<A NAME="not<% $nav_section || 'unclassified' %>" style="background-color: #cccccc"><% ucfirst($nav_section || 'unclassified') %></A>]
+% } else {
+ [<A HREF="#<% $nav_section || 'unclassified' %>"><% ucfirst($nav_section || 'unclassified') %></A>]
+% }
+%
+% }
</FONT><BR>
<TABLE BGCOLOR="#cccccc" BORDER=1 CELLSPACING=0 CELLPADDING=0 BORDERCOLOR="#999999">
<% ucfirst($section || 'unclassified') %> configuration options
</th>
</tr>
-% foreach my $i (grep $_->section eq $section, @config_items) {
+% foreach my $i (@{ $section_items{$section} }) {
% my @types = ref($i->type) ? @{$i->type} : ($i->type);
% my( $width, $height ) = ( 522, 336 );
% if ( grep $_ eq 'textarea', @types ) {
% #$width =
% #$height =
% }
+%
+% my @agents = $page_agent ? ( $page_agent ) : ( '', @all_agents );
+%
+% foreach my $agent ( @agents ) {
+% my $agentnum = $agent ? $agent->agentnum : '';
+%
+% my $label = $i->key;
+% $label = '['. $agent->agent. "] $label"
+% if $agent && $cgi->param('showagent');
+%
+% #indentation :/
<tr>
- <td><a href="javascript:void(0);" onClick="overlib( OLiframeContent('config.cgi?key=<% $i->key %>;agentnum=<% $agentnum %>', <% $width %>, <% $height %>, 'config_popup' ), CAPTION, 'Enter configuration value', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK ); return false;" name="<% $i->key %>">
-%# <b><% $i->key %></b></a> - <% $i->description %>
- <b><% $i->key %></b></a>: <% $i->description %>
+ <td><% include('/elements/popup_link.html',
+ 'action' => 'config.cgi?key='. $i->key.
+ ';agentnum='. $agentnum,
+ 'width' => $width,
+ 'height' => $height,
+ 'actionlabel' => 'Enter configuration value',
+ 'label' => "<b>$label</b>",
+ 'aname' => $i->key, #agentnum
+ # if $cgi->param('showagent')?
+ )
+ %>: <% $i->description %>
</td>
<td><table border=0>
+
+% my $n = 0;
% foreach my $type (@types) {
-% my $n = 0;
-% if ( $type eq '' ) {
+
+% if ( $type eq '' ) {
<tr>
<td><font color="#ff0000">no type</font></td>
</tr>
-% } elsif ( $type eq 'binary' ) {
+
+% } elsif ( $type eq 'image' ) {
+
+ <tr>
+ <td bgcolor='#ffffff'>
+ <% $conf->exists($i->key, $agentnum)
+ ? '<img src="config-image.cgi?key='. $i->key.
+ ';agentnum='. $agentnum. '">'
+ : 'empty'
+ %>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <% $conf->exists($i->key, $agentnum)
+ ? qq!<a href="config-download.cgi?key=!. $i->key. ';agentnum='. $agentnum. qq!">download</a>!
+ : ''
+ %>
+ </td>
+ </tr>
+
+% } elsif ( $type eq 'binary' ) {
<tr>
- <% $conf->exists($i->key, $agentnum)
- ? qq!<a href="config-download.cgi?key=!. $i->key. ';agentnum='. $agentnum. qq!">download</a>!
- : 'empty'
- %>
+ <td>
+ <% $conf->exists($i->key, $agentnum)
+ ? qq!<a href="config-download.cgi?key=!. $i->key. ';agentnum='. $agentnum. qq!">download</a>!
+ : 'empty'
+ %>
+ </td>
</tr>
-% } elsif ( $type eq 'textarea'
-% || $type eq 'editlist'
-% || $type eq 'selectmultiple' ) {
+
+% } elsif ( $type eq 'textarea'
+% || $type eq 'editlist'
+% || $type eq 'selectmultiple' ) {
<tr>
- <td bgcolor="#ffffff">
-<font size="-2"><pre>
-<% encode_entities(join("\n",
+ <td id="<% $agentnum.$i->key.$n %>" bgcolor="#ffffff">
+<font size="-2"><pre><% encode_entities(join("\n",
map { length($_) > 88 ? substr($_,0,88).'...' : $_ }
$conf->config($i->key, $agentnum)
) )
-%>
-</pre></font>
+%></pre></font>
</td>
</tr>
-% } elsif ( $type eq 'checkbox' ) {
+
+% } elsif ( $type eq 'checkbox' ) {
<tr>
- <td bgcolor="#<% $conf->exists($i->key, $agentnum) ? '00ff00">YES' : 'ff0000">NO' %></td>
+ <td id="<% $agentnum.$i->key.$n %>" bgcolor="#<% $conf->exists($i->key, $agentnum) ? '00ff00">YES' : 'ff0000">NO' %></td>
+ </tr>
+
+% } elsif ( $type eq 'select' && $i->select_hash ) {
+%
+% my %hash;
+% if ( ref($i->select_hash) eq 'ARRAY' ) {
+% tie %hash, 'Tie::IxHash', '' => '', @{ $i->select_hash };
+% } else {
+% tie %hash, 'Tie::IxHash', '' => '', %{ $i->select_hash };
+% }
+
+ <tr>
+ <td id="<% $agentnum.$i->key.$n %>" bgcolor="#ffffff">
+ <% $conf->exists($i->key, $agentnum) ? $hash{ $conf->config($i->key, $agentnum) } : '' %>
+ </td>
</tr>
-% } elsif ( $type eq 'text' || $type eq 'select' ) {
+
+% } elsif ( $type eq 'text' || $type eq 'select' ) {
<tr>
- <td bgcolor="#ffffff">
+ <td id="<% $agentnum.$i->key.$n %>" bgcolor="#ffffff">
<% $conf->exists($i->key, $agentnum) ? $conf->config($i->key, $agentnum) : '' %>
- </td></tr>
-% } elsif ( $type eq 'select-sub' ) {
+ </td>
+ </tr>
+
+% } elsif ( $type eq 'select-sub' ) {
<tr>
- <td bgcolor="#ffffff">
+ <td id="<% $agentnum.$i->key.$n %>" bgcolor="#ffffff">
<% $conf->config($i->key, $agentnum) %>:
<% &{ $i->option_sub }( $conf->config($i->key, $agentnum) ) %>
</td>
</tr>
-% } else {
+
+% } else {
<tr><td>
<font color="#ff0000">unknown type <% $type %></font>
</td></tr>
+% }
+% $n++;
% }
-% $n++; }
</table></td>
</tr>
-% }
+
+% } # foreach my $agentnum
+
+% } # foreach my $i
</table><br><br>
-% }
+% } # foreach my $nav_section
</body></html>
+<%once>
+
+#should probably be a Conf method. what else would need to use it?
+#not even us, apparantly...
+# defined( _config_agentonly($conf, $i->key, $_->agentnum) )
+#sub _config_agentonly {
+# my($self,$name,$agentnum)=@_;
+# my $hashref = { 'name' => $name };
+# $hashref->{agentnum} = $agentnum;
+# local $FS::Record::conf = undef; # XXX evil hack prevents recursion
+# FS::Record::qsearchs('conf', $hashref);
+#}
+
+</%once>
<%init>
die "access denied"
unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
-my $agentnum = '';
-if ($cgi->param('agentnum') =~ /^(\d+)$/) {
- $agentnum = $1;
-}
-
+my $page_agent = '';
my $title;
-if ($agentnum) {
- my $agent = qsearchs('agent', { 'agentnum' => $agentnum } );
- die "Agent $agentnum not found!" unless $agent;
+my @menubar = ();
+if ($cgi->param('agentnum') =~ /^(\d+)$/) {
+ my $page_agentnum = $1;
+ $page_agent = qsearchs('agent', { 'agentnum' => $page_agentnum } );
+ die "Agent $page_agentnum not found!" unless $page_agent;
- $title = "Configuration for ". $agent->agent;
+ push @menubar, 'View all agents' => $p.'browse/agent.cgi';
+ $title = 'Agent Configuration for '. $page_agent->agent;
} else {
$title = 'Global Configuration';
}
my $conf = new FS::Conf;
-my @config_items = grep { $agentnum ? $_->per_agent : 1 }
+my @config_items = grep { $page_agent ? $_->per_agent : 1 }
grep { $_->key != ~/^invoice_(html|latex|template)/ }
$conf->config_items;
-
+
+my @sections = qw(required billing username password UI session shell BIND );
+push @sections, '', 'deprecated';
+
+my %section_items = ();
+foreach my $section (@sections) {
+ $section_items{$section} = [ grep $_->section eq $section, @config_items ];
+}
+
+@sections = grep scalar( @{ $section_items{$_} } ), @sections;
+
+my @all_agents = ();
+if ( $cgi->param('showagent') ) {
+ @all_agents = qsearch('agent', { 'disabled' => '' } );
+}
+warn 'all agents: '. join('-', @all_agents);
+
</%init>