diff options
Diffstat (limited to 'httemplate')
| -rwxr-xr-x | httemplate/browse/agent.cgi | 2 | ||||
| -rw-r--r-- | httemplate/config/config-delete.cgi | 13 | ||||
| -rw-r--r-- | httemplate/config/config-process.cgi | 3 | ||||
| -rw-r--r-- | httemplate/config/config-view.cgi | 95 | 
4 files changed, 98 insertions, 15 deletions
diff --git a/httemplate/browse/agent.cgi b/httemplate/browse/agent.cgi index 36bac781c..3319c77b3 100755 --- a/httemplate/browse/agent.cgi +++ b/httemplate/browse/agent.cgi @@ -386,7 +386,7 @@ Unused                <TR>                  <TD>  -                  <% $override->name %> <FONT SIZE=-1><A HREF="javascript:areyousure('delete this configuration override', '<%$p%>config/config-delete.cgi?<% $override->confnum %>')">(delete)</A></FONT> +                  <% $override->name %> <FONT SIZE=-1><A HREF="javascript:areyousure('delete this configuration override', '<%$p%>config/config-delete.cgi?confnum=<% $override->confnum %>')">(delete)</A></FONT>                  </TD>                </TR>  % }  diff --git a/httemplate/config/config-delete.cgi b/httemplate/config/config-delete.cgi index cdac434fa..ffeae7877 100644 --- a/httemplate/config/config-delete.cgi +++ b/httemplate/config/config-delete.cgi @@ -2,14 +2,19 @@  die "access denied\n"    unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); -die "No configuration item specified (bad URL)!" unless $cgi->keywords; -my ($query) = $cgi->keywords; -$query =~ /^(\d+)$/; +$cgi->param('confnum') =~ /^(\d+)$/ or die "illegal or missing confnum";  my $confnum = $1;  my $conf = qsearchs('conf', {'confnum' => $confnum});  die "Configuration not found!" unless $conf;  $conf->delete; +my $redirect = popurl(2); +if ( $cgi->param('redirect') eq 'config_view' ) { +  $redirect .= 'config/config-view.cgi?showagent=1#'. $conf->name; +} else { +  $redirect .= 'browse/agent.cgi'; +} +  </%init> -<% $cgi->redirect(popurl(2) . "browse/agent.cgi") %> +<% $cgi->redirect($redirect) %> diff --git a/httemplate/config/config-process.cgi b/httemplate/config/config-process.cgi index a5918c035..f8b64e86f 100644 --- a/httemplate/config/config-process.cgi +++ b/httemplate/config/config-process.cgi @@ -66,6 +66,9 @@ $conf->delete($_, $agentnum) foreach @delete;  %   my $n = 0;  %   foreach my $type ( ref($i->type) ? @{$i->type} : $i->type ) {      var configCell = window.top.document.getElementById('<% $agentnum. $i->key. $n %>'); +    if ( ! configCell ) { +      window.top.location.reload(); +    }      //alert('found cell ' + configCell);  %     if (    $type eq 'textarea'  %          || $type eq 'editlist' diff --git a/httemplate/config/config-view.cgi b/httemplate/config/config-view.cgi index bb6a3ca0b..aca37f2ad 100644 --- a/httemplate/config/config-view.cgi +++ b/httemplate/config/config-view.cgi @@ -58,7 +58,22 @@ Click on a configuration value to change it.  %     #$height =   %   }  % -%   my @agents = $page_agent ? ( $page_agent ) : ( '', @all_agents ); +%   my @agents = (); +%   my @add_agents = (); +%   if ( $page_agent ) { +%     @agents = ( $page_agent ); +%   } else { +%     @agents = ( '' ); +%     if ( $i->per_agent ) { +%       foreach my $agent (@all_agents) { +%         if ( defined(_config_agentonly($conf, $i->key, $agent->agentnum)) ) { +%           push @agents, $agent; +%         } else { +%           push @add_agents, $agent; +%         } +%       } +%     } +%   }  %  %   foreach my $agent ( @agents ) {  %     my $agentnum = $agent ? $agent->agentnum : ''; @@ -81,6 +96,10 @@ Click on a configuration value to change it.                                                   # if $cgi->param('showagent')?                      )            %>: <% $i->description %> +%       if ( $agent && $cgi->param('showagent') ) { +          (<A HREF="javascript:areyousure('delete this agent override', 'config-delete.cgi?confnum=<% _config_agentonly($conf, $i->key, $agent->agentnum)->confnum %>;redirect=config_view')">delete agent override</A>) +%       } +        </td>        <td><table border=0> @@ -190,25 +209,81 @@ Click on a configuration value to change it.  % } # foreach my $agentnum +% if ( @add_agents ) { + +  <tr> +    <td> +      <FORM> +      Add <b><% $i->key %></b> override for +        <% include('/elements/select-agent.html', +                     'agents'      => \@add_agents, +                     'empty_label' => 'Select agent', +                     'onchange'    => "agent_changed", +                     'id'          => 'agent_'. $i->key, +                  ) +        %> +      agent + +%     my $agent_el = "document.getElementById('agent_". $i->key. "')"; +      <INPUT TYPE    = "button" +             VALUE   = "Add" +             ID      = "add_<% $i->key %>" +             DISABLED +             onClick = "<% +               include('/elements/popup_link_onclick.html', +                         'action'      => +                           'config.cgi?key='.      $i->key. +                           ";agentnum=' + ". +                             "$agent_el.options[$agent_el.selectedIndex].value". +                             " + '", +                         'width'       => $width, +                         'height'      => $height, +                         'actionlabel' => 'Enter configuration value', +                      ) +             %>" +      > +      </FORM> +    </td> +  </tr> + +% } #if @add_agents +  % } # foreach my $i    </table><br><br>  % } # foreach my $nav_section +<SCRIPT TYPE="text/javascript"> + +  function agent_changed(what) { +    var key = what.id.substring(6); // trim agent_ +    var button = document.getElementById('add_'+key); +    if ( what.selectedIndex > 0 ) { +      button.disabled = false; +    } else { +      button.disabled = true; +    } +  } + +  function areyousure(what, href) { +    if ( confirm("Are you sure you want to " + what + "?") == true ) +      window.location.href = href; +  } + +</SCRIPT> +  </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); -#} +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>  | 
