diff options
author | ivan <ivan> | 2008-09-14 20:20:41 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-09-14 20:20:41 +0000 |
commit | 0f11d8bc92f250b608a0ddcada330bed9b9d4c7d (patch) | |
tree | 4a459314aa0a5ca0ec140b1a1c1b1950d1bc3fa5 /httemplate/config | |
parent | 9c8e3bcad078ed4d4d0f13369210db0fe7aa1ce5 (diff) |
don't reload the whole page every time a config option is changed, RT#3989
Diffstat (limited to 'httemplate/config')
-rw-r--r-- | httemplate/config/config-process.cgi | 39 | ||||
-rw-r--r-- | httemplate/config/config-view.cgi | 37 |
2 files changed, 58 insertions, 18 deletions
diff --git a/httemplate/config/config-process.cgi b/httemplate/config/config-process.cgi index b0c8a7456..e220fd8ec 100644 --- a/httemplate/config/config-process.cgi +++ b/httemplate/config/config-process.cgi @@ -63,6 +63,43 @@ $conf->delete($_, $agentnum) foreach @delete; </%init> <% header('Configuration set') %> <SCRIPT TYPE="text/javascript"> - window.top.location.reload(); +% my $n = 0; +% foreach my $type ( ref($i->type) ? @{$i->type} : $i->type ) { + var configCell = window.top.document.getElementById('<% $i->key. $n %>'); + //alert('found cell ' + configCell); +% if ( $type eq 'textarea' +% || $type eq 'editlist' +% || $type eq 'selectmultiple' ) { + configCell.innerHTML = + '<font size="-2"><pre>' + "\n" + + <% encode_entities(join("\n", + map { length($_) > 88 ? substr($_,0,88).'...' : $_ } + $conf->config($i->key, $agentnum) + ) ) + |js_string %> + + '</pre></font>'; + +% } elsif ( $type eq 'checkbox' ) { +% if ( $conf->exists($i->key, $agentnum) ) { + configCell.style.backgroundColor = '#00ff00'; + configCell.innerHTML = 'YES'; +% } else { + configCell.style.backgroundColor = '#ff0000'; + configCell.innerHTML = 'NO'; +% } +% } elsif ( $type eq 'text' || $type eq 'select' ) { + configCell.innerHTML = <% $conf->exists($i->key, $agentnum) ? $conf->config($i->key, $agentnum) : '' |js_string %>; +% } elsif ( $type eq 'select-sub' ) { + configCell.innerHTML = + <% $conf->config($i->key, $agentnum) |js_string %> + ': ' + + <% &{ $i->option_sub }( $conf->config($i->key, $agentnum) ) |js_string %>; +% } else { + alert('unknown type <% $type %>'); + window.top.location.reload(); +% } + +% $n++; +% } + parent.cClick(); </SCRIPT> </BODY></HTML> diff --git a/httemplate/config/config-view.cgi b/httemplate/config/config-view.cgi index 4f6b5463a..b7e6f6797 100644 --- a/httemplate/config/config-view.cgi +++ b/httemplate/config/config-view.cgi @@ -12,10 +12,9 @@ Click on a configuration value to change it. <% 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 ( qw(required billing username password UI session % shell BIND % ), @@ -68,14 +67,16 @@ Click on a configuration value to change it. %>: <% $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 'binary' ) { <tr> <% $conf->exists($i->key, $agentnum) @@ -83,12 +84,13 @@ Click on a configuration value to change it. : 'empty' %> </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"> + <td id="<% $i->key.$n %>" bgcolor="#ffffff"> <font size="-2"><pre> <% encode_entities(join("\n", map { length($_) > 88 ? substr($_,0,88).'...' : $_ } @@ -98,32 +100,33 @@ Click on a configuration value to change it. </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="<% $i->key.$n %>" bgcolor="#<% $conf->exists($i->key, $agentnum) ? '00ff00">YES' : 'ff0000">NO' %></td> </tr> -% } elsif ( $type eq 'text' || $type eq 'select' ) { +% } elsif ( $type eq 'text' || $type eq 'select' ) { <tr> - <td bgcolor="#ffffff"> + <td id="<% $i->key.$n %>" bgcolor="#ffffff"> <% $conf->exists($i->key, $agentnum) ? $conf->config($i->key, $agentnum) : '' %> </td></tr> -% } elsif ( $type eq 'select-sub' ) { +% } elsif ( $type eq 'select-sub' ) { <tr> - <td bgcolor="#ffffff"> + <td id="<% $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> |