version 1.5, 2007/03/08 01:58:44
|
version 1.6, 2007/04/03 18:47:23
|
Line 37 use Apache::loncommon();
|
Line 37 use Apache::loncommon();
|
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use LONCAPA(); |
use LONCAPA(); |
|
use LONCAPA::Enrollment; |
|
|
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
Line 64 sub handler {
|
Line 65 sub handler {
|
$phase = $env{'form.phase'}; |
$phase = $env{'form.phase'}; |
} |
} |
my %domconfig = |
my %domconfig = |
&Apache::lonnet::get_dom('configuration',['login','quotas', |
&Apache::lonnet::get_dom('configuration',['login','rolecolors', |
'autoenroll','autoupdate'],$dom); |
'quotas','autoenroll','autoupdate'],$dom); |
|
|
my @prefs = ( |
my @prefs = ( |
|
{ text => 'Default color schemes', |
|
help => 'Default_Color_Schemes', |
|
action => 'rolecolors', |
|
header => [{col1 => 'Student Settings', |
|
col2 => '',}, |
|
{col1 => 'Coordinator Settings', |
|
col2 => '',}, |
|
{col1 => 'Author Settings', |
|
col2 => '',}, |
|
{col1 => 'Administrator Settings', |
|
col2 => '',}], |
|
}, |
{ text => 'Log-in page options', |
{ text => 'Log-in page options', |
help => 'Domain_Log-in_Page', |
help => 'Domain_Log-in_Page', |
action => 'login', |
action => 'login', |
header => [{col1 => 'Item', |
header => [{col1 => 'Item', |
col2 => 'Selection',}], |
col2 => '',}], |
}, |
}, |
{ text => 'Default quotas for user portfolios', |
{ text => 'Default quotas for user portfolios', |
help => 'Default_User_Quota', |
help => 'Default_User_Quota', |
Line 95 sub handler {
|
Line 107 sub handler {
|
col2 => 'Updataeable user data'}], |
col2 => 'Updataeable user data'}], |
}, |
}, |
); |
); |
|
my @roles = ('student','coordinator','author','admin'); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'display')", |
({href=>"javascript:changePage(document.$phase,'display')", |
text=>"Domain Configuration"}); |
text=>"Domain Configuration"}); |
Line 105 sub handler {
|
Line 118 sub handler {
|
&print_header($r,$phase); |
&print_header($r,$phase); |
foreach my $item (@prefs) { |
foreach my $item (@prefs) { |
$r->print('<h3>'.&mt($item->{'text'}).'</h3>'. |
$r->print('<h3>'.&mt($item->{'text'}).'</h3>'. |
&process_changes($dom,$item->{'action'},%domconfig)); |
&process_changes($r,$dom,$item->{'action'},\@roles,%domconfig)); |
} |
} |
$r->print('<p>'); |
$r->print('<p>'); |
&print_footer($r,$phase,'display','Back to actions menu'); |
&print_footer($r,$phase,'display','Back to actions menu'); |
Line 119 sub handler {
|
Line 132 sub handler {
|
&print_header($r,$phase); |
&print_header($r,$phase); |
$r->print('<table border="0" width="100%" cellpadding="2" cellspacing="4"><tr><td align="left" valign="top" width="45%">'); |
$r->print('<table border="0" width="100%" cellpadding="2" cellspacing="4"><tr><td align="left" valign="top" width="45%">'); |
foreach my $item (@prefs) { |
foreach my $item (@prefs) { |
if ($item->{'action'} eq 'autoupdate') { |
if ($item->{'action'} eq 'login') { |
$r->print('</td><td width="6%"> </td><td align="left" valign="top" width="47%">'); |
$r->print('</td><td width="6%"> </td><td align="left" valign="top" width="47%">'); |
} |
} |
&print_config_box($r,$dom,$item->{'action'},$item, |
&print_config_box($r,$dom,$phase,$item->{'action'}, |
$domconfig{$item->{'action'}}); |
$item,$domconfig{$item->{'action'}}); |
} |
} |
$r->print(' |
$r->print(' |
</table> |
</table> |
Line 139 sub handler {
|
Line 152 sub handler {
|
} |
} |
|
|
sub process_changes { |
sub process_changes { |
my ($dom,$action,%domconfig) = @_; |
my ($r,$dom,$action,$roles,%domconfig) = @_; |
my $output; |
my $output; |
if ($action eq 'login') { |
if ($action eq 'login') { |
$output = &modify_login($dom,%domconfig); |
$output = &modify_login($r,$dom,%domconfig); |
|
} elsif ($action eq 'rolecolors') { |
|
$output = &modify_rolecolors($r,$dom,$roles,%domconfig); |
} elsif ($action eq 'quotas') { |
} elsif ($action eq 'quotas') { |
$output = &modify_quotas($dom,%domconfig); |
$output = &modify_quotas($dom,%domconfig); |
} elsif ($action eq 'autoenroll') { |
} elsif ($action eq 'autoenroll') { |
Line 154 sub process_changes {
|
Line 169 sub process_changes {
|
} |
} |
|
|
sub print_config_box { |
sub print_config_box { |
my ($r,$dom,$action,$item,$settings) = @_; |
my ($r,$dom,$phase,$action,$item,$settings) = @_; |
$r->print(' |
$r->print(' |
<table class="LC_nested_outer"> |
<table class="LC_nested_outer"> |
<tr> |
<tr> |
<th>'.&mt($item->{text}).' '. |
<th>'.&mt($item->{text}).' '. |
&Apache::loncommon::help_open_topic($item->{'help'}).'</th> |
&Apache::loncommon::help_open_topic($item->{'help'}).'</th> |
</tr>'); |
</tr>'); |
if ($action eq 'autoupdate') { |
if (($action eq 'autoupdate') || ($action eq 'rolecolors')) { |
|
my $colspan = ($action eq 'rolecolors')?' colspan="2"':''; |
$r->print(' |
$r->print(' |
<tr> |
<tr> |
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item">'.$item->{'header'}->[0]->{'col1'}.'</td> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[0]->{'col1'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[0]->{'col2'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[0]->{'col2'}.'</td> |
</tr>'. |
</tr>'); |
&print_autoupdate('top',$dom,$settings).' |
if ($action eq 'autoupdate') { |
|
$r->print(&print_autoupdate('top',$dom,$settings)); |
|
} else { |
|
$r->print(&print_rolecolors($phase,'student',$dom,$settings)); |
|
} |
|
$r->print(' |
</table> |
</table> |
</td> |
</td> |
</tr> |
</tr> |
Line 178 sub print_config_box {
|
Line 199 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row"> |
<td class="LC_left_item">'.$item->{'header'}->[1]->{'col1'}.'</td> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[1]->{'col1'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[1]->{'col2'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[1]->{'col2'}.'</td> |
|
</tr>'); |
|
if ($action eq 'autoupdate') { |
|
$r->print(&print_autoupdate('bottom',$dom,$settings)); |
|
} else { |
|
$r->print(&print_rolecolors($phase,'coordinator',$dom,$settings).' |
|
</table> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td> |
|
<table class="LC_nested"> |
|
<tr class="LC_info_row"> |
|
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[2]->{'col1'}.'</td> |
|
<td class="LC_right_item">'.$item->{'header'}->[2]->{'col2'}.'</td> |
</tr>'. |
</tr>'. |
&print_autoupdate('bottom',$dom,$settings)); |
&print_rolecolors($phase,'author',$dom,$settings).' |
|
</table> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td> |
|
<table class="LC_nested"> |
|
<tr class="LC_info_row"> |
|
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[3]->{'col1'}.'</td> |
|
<td class="LC_right_item">'.$item->{'header'}->[3]->{'col2'}.'</td> |
|
</tr>'. |
|
&print_rolecolors($phase,'admin',$dom,$settings)); |
|
} |
} else { |
} else { |
$r->print(' |
$r->print(' |
<tr> |
<tr> |
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row"> |
<tr class="LC_info_row">'); |
<td class="LC_left_item">'.$item->{'header'}->[0]->{'col1'}.'</td> |
if ($action eq 'login') { |
|
$r->print(' |
|
<td class="LC_left_item" colspan="2">'.$item->{'header'}->[0]->{'col1'}.'</td>'); |
|
} else { |
|
$r->print(' |
|
<td class="LC_left_item">'.$item->{'header'}->[0]->{'col1'}.'</td>'); |
|
} |
|
$r->print(' |
<td class="LC_right_item">'.$item->{'header'}->[0]->{'col2'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[0]->{'col2'}.'</td> |
</tr>'); |
</tr>'); |
if ($action eq 'login') { |
if ($action eq 'login') { |
$r->print(&print_login($settings)); |
$r->print(&print_login($dom,$phase,$settings)); |
} elsif ($action eq 'quotas') { |
} elsif ($action eq 'quotas') { |
$r->print(&print_quotas($dom,$settings)); |
$r->print(&print_quotas($dom,$settings)); |
} elsif ($action eq 'autoenroll') { |
} elsif ($action eq 'autoenroll') { |
Line 209 sub print_config_box {
|
Line 263 sub print_config_box {
|
|
|
sub print_header { |
sub print_header { |
my ($r,$phase) = @_; |
my ($r,$phase) = @_; |
my $js = qq| |
my $js = ' |
<script type="text/javascript"> |
<script type="text/javascript"> |
function changePage(formname,newphase) { |
function changePage(formname,newphase) { |
formname.phase.value = newphase; |
formname.phase.value = newphase; |
formname.submit(); |
formname.submit(); |
} |
} |
|
'. |
|
&color_pick_js().' |
</script> |
</script> |
|; |
'; |
$r->print(&Apache::loncommon::start_page('View/Modify Domain Settings', |
$r->print(&Apache::loncommon::start_page('View/Modify Domain Settings', |
$js)); |
$js)); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Domain Settings')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Domain Settings')); |
$r->print('<form method="post" name="'.$phase.'" action="/adm/domainprefs">'); |
$r->print(' |
|
<form name="parmform"> |
|
<input type="hidden" name="pres_marker" /> |
|
<input type="hidden" name="pres_type" /> |
|
<input type="hidden" name="pres_value" /> |
|
</form> |
|
'); |
|
$r->print('<form method="post" name="'.$phase.'" action="/adm/domainprefs"'. |
|
' enctype="multipart/form-data">'); |
return; |
return; |
} |
} |
|
|
Line 241 sub print_footer {
|
Line 305 sub print_footer {
|
} |
} |
|
|
sub print_login { |
sub print_login { |
my ($settings) = @_; |
my ($dom,$phase,$settings) = @_; |
my $catalogon = ' checked="checked" '; |
my %choices = &login_choices(); |
my $catalogoff; |
my ($catalogon,$catalogoff,$adminmailon,$adminmailoff); |
my $adminmailon = ' '; |
$catalogon = ' checked="checked" '; |
my $adminmailoff = ' checked="checked" '; |
$adminmailoff = ' checked="checked" '; |
|
my @images = ('img','logo','domlogo'); |
|
my @bgs = ('pgbg','mainbg','sidebg'); |
|
my @links = ('link','alink','vlink'); |
|
my %designhash = &Apache::lonnet::get_domainconf($dom); |
|
my %defaultdesign = %Apache::loncommon::defaultdesign; |
|
my (%is_custom,%designs); |
|
my %defaults = ( |
|
font => $defaultdesign{'login.font'}, |
|
); |
|
foreach my $item (@images) { |
|
$defaults{$item} = $defaultdesign{'login.'.$item}; |
|
} |
|
foreach my $item (@bgs) { |
|
$defaults{'bgs'}{$item} = $defaultdesign{'login.'.$item}; |
|
} |
|
foreach my $item (@links) { |
|
$defaults{'links'}{$item} = $defaultdesign{'login.'.$item}; |
|
} |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if ($settings->{'coursecatalog'} eq '0') { |
if ($settings->{'coursecatalog'} eq '0') { |
$catalogoff = $catalogon; |
$catalogoff = $catalogon; |
Line 255 sub print_login {
|
Line 337 sub print_login {
|
$adminmailon = $adminmailoff; |
$adminmailon = $adminmailoff; |
$adminmailoff = ' '; |
$adminmailoff = ' '; |
} |
} |
|
foreach my $item (@images) { |
|
if ($settings->{$item} ne '') { |
|
$designs{$item} = $settings->{$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
|
if ($settings->{'font'} ne '') { |
|
$designs{'font'} = $settings->{'font'}; |
|
$is_custom{'font'} = 1; |
|
} |
|
foreach my $item (@bgs) { |
|
if ($settings->{$item} ne '') { |
|
$designs{'bgs'}{$item} = $settings->{$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
|
foreach my $item (@links) { |
|
if ($settings->{$item} ne '') { |
|
$designs{'links'}{$item} = $settings->{$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
|
} else { |
|
$designs{'domlogo'} = ''; |
|
if (-e '/home/httpd/html/adm/lonDomLogos/'.$dom.'.gif') { |
|
$designs{'domlogo'} = '/home/httpd/html/adm/lonDomLogos/'.$dom.'.gif'; |
|
$is_custom{'domlogo'} = 1; |
|
} |
|
if ($designhash{$dom.'.login.img'} ne '') { |
|
$designs{'img'} = $designhash{$dom.'.login.img'}; |
|
$is_custom{'img'} = 1; |
|
} |
|
if ($designhash{$dom.'.login.logo'} ne '') { |
|
$designs{'logo'} = $designhash{$dom.'.login.logo'}; |
|
$is_custom{'logo'} = 1; |
|
} |
|
if ($designhash{$dom.'.login.font'} ne '') { |
|
$designs{'font'} = $designhash{$dom.'.login.font'}; |
|
$is_custom{'font'} = 1; |
|
} |
|
foreach my $item (@bgs) { |
|
if ($designhash{$dom.'.login.'.$item} ne '') { |
|
$designs{'bgs'}{$item} = $designhash{$dom.'.login.'.$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
|
foreach my $item (@links) { |
|
if ($designhash{$dom.'.login.'.$item} ne '') { |
|
$designs{'links'}{$item} = $designhash{$dom.'.login.'.$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
} |
} |
my %choices = |
my %alt_text = &Apache::lonlocal::texthash ( img => 'Log-in banner', |
&Apache::lonlocal::texthash( |
logo => 'Institution Logo', |
coursecatalog => 'Display Course Catalog link?', |
domlogo => 'Domain Logo'); |
adminmail => "Display Administrator's E-mail Address?" |
my $itemcount = 1; |
); |
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $datatable = |
my $datatable = |
'<tr class="LC_odd_row"><td>'.$choices{'coursecatalog'}. |
'<tr'.$css_class.'><td colspan="2">'.$choices{'coursecatalog'}. |
'</td><td class="LC_right_item">'. |
'</td><td>'. |
'<nobr><input type="radio" name="coursecatalog"'. |
'<nobr><input type="radio" name="coursecatalog"'. |
$catalogon.' value="1" />'.&mt('Yes').' '. |
$catalogon.' value="1" />'.&mt('Yes').' '. |
'<input type="radio" name="coursecatalog"'. |
'<input type="radio" name="coursecatalog"'. |
$catalogoff.'value="0" />'.&mt('No').'</nobr></td>'. |
$catalogoff.'value="0" />'.&mt('No').'</nobr></td>'. |
'</tr><tr>'. |
'</tr>'; |
'<td>'.$choices{'adminmail'}.'</td>'. |
$itemcount ++; |
'<td class="LC_right_item"><nobr>'. |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
$datatable .= '<tr'.$css_class.'>'. |
|
'<td colspan="2">'.$choices{'adminmail'}.'</td>'. |
|
'<td><nobr>'. |
'<input type="radio" name="adminmail"'. |
'<input type="radio" name="adminmail"'. |
$adminmailon.' value="1" />'.&mt('Yes').' '. |
$adminmailon.' value="1" />'.&mt('Yes').' '. |
'<input type="radio" name="adminmail"'. |
'<input type="radio" name="adminmail"'. |
$adminmailoff.'value="0" />'.&mt('No').'</nobr></td>'. |
$adminmailoff.'value="0" />'.&mt('No').'</nobr></td>'; |
'</tr>'; |
$itemcount ++; |
|
$datatable .= &display_color_options($dom,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text); |
|
$datatable .= '</tr></table></td></tr>'; |
|
return $datatable; |
|
} |
|
|
|
sub login_choices { |
|
my %choices = |
|
&Apache::lonlocal::texthash ( |
|
coursecatalog => 'Display Course Catalog link?', |
|
adminmail => "Display Administrator's E-mail Address?", |
|
img => "Header", |
|
logo => "Main Logo", |
|
domlogo => "Domain Logo", |
|
bgs => "Background colors", |
|
links => "Link colors", |
|
font => "Font color", |
|
pgbg => "Page", |
|
mainbg => "Main panel", |
|
sidebg => "Side panel", |
|
link => "Link", |
|
alink => "Active link", |
|
vlink => "Visited link", |
|
); |
|
return %choices; |
|
} |
|
|
|
sub print_rolecolors { |
|
my ($phase,$role,$dom,$settings) = @_; |
|
my %choices = &color_font_choices(); |
|
my @bgs = ('pgbg','tabbg','sidebg'); |
|
my @links = ('link','alink','vlink'); |
|
my @images = ('img'); |
|
my %alt_text = &Apache::lonlocal::texthash(img => "Banner for $role role"); |
|
my %designhash = &Apache::lonnet::get_domainconf($dom); |
|
my %defaultdesign = %Apache::loncommon::defaultdesign; |
|
my (%is_custom,%designs); |
|
my %defaults = ( |
|
img => $defaultdesign{$role.'.img'}, |
|
font => $defaultdesign{$role.'.font'}, |
|
); |
|
foreach my $item (@bgs) { |
|
$defaults{'bgs'}{$item} = $defaultdesign{$role.'.'.$item}; |
|
} |
|
foreach my $item (@links) { |
|
$defaults{'links'}{$item} = $defaultdesign{$role.'.'.$item}; |
|
} |
|
if (ref($settings) eq 'HASH') { |
|
if (ref($settings->{$role}) eq 'HASH') { |
|
if ($settings->{$role}->{'img'} ne '') { |
|
$designs{'img'} = $settings->{$role}->{'img'}; |
|
$is_custom{'img'} = 1; |
|
} |
|
if ($settings->{$role}->{'font'} ne '') { |
|
$designs{'font'} = $settings->{$role}->{'font'}; |
|
$is_custom{'font'} = 1; |
|
} |
|
foreach my $item (@bgs) { |
|
if ($settings->{$role}->{$item} ne '') { |
|
$designs{'bgs'}{$item} = $settings->{$role}->{$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
|
foreach my $item (@links) { |
|
if ($settings->{$role}->{$item} ne '') { |
|
$designs{'links'}{$item} = $settings->{$role}->{$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
|
} |
|
} else { |
|
if ($designhash{$dom.'.'.$role.'.img'} ne '') { |
|
$designs{img} = $designhash{$dom.'.'.$role.'.img'}; |
|
$is_custom{'img'} = 1; |
|
} |
|
if ($designhash{$dom.'.'.$role.'.font'} ne '') { |
|
$designs{font} = $designhash{$dom.'.'.$role.'.font'}; |
|
$is_custom{'font'} = 1; |
|
} |
|
foreach my $item (@bgs) { |
|
if ($designhash{$dom.'.'.$role.'.'.$item} ne '') { |
|
$designs{'bgs'}{$item} = $designhash{$dom.'.'.$role.'.'.$item}; |
|
$is_custom{$item} = 1; |
|
|
|
} |
|
} |
|
foreach my $item (@links) { |
|
if ($designhash{$dom.'.'.$role.'.'.$item} ne '') { |
|
$designs{'links'}{$item} = $designhash{$dom.'.'.$role.'.'.$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
|
} |
|
my $itemcount = 1; |
|
my $datatable = display_color_options($dom,$phase,$role,$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text); |
|
$datatable .= '</tr></table></td></tr>'; |
|
return $datatable; |
|
} |
|
|
|
sub display_color_options { |
|
my ($dom,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs, |
|
$images,$bgs,$links,$alt_text) = @_; |
|
my $configuname = $dom.'-domainconfig'; |
|
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
my $datatable = '<tr'.$css_class.'>'. |
|
'<td>'.$choices->{'font'}.'</td>'; |
|
if (!$is_custom->{'font'}) { |
|
$datatable .= '<td>'.&mt('Default in use:').' '.$defaults->{'font'}.'</td>'; |
|
} else { |
|
$datatable .= '<td> </td>'; |
|
} |
|
my $fontlink = &color_pick($phase,$role,'font',$choices->{'font'},$designs->{'font'}); |
|
$datatable .= '<td><nobr>'. |
|
'<input type="text" size="10" name="'.$role.'_font"'. |
|
' value="'.$designs->{'font'}.'" /> '.$fontlink. |
|
'</nobr></td></tr>'; |
|
foreach my $img (@{$images}) { |
|
$itemcount ++; |
|
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
$datatable .= '</tr><tr'.$css_class.'>'. |
|
'<td>'.$choices->{$img}.'</td>'; |
|
my $imgfile; |
|
if ($designs->{$img} ne '') { |
|
$imgfile = $designs->{$img}; |
|
} else { |
|
$imgfile = $defaults->{$img}; |
|
} |
|
if ($imgfile) { |
|
my $showfile; |
|
if ($imgfile =~ m-^(/uploaded/\Q$dom\E/\Q$configuname\E/portfolio.*)/([^/]+)$-) { |
|
my $urldir = $1; |
|
my $filename = $2; |
|
my @info = &Apache::lonnet::stat_file($designs->{$img}); |
|
if (@info) { |
|
my $thumbfile = 'tn-'.$filename; |
|
my @thumb=&Apache::lonnet::stat_file($urldir.'/'.$thumbfile); |
|
if (@thumb) { |
|
$showfile = $urldir.'/'.$thumbfile; |
|
} else { |
|
$showfile = $imgfile; |
|
} |
|
} else { |
|
$showfile = ''; |
|
} |
|
} elsif ($imgfile =~ m-^/(adm/[^/]+)/([^/]+)$-) { |
|
my $imgdir = $1; |
|
my $filename = $2; |
|
if (-e "/home/httpd/html/$imgdir/tn-".$filename) { |
|
$showfile = "/$imgdir/tn-".$filename; |
|
} else { |
|
my $input = "/home/httpd/html".$imgfile; |
|
my $output = '/home/httpd/html/'.$imgdir.'/tn-'.$filename; |
|
if (!-e $output) { |
|
system("convert -sample 200x50 $input $output"); |
|
} |
|
$showfile = '/'.$imgdir.'/tn-'.$filename; |
|
} |
|
} |
|
if ($showfile) { |
|
$datatable.= '<td>'; |
|
if (!$is_custom->{$img}) { |
|
$datatable .= &mt('Default in use:').'<br />'; |
|
} |
|
$datatable.= '<img src="'.$showfile.'" alt="'. |
|
$alt_text->{$img}.'" /></td>'; |
|
if ($is_custom->{$img}) { |
|
$datatable.='<td><nobr><input type="checkbox" name="'.$role.'_del_'.$img.'" value="1">'. |
|
&mt('Delete?').' '.&mt('Replace:').'</nobr><br />'; |
|
} else { |
|
$datatable.='<td valign="bottom">'.&mt('Upload:').'<br />'; |
|
} |
|
} else { |
|
$datatable .= '<td colspan="2" class="LC_right_item"><br />'. |
|
&mt('Upload:'); |
|
} |
|
} else { |
|
$datatable .= '<td colspan="2" class="LC_right_item"><br />'. |
|
&mt('Upload:'); |
|
} |
|
$datatable .= ' <input type="file" name="'.$role.'_'.$img.'" /></nobr></td></tr>'; |
|
} |
|
$itemcount ++; |
|
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
$datatable .= '<tr'.$css_class.'>'. |
|
'<td>'.$choices->{'bgs'}.'</td>'; |
|
my $bgs_def; |
|
foreach my $item (@{$bgs}) { |
|
if (!$is_custom->{$item}) { |
|
$bgs_def .= '<td>'.$choices->{$item}.'<br />'.$defaults->{'bgs'}{$item}.'</td>'; |
|
} |
|
} |
|
if ($bgs_def) { |
|
$datatable .= '<td>'.&mt('Default(s) in use').'<br /><table border="0"><tr>'.$bgs_def.'</tr></table></td>'; |
|
} else { |
|
$datatable .= '<td> </td>'; |
|
} |
|
$datatable .= '<td class="LC_right_item">'. |
|
'<table border="0"><tr>'; |
|
foreach my $item (@{$bgs}) { |
|
my $link = &color_pick($phase,$role,$item,$choices->{$item},$designs->{'bgs'}{$item}); |
|
$datatable .= '<td align="center">'.$link; |
|
if ($designs->{'bgs'}{$item}) { |
|
$datatable .= '<span style="background-color:'.$designs->{'bgs'}{$item}.'width: 10px"> </span>'; |
|
} |
|
$datatable .= '<br /><input type="text" size="8" name="'.$role.'_'.$item.'" value="'.$designs->{'bgs'}{$item}. |
|
'" /></td>'; |
|
} |
|
$datatable .= '</tr></table></td></tr>'; |
|
$itemcount ++; |
|
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
$datatable .= '<tr'.$css_class.'>'. |
|
'<td>'.$choices->{'links'}.'</td>'; |
|
my $links_def; |
|
foreach my $item (@{$links}) { |
|
if (!$is_custom->{$item}) { |
|
$links_def .= '<td>'.$choices->{$item}.'<br />'.$defaults->{'links'}{$item}.'</td>'; |
|
} |
|
} |
|
if ($links_def) { |
|
$datatable .= '<td>'.&mt('Default(s) in use').'<br /><table border="0"><tr>'.$links_def.'</tr></table></td>'; |
|
} else { |
|
$datatable .= '<td> </td>'; |
|
} |
|
$datatable .= '<td class="LC_right_item">'. |
|
'<table border="0"><tr>'; |
|
foreach my $item (@{$links}) { |
|
$datatable .= '<td align="center">'; |
|
my $link = &color_pick($phase,$role,$item,$choices->{$item},$designs->{'links'}{$item}); |
|
if ($designs->{'links'}{$item}) { |
|
$datatable.='<span style="color: '.$designs->{'links'}{$item}.';">'. |
|
$link.'</span>'; |
|
} else { |
|
$datatable .= $link; |
|
} |
|
$datatable .= '<br /><input type="text" size="8" name="'.$role.'_'.$item.'" value="'.$designs->{'links'}{$item}. |
|
'" /></td>'; |
|
} |
return $datatable; |
return $datatable; |
} |
} |
|
|
|
sub color_pick { |
|
my ($phase,$role,$item,$desc,$curcol) = @_; |
|
my $link = '<a href="javascript:pjump('."'color_custom','".$desc. |
|
"','".$curcol."','".$role.'_'.$item."','parmform.pres','psub'". |
|
');">'.$desc.'</a>'; |
|
return $link; |
|
} |
|
|
|
sub color_pick_js { |
|
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); |
|
my $output = <<"ENDCOL"; |
|
function pclose() { |
|
parmwin=window.open("/adm/rat/empty.html","LONCAPAparms","height=350,width=350,scrollbars=no,menubar=no"); |
|
parmwin.close(); |
|
} |
|
|
|
$pjump_def |
|
|
|
function psub() { |
|
pclose(); |
|
if (document.parmform.pres_marker.value!='') { |
|
if (document.parmform.pres_type.value!='') { |
|
eval('document.display.'+ |
|
document.parmform.pres_marker.value+ |
|
'.value=document.parmform.pres_value.value;'); |
|
} |
|
} else { |
|
document.parmform.pres_value.value=''; |
|
document.parmform.pres_marker.value=''; |
|
} |
|
} |
|
ENDCOL |
|
return $output; |
|
} |
|
|
sub print_quotas { |
sub print_quotas { |
my ($dom,$settings) = @_; |
my ($dom,$settings) = @_; |
my $datatable; |
my $datatable; |
Line 496 sub usertype_update_row {
|
Line 904 sub usertype_update_row {
|
} |
} |
|
|
sub modify_login { |
sub modify_login { |
my ($dom,%domconfig) = @_; |
my ($r,$dom,%domconfig) = @_; |
my ($resulttext,%changes); |
my ($resulttext,$errors,$colchgtext,%changes,%colchanges); |
my %title = ( coursecatalog => 'Display course catalog', |
my %title = ( coursecatalog => 'Display course catalog', |
adminmail => 'Display administrator E-mail address'); |
adminmail => 'Display administrator E-mail address'); |
my @offon = ('off','on'); |
my @offon = ('off','on'); |
my %loginhash = ( |
my %loginhash; |
login => { coursecatalog => $env{'form.coursecatalog'}, |
($errors,%colchanges) = &modify_colors($r,$dom,['login'],\%domconfig, |
adminmail => $env{'form.adminmail'}, |
\%loginhash); |
} |
$loginhash{login}{coursecatalog} = $env{'form.coursecatalog'}; |
); |
$loginhash{login}{adminmail} = $env{'form.adminmail'}; |
|
if (ref($colchanges{'login'}) eq 'HASH') { |
|
$colchgtext = &display_colorchgs($dom,\%colchanges,['login'], |
|
\%loginhash); |
|
} |
my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash, |
my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash, |
$dom); |
$dom); |
if ($putresult eq 'ok') { |
if ($putresult eq 'ok') { |
Line 525 sub modify_login {
|
Line 937 sub modify_login {
|
($env{'form.adminmail'} eq '1')) { |
($env{'form.adminmail'} eq '1')) { |
$changes{'adminmail'} = 1; |
$changes{'adminmail'} = 1; |
} |
} |
if (keys(%changes) > 0) { |
if (keys(%changes) > 0 || $colchgtext) { |
$resulttext = &mt('Changes made:').'<ul>'; |
$resulttext = &mt('Changes made:').'<ul>'; |
foreach my $item (sort(keys(%changes))) { |
foreach my $item (sort(keys(%changes))) { |
$resulttext .= '<li>'.&mt("$title{$item} set to $offon[$env{'form.'.$item}]").'</li>'; |
$resulttext .= '<li>'.&mt("$title{$item} set to $offon[$env{'form.'.$item}]").'</li>'; |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= $colchgtext.'</ul>'; |
} else { |
} else { |
$resulttext = &mt('No changes made to log-in page settings'); |
$resulttext = &mt('No changes made to log-in page settings'); |
} |
} |
} else { |
} else { |
$resulttext = &mt('An error occurred: [_1]',$putresult); |
$resulttext = &mt('An error occurred: [_1]',$putresult); |
} |
} |
|
if ($errors) { |
|
$resulttext .= &mt('The following errors occurred: ').'<ul>'. |
|
$errors.'</ul>'; |
|
} |
|
return $resulttext; |
|
} |
|
|
|
sub color_font_choices { |
|
my %choices = |
|
&Apache::lonlocal::texthash ( |
|
img => "Header", |
|
bgs => "Background colors", |
|
links => "Link colors", |
|
font => "Font color", |
|
pgbg => "Page", |
|
tabbg => "Header", |
|
sidebg => "Border", |
|
link => "Link", |
|
alink => "Active link", |
|
vlink => "Visited link", |
|
); |
|
return %choices; |
|
} |
|
|
|
sub modify_rolecolors { |
|
my ($r,$dom,$roles,%domconfig) = @_; |
|
my ($resulttext,%rolehash); |
|
$rolehash{'rolecolors'} = {}; |
|
my ($errors,%changes) = &modify_colors($r,$dom,$roles, |
|
$domconfig{'rolecolors'},$rolehash{'rolecolors'}); |
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%rolehash, |
|
$dom); |
|
if ($putresult eq 'ok') { |
|
if (keys(%changes) > 0) { |
|
$resulttext = &display_colorchgs($dom,\%changes,$roles, |
|
$rolehash{'rolecolors'}); |
|
} else { |
|
$resulttext = &mt('No changes made to default color schemes'); |
|
} |
|
} else { |
|
$resulttext = &mt('An error occurred: [_1]',$putresult); |
|
} |
|
if ($errors) { |
|
$resulttext .= &mt('The following errors occurred: ').'<ul>'. |
|
$errors.'</ul>'; |
|
} |
|
return $resulttext; |
|
} |
|
|
|
sub modify_colors { |
|
my ($r,$dom,$roles,$domconfig,$confhash) = @_; |
|
my %changes; |
|
my @bgs = ('pgbg','mainbg','sidebg'); |
|
my @links = ('link','alink','vlink'); |
|
my @images; |
|
my $configuname = $dom.'-domainconfig'; |
|
my $servadm = $r->dir_config('lonAdmEMail'); |
|
my $errors; |
|
foreach my $role (@{$roles}) { |
|
if ($role eq 'login') { |
|
@images = ('img','logo','domlogo'); |
|
} else { |
|
@images = ('img'); |
|
} |
|
$confhash->{$role}{'font'} = $env{'form.'.$role.'_font'}; |
|
foreach my $item (@bgs,@links) { |
|
$confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item}; |
|
} |
|
foreach my $img (@images) { |
|
if ($env{'form.'.$role.'_'.$img.'.filename'} ne '') { |
|
my $configuserok; |
|
if (&Apache::lonnet::homeserver($configuname,$dom) eq 'no_host') { |
|
srand( time() ^ ($$ + ($$ << 15)) ); # Seed rand. |
|
my $configpass = &LONCAPA::Enrollment::create_password(); |
|
$configuserok = &Apache::lonnet::modifyuser($dom,$configuname,'','internal',$configpass,'','','','','',undef,$servadm); |
|
} else { |
|
$configuserok = 'ok'; |
|
} |
|
if ($configuserok eq 'ok') { |
|
my $result = |
|
&Apache::lonnet::userfileupload($role.'_'.$img,'', |
|
'portfolio/'.$img,'','','',$configuname,$dom,'200','50'); |
|
if ($result =~ m|(^/uploaded/.+)/([^/]+)$|) { |
|
my $urldir = $1; |
|
my $filename = $2; |
|
my $allowresult = &Apache::lonnet::make_public_indefinitely($result); |
|
if ($allowresult eq 'ok') { |
|
&Apache::lonnet::make_public_indefinitely($urldir.'/tn-'.$filename); |
|
$confhash->{$role}{$img} = $result; |
|
$changes{$role}{$img} = 1; |
|
} |
|
} |
|
} else { |
|
my $error = &mt("Upload of image [_1] for $role page(s) failed because a Domain Configuation user ([_2]) could not be created in domain: [_3]. Error was: [_4].",$img,$configuname,$dom,$configuserok); |
|
&Apache::lonnet::logthis($error); |
|
$errors .= '<li>'.$error.'</li>'; |
|
} |
|
} |
|
} |
|
if (ref($domconfig) eq 'HASH') { |
|
if (ref($domconfig->{$role}) eq 'HASH') { |
|
foreach my $img (@images) { |
|
if ($domconfig->{$role}{$img} ne '') { |
|
if ($env{'form.'.$role.'_del_'.$img}) { |
|
$confhash->{$role}{$img} = ''; |
|
$changes{$role}{$img} = 1; |
|
} else { |
|
$confhash->{$role}{$img} = $domconfig->{$role}{$img}; |
|
} |
|
} else { |
|
if ($env{'form.'.$role.'_del_'.$img}) { |
|
$confhash->{$role}{$img} = ''; |
|
$changes{$role}{$img} = 1; |
|
} |
|
} |
|
} |
|
if ($domconfig->{$role}{'font'} ne '') { |
|
if ($confhash->{$role}{'font'} ne $domconfig->{$role}{'font'}) { |
|
$changes{$role}{'font'} = 1; |
|
} |
|
} else { |
|
if ($confhash->{$role}{'font'}) { |
|
$changes{$role}{'font'} = 1; |
|
} |
|
} |
|
foreach my $item (@bgs) { |
|
if ($domconfig->{$role}{$item} ne '') { |
|
if ($confhash->{$role}{$item} ne $domconfig->{$role}{$item}) { |
|
$changes{$role}{'bgs'}{$item} = 1; |
|
} |
|
} else { |
|
if ($confhash->{$role}{$item}) { |
|
$changes{$role}{'bgs'}{$item} = 1; |
|
} |
|
} |
|
} |
|
foreach my $item (@links) { |
|
if ($domconfig->{$role}{$item} ne '') { |
|
if ($confhash->{$role}{$item} ne $domconfig->{$role}{$item}) { |
|
$changes{$role}{'links'}{$item} = 1; |
|
} |
|
} else { |
|
if ($confhash->{$role}{$item}) { |
|
$changes{$role}{'links'}{$item} = 1; |
|
} |
|
} |
|
} |
|
} else { |
|
&default_change_checker($role,\@images,\@links,\@bgs, |
|
$confhash,\%changes); |
|
} |
|
} else { |
|
&default_change_checker($role,\@images,\@links,\@bgs, |
|
$confhash,\%changes); |
|
} |
|
} |
|
return ($errors,%changes); |
|
} |
|
|
|
sub default_change_checker { |
|
my ($role,$images,$links,$bgs,$confhash,$changes) = @_; |
|
foreach my $item (@{$links}) { |
|
if ($confhash->{$role}{$item}) { |
|
$changes->{$role}{'links'}{$item} = 1; |
|
} |
|
} |
|
foreach my $item (@{$bgs}) { |
|
if ($confhash->{$role}{$item}) { |
|
$changes->{$role}{'bgs'}{$item} = 1; |
|
} |
|
} |
|
foreach my $img (@{$images}) { |
|
if ($env{'form.'.$role.'_del_'.$img}) { |
|
$confhash->{$role}{$img} = ''; |
|
$changes->{$role}{$img} = 1; |
|
} |
|
} |
|
if ($confhash->{$role}{'font'}) { |
|
$changes->{$role}{'font'} = 1; |
|
} |
|
} |
|
|
|
sub display_colorchgs { |
|
my ($dom,$changes,$roles,$confhash) = @_; |
|
my (%choices,$resulttext); |
|
&Apache::lonnet::devalidate_domconfig_cache($dom); |
|
if (!grep(/^login$/,@{$roles})) { |
|
$resulttext = &mt('Changes made:').'<br />'; |
|
} |
|
foreach my $role (@{$roles}) { |
|
if ($role eq 'login') { |
|
%choices = &login_choices(); |
|
} else { |
|
%choices = &color_font_choices(); |
|
} |
|
if (ref($changes->{$role}) eq 'HASH') { |
|
if ($role ne 'login') { |
|
$resulttext .= '<h4>'.&mt($role).'</h4>'; |
|
} |
|
foreach my $key (sort(keys(%{$changes->{$role}}))) { |
|
if ($role ne 'login') { |
|
$resulttext .= '<ul>'; |
|
} |
|
if (ref($changes->{$role}{$key}) eq 'HASH') { |
|
if ($role ne 'login') { |
|
$resulttext .= '<li>'.&mt($choices{$key}).':<ul>'; |
|
} |
|
foreach my $item (sort(keys(%{$changes->{$role}{$key}}))) { |
|
if ($confhash->{$role}{$item} eq '') { |
|
$resulttext .= '<li>'.&mt("$choices{$item} set to default").'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt("$choices{$item} set to [_1]",$confhash->{$role}{$item}).'</li>'; |
|
} |
|
} |
|
if ($role ne 'login') { |
|
$resulttext .= '</ul></li>'; |
|
} |
|
} else { |
|
if ($confhash->{$role}{$key} eq '') { |
|
$resulttext .= '<li>'.&mt("$choices{$key} set to default").'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt("$choices{$key} set to [_1]",$confhash->{$role}{$key}).'</li>'; |
|
} |
|
} |
|
if ($role ne 'login') { |
|
$resulttext .= '</ul>'; |
|
} |
|
} |
|
} |
|
} |
return $resulttext; |
return $resulttext; |
} |
} |
|
|
Line 746 sub modify_autoupdate {
|
Line 1388 sub modify_autoupdate {
|
$newvaluestr = join(', ',@newvalues); |
$newvaluestr = join(', ',@newvalues); |
} else { |
} else { |
$newvaluestr = &mt('none'); |
$newvaluestr = &mt('none'); |
} |
} |
if ($item eq 'default') { |
if ($item eq 'default') { |
$resulttext .= '<li>'.&mt("Updates for $othertitle set to: [_1]",$newvaluestr).'</li>'; |
$resulttext .= '<li>'.&mt("Updates for $othertitle set to: [_1]",$newvaluestr).'</li>'; |
} else { |
} else { |