version 1.6, 2007/04/03 18:47:23
|
version 1.25, 2007/08/26 15:31:03
|
Line 38 use Apache::lonhtmlcommon();
|
Line 38 use Apache::lonhtmlcommon();
|
use Apache::lonlocal; |
use Apache::lonlocal; |
use LONCAPA(); |
use LONCAPA(); |
use LONCAPA::Enrollment; |
use LONCAPA::Enrollment; |
|
use File::Copy; |
|
|
sub handler { |
sub handler { |
my $r=shift; |
my $r=shift; |
Line 66 sub handler {
|
Line 67 sub handler {
|
} |
} |
my %domconfig = |
my %domconfig = |
&Apache::lonnet::get_dom('configuration',['login','rolecolors', |
&Apache::lonnet::get_dom('configuration',['login','rolecolors', |
'quotas','autoenroll','autoupdate'],$dom); |
'quotas','autoenroll','autoupdate','directorysrch'],$dom); |
my @prefs = ( |
my @prefs = ( |
{ text => 'Default color schemes', |
{ text => 'Default color schemes', |
help => 'Default_Color_Schemes', |
help => 'Default_Color_Schemes', |
Line 105 sub handler {
|
Line 106 sub handler {
|
col2 => 'Value',}, |
col2 => 'Value',}, |
{col1 => 'User Population', |
{col1 => 'User Population', |
col2 => 'Updataeable user data'}], |
col2 => 'Updataeable user data'}], |
}, |
}, |
|
{ text => 'Institutional directory searches', |
|
help => 'Domain_Directory_Search', |
|
action => 'directorysrch', |
|
header => [{col1 => 'Setting', |
|
col2 => 'Value',}], |
|
}, |
); |
); |
my @roles = ('student','coordinator','author','admin'); |
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"}); |
|
my $confname = $dom.'-domainconfig'; |
if ($phase eq 'process') { |
if ($phase eq 'process') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"javascript:changePage(document.$phase,'$phase')", |
({href=>"javascript:changePage(document.$phase,'$phase')", |
Line 118 sub handler {
|
Line 126 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($r,$dom,$item->{'action'},\@roles,%domconfig)); |
&process_changes($r,$dom,$confname, |
|
$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 130 sub handler {
|
Line 139 sub handler {
|
my %helphash; |
my %helphash; |
my $numprefs = @prefs; |
my $numprefs = @prefs; |
&print_header($r,$phase); |
&print_header($r,$phase); |
|
if (keys(%domconfig) == 0) { |
|
my $primarylibserv = &Apache::lonnet::domain($dom,'primary'); |
|
my $perlvarref = &LONCAPA::Configuration::read_conf('loncapa.conf'); |
|
my $hostid = $perlvarref->{'lonHostID'}; |
|
if ($hostid ne $primarylibserv) { |
|
my %designhash = &Apache::loncommon::get_domainconf($dom); |
|
my @loginimages = ('img','logo','domlogo'); |
|
my $custom_img_count = 0; |
|
foreach my $img (@loginimages) { |
|
if ($designhash{$dom.'.login.'.$img} ne '') { |
|
$custom_img_count ++; |
|
} |
|
} |
|
foreach my $role (@roles) { |
|
if ($designhash{$dom.'.'.$role.'.img'} ne '') { |
|
$custom_img_count ++; |
|
} |
|
} |
|
if ($custom_img_count > 0) { |
|
my $switch_server = &check_switchserver($dom,$confname); |
|
$r->print(&mt('Domain configuration settings have yet to be saved for this domain via the web-based domain preferences interface.').'<br />'.&mt("While this remains so, you must switch to the domain's primary library server in order to update settings.").'<br /><br />'.&mt("Thereafter, you will be able to update settings from this screen when logged in to any server in the LON-CAPA network (with a DC role selected in the domain), although you will still need to switch to the domain's primary library server to upload new images or logos.").'<br /><br />'.$switch_server.' '.&mt('to primary library server for domain: [_1]',$dom)); |
|
return OK; |
|
} |
|
} |
|
} |
$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 'login') { |
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,$phase,$item->{'action'}, |
&print_config_box($r,$dom,$confname,$phase,$item->{'action'}, |
$item,$domconfig{$item->{'action'}}); |
$item,$domconfig{$item->{'action'}}); |
} |
} |
$r->print(' |
$r->print(' |
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
</td> |
</tr> |
</tr> |
</table>'); |
</table>'); |
&print_footer($r,$phase,'process','Store changes'); |
&print_footer($r,$phase,'process','Save changes'); |
} |
} |
return OK; |
return OK; |
} |
} |
|
|
sub process_changes { |
sub process_changes { |
my ($r,$dom,$action,$roles,%domconfig) = @_; |
my ($r,$dom,$confname,$action,$roles,%domconfig) = @_; |
my $output; |
my $output; |
if ($action eq 'login') { |
if ($action eq 'login') { |
$output = &modify_login($r,$dom,%domconfig); |
$output = &modify_login($r,$dom,$confname,%domconfig); |
} elsif ($action eq 'rolecolors') { |
} elsif ($action eq 'rolecolors') { |
$output = &modify_rolecolors($r,$dom,$roles,%domconfig); |
$output = &modify_rolecolors($r,$dom,$confname,$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') { |
$output = &modify_autoenroll($dom,%domconfig); |
$output = &modify_autoenroll($dom,%domconfig); |
} elsif ($action eq 'autoupdate') { |
} elsif ($action eq 'autoupdate') { |
$output = &modify_autoupdate($dom,%domconfig); |
$output = &modify_autoupdate($dom,%domconfig); |
|
} elsif ($action eq 'directorysrch') { |
|
$output = &modify_directorysrch($dom,%domconfig); |
} |
} |
return $output; |
return $output; |
} |
} |
|
|
sub print_config_box { |
sub print_config_box { |
my ($r,$dom,$phase,$action,$item,$settings) = @_; |
my ($r,$dom,$confname,$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}).' </th></tr>'); |
&Apache::loncommon::help_open_topic($item->{'help'}).'</th> |
# |
</tr>'); |
# FIXME - put the help link back in when the help files exist |
|
# <th>'.&mt($item->{text}).' '. |
|
# &Apache::loncommon::help_open_topic($item->{'help'}).'</th> |
|
# </tr>'); |
if (($action eq 'autoupdate') || ($action eq 'rolecolors')) { |
if (($action eq 'autoupdate') || ($action eq 'rolecolors')) { |
my $colspan = ($action eq 'rolecolors')?' colspan="2"':''; |
my $colspan = ($action eq 'rolecolors')?' colspan="2"':''; |
$r->print(' |
$r->print(' |
Line 189 sub print_config_box {
|
Line 225 sub print_config_box {
|
if ($action eq 'autoupdate') { |
if ($action eq 'autoupdate') { |
$r->print(&print_autoupdate('top',$dom,$settings)); |
$r->print(&print_autoupdate('top',$dom,$settings)); |
} else { |
} else { |
$r->print(&print_rolecolors($phase,'student',$dom,$settings)); |
$r->print(&print_rolecolors($phase,'student',$dom,$confname,$settings)); |
} |
} |
$r->print(' |
$r->print(' |
</table> |
</table> |
Line 205 sub print_config_box {
|
Line 241 sub print_config_box {
|
if ($action eq 'autoupdate') { |
if ($action eq 'autoupdate') { |
$r->print(&print_autoupdate('bottom',$dom,$settings)); |
$r->print(&print_autoupdate('bottom',$dom,$settings)); |
} else { |
} else { |
$r->print(&print_rolecolors($phase,'coordinator',$dom,$settings).' |
$r->print(&print_rolecolors($phase,'coordinator',$dom,$confname,$settings).' |
</table> |
</table> |
</td> |
</td> |
</tr> |
</tr> |
Line 216 sub print_config_box {
|
Line 252 sub print_config_box {
|
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[2]->{'col1'}.'</td> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[2]->{'col1'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[2]->{'col2'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[2]->{'col2'}.'</td> |
</tr>'. |
</tr>'. |
&print_rolecolors($phase,'author',$dom,$settings).' |
&print_rolecolors($phase,'author',$dom,$confname,$settings).' |
</table> |
</table> |
</td> |
</td> |
</tr> |
</tr> |
Line 227 sub print_config_box {
|
Line 263 sub print_config_box {
|
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[3]->{'col1'}.'</td> |
<td class="LC_left_item"'.$colspan.'>'.$item->{'header'}->[3]->{'col1'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[3]->{'col2'}.'</td> |
<td class="LC_right_item">'.$item->{'header'}->[3]->{'col2'}.'</td> |
</tr>'. |
</tr>'. |
&print_rolecolors($phase,'admin',$dom,$settings)); |
&print_rolecolors($phase,'admin',$dom,$confname,$settings)); |
} |
} |
} else { |
} else { |
$r->print(' |
$r->print(' |
Line 235 sub print_config_box {
|
Line 271 sub print_config_box {
|
<td> |
<td> |
<table class="LC_nested"> |
<table class="LC_nested"> |
<tr class="LC_info_row">'); |
<tr class="LC_info_row">'); |
if ($action eq 'login') { |
if (($action eq 'login') || ($action eq 'directorysrch')) { |
$r->print(' |
$r->print(' |
<td class="LC_left_item" colspan="2">'.$item->{'header'}->[0]->{'col1'}.'</td>'); |
<td class="LC_left_item" colspan="2">'.$item->{'header'}->[0]->{'col1'}.'</td>'); |
} else { |
} else { |
Line 246 sub print_config_box {
|
Line 282 sub print_config_box {
|
<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($dom,$phase,$settings)); |
$r->print(&print_login($dom,$confname,$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') { |
$r->print(&print_autoenroll($dom,$settings)); |
$r->print(&print_autoenroll($dom,$settings)); |
|
} elsif ($action eq 'directorysrch') { |
|
$r->print(&print_directorysrch($dom,$settings)); |
} |
} |
} |
} |
$r->print(' |
$r->print(' |
Line 277 function changePage(formname,newphase) {
|
Line 315 function changePage(formname,newphase) {
|
$js)); |
$js)); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Domain Settings')); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Domain Settings')); |
$r->print(' |
$r->print(' |
<form name="parmform"> |
<form name="parmform" action=""> |
<input type="hidden" name="pres_marker" /> |
<input type="hidden" name="pres_marker" /> |
<input type="hidden" name="pres_type" /> |
<input type="hidden" name="pres_type" /> |
<input type="hidden" name="pres_value" /> |
<input type="hidden" name="pres_value" /> |
Line 305 sub print_footer {
|
Line 343 sub print_footer {
|
} |
} |
|
|
sub print_login { |
sub print_login { |
my ($dom,$phase,$settings) = @_; |
my ($dom,$confname,$phase,$settings) = @_; |
my %choices = &login_choices(); |
my %choices = &login_choices(); |
my ($catalogon,$catalogoff,$adminmailon,$adminmailoff); |
my ($catalogon,$catalogoff,$adminmailon,$adminmailoff); |
$catalogon = ' checked="checked" '; |
$catalogon = ' checked="checked" '; |
Line 313 sub print_login {
|
Line 351 sub print_login {
|
my @images = ('img','logo','domlogo'); |
my @images = ('img','logo','domlogo'); |
my @bgs = ('pgbg','mainbg','sidebg'); |
my @bgs = ('pgbg','mainbg','sidebg'); |
my @links = ('link','alink','vlink'); |
my @links = ('link','alink','vlink'); |
my %designhash = &Apache::lonnet::get_domainconf($dom); |
my %designhash = &Apache::loncommon::get_domainconf($dom); |
my %defaultdesign = %Apache::loncommon::defaultdesign; |
my %defaultdesign = %Apache::loncommon::defaultdesign; |
my (%is_custom,%designs); |
my (%is_custom,%designs); |
my %defaults = ( |
my %defaults = ( |
Line 360 sub print_login {
|
Line 398 sub print_login {
|
} |
} |
} |
} |
} else { |
} 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 '') { |
if ($designhash{$dom.'.login.font'} ne '') { |
$designs{'font'} = $designhash{$dom.'.login.font'}; |
$designs{'font'} = $designhash{$dom.'.login.font'}; |
$is_custom{'font'} = 1; |
$is_custom{'font'} = 1; |
} |
} |
|
foreach my $item (@images) { |
|
if ($designhash{$dom.'.login.'.$item} ne '') { |
|
$designs{$item} = $designhash{$dom.'.login.'.$item}; |
|
$is_custom{$item} = 1; |
|
} |
|
} |
foreach my $item (@bgs) { |
foreach my $item (@bgs) { |
if ($designhash{$dom.'.login.'.$item} ne '') { |
if ($designhash{$dom.'.login.'.$item} ne '') { |
$designs{'bgs'}{$item} = $designhash{$dom.'.login.'.$item}; |
$designs{'bgs'}{$item} = $designhash{$dom.'.login.'.$item}; |
Line 398 sub print_login {
|
Line 429 sub print_login {
|
my $datatable = |
my $datatable = |
'<tr'.$css_class.'><td colspan="2">'.$choices{'coursecatalog'}. |
'<tr'.$css_class.'><td colspan="2">'.$choices{'coursecatalog'}. |
'</td><td>'. |
'</td><td>'. |
'<nobr><input type="radio" name="coursecatalog"'. |
'<span class="LC_nobreak"><label><input type="radio" name="coursecatalog"'. |
$catalogon.' value="1" />'.&mt('Yes').' '. |
$catalogon.' value="1" />'.&mt('Yes').'</label> '. |
'<input type="radio" name="coursecatalog"'. |
'<label><input type="radio" name="coursecatalog"'. |
$catalogoff.'value="0" />'.&mt('No').'</nobr></td>'. |
$catalogoff.'value="0" />'.&mt('No').'</label></span></td>'. |
'</tr>'; |
'</tr>'; |
$itemcount ++; |
$itemcount ++; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td colspan="2">'.$choices{'adminmail'}.'</td>'. |
'<td colspan="2">'.$choices{'adminmail'}.'</td>'. |
'<td><nobr>'. |
'<td><span class="LC_nobreak">'. |
'<input type="radio" name="adminmail"'. |
'<label><input type="radio" name="adminmail"'. |
$adminmailon.' value="1" />'.&mt('Yes').' '. |
$adminmailon.' value="1" />'.&mt('Yes').'</label> '. |
'<input type="radio" name="adminmail"'. |
'<label><input type="radio" name="adminmail"'. |
$adminmailoff.'value="0" />'.&mt('No').'</nobr></td>'; |
$adminmailoff.'value="0" />'.&mt('No').'</label></span></td></tr>'; |
$itemcount ++; |
$itemcount ++; |
$datatable .= &display_color_options($dom,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text); |
$datatable .= &display_color_options($dom,$confname,$phase,'login',$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text); |
$datatable .= '</tr></table></td></tr>'; |
$datatable .= '</tr></table></td></tr>'; |
return $datatable; |
return $datatable; |
} |
} |
Line 440 sub login_choices {
|
Line 471 sub login_choices {
|
} |
} |
|
|
sub print_rolecolors { |
sub print_rolecolors { |
my ($phase,$role,$dom,$settings) = @_; |
my ($phase,$role,$dom,$confname,$settings) = @_; |
my %choices = &color_font_choices(); |
my %choices = &color_font_choices(); |
my @bgs = ('pgbg','tabbg','sidebg'); |
my @bgs = ('pgbg','tabbg','sidebg'); |
my @links = ('link','alink','vlink'); |
my @links = ('link','alink','vlink'); |
my @images = ('img'); |
my @images = ('img'); |
my %alt_text = &Apache::lonlocal::texthash(img => "Banner for $role role"); |
my %alt_text = &Apache::lonlocal::texthash(img => "Banner for $role role"); |
my %designhash = &Apache::lonnet::get_domainconf($dom); |
my %designhash = &Apache::loncommon::get_domainconf($dom); |
my %defaultdesign = %Apache::loncommon::defaultdesign; |
my %defaultdesign = %Apache::loncommon::defaultdesign; |
my (%is_custom,%designs); |
my (%is_custom,%designs); |
my %defaults = ( |
my %defaults = ( |
Line 506 sub print_rolecolors {
|
Line 537 sub print_rolecolors {
|
} |
} |
} |
} |
my $itemcount = 1; |
my $itemcount = 1; |
my $datatable = display_color_options($dom,$phase,$role,$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text); |
my $datatable = &display_color_options($dom,$confname,$phase,$role,$itemcount,\%choices,\%is_custom,\%defaults,\%designs,\@images,\@bgs,\@links,\%alt_text); |
$datatable .= '</tr></table></td></tr>'; |
$datatable .= '</tr></table></td></tr>'; |
return $datatable; |
return $datatable; |
} |
} |
|
|
sub display_color_options { |
sub display_color_options { |
my ($dom,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs, |
my ($dom,$confname,$phase,$role,$itemcount,$choices,$is_custom,$defaults,$designs, |
$images,$bgs,$links,$alt_text) = @_; |
$images,$bgs,$links,$alt_text) = @_; |
my $configuname = $dom.'-domainconfig'; |
|
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $datatable = '<tr'.$css_class.'>'. |
my $datatable = '<tr'.$css_class.'>'. |
'<td>'.$choices->{'font'}.'</td>'; |
'<td>'.$choices->{'font'}.'</td>'; |
Line 524 sub display_color_options {
|
Line 554 sub display_color_options {
|
$datatable .= '<td> </td>'; |
$datatable .= '<td> </td>'; |
} |
} |
my $fontlink = &color_pick($phase,$role,'font',$choices->{'font'},$designs->{'font'}); |
my $fontlink = &color_pick($phase,$role,'font',$choices->{'font'},$designs->{'font'}); |
$datatable .= '<td><nobr>'. |
$datatable .= '<td><span class="LC_nobreak">'. |
'<input type="text" size="10" name="'.$role.'_font"'. |
'<input type="text" size="10" name="'.$role.'_font"'. |
' value="'.$designs->{'font'}.'" /> '.$fontlink. |
' value="'.$designs->{'font'}.'" /> '.$fontlink. |
'</nobr></td></tr>'; |
'</span></td></tr>'; |
|
my $switchserver = &check_switchserver($dom,$confname); |
foreach my $img (@{$images}) { |
foreach my $img (@{$images}) { |
$itemcount ++; |
$itemcount ++; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$datatable .= '</tr><tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td>'.$choices->{$img}.'</td>'; |
'<td>'.$choices->{$img}.'</td>'; |
my $imgfile; |
my ($imgfile, $img_import); |
if ($designs->{$img} ne '') { |
if ($designs->{$img} ne '') { |
$imgfile = $designs->{$img}; |
$imgfile = $designs->{$img}; |
|
$img_import = ($imgfile =~ m{^/adm/}); |
} else { |
} else { |
$imgfile = $defaults->{$img}; |
$imgfile = $defaults->{$img}; |
} |
} |
if ($imgfile) { |
if ($imgfile) { |
my $showfile; |
my ($showfile,$fullsize); |
if ($imgfile =~ m-^(/uploaded/\Q$dom\E/\Q$configuname\E/portfolio.*)/([^/]+)$-) { |
if ($imgfile =~ m-^(/res/\Q$dom\E/\Q$confname\E/\Q$img\E)/([^/]+)$-) { |
my $urldir = $1; |
my $urldir = $1; |
my $filename = $2; |
my $filename = $2; |
my @info = &Apache::lonnet::stat_file($designs->{$img}); |
my @info = &Apache::lonnet::stat_file($designs->{$img}); |
Line 557 sub display_color_options {
|
Line 589 sub display_color_options {
|
$showfile = ''; |
$showfile = ''; |
} |
} |
} elsif ($imgfile =~ m-^/(adm/[^/]+)/([^/]+)$-) { |
} elsif ($imgfile =~ m-^/(adm/[^/]+)/([^/]+)$-) { |
|
$showfile = $imgfile; |
my $imgdir = $1; |
my $imgdir = $1; |
my $filename = $2; |
my $filename = $2; |
if (-e "/home/httpd/html/$imgdir/tn-".$filename) { |
if (-e "/home/httpd/html/$imgdir/tn-".$filename) { |
Line 565 sub display_color_options {
|
Line 598 sub display_color_options {
|
my $input = "/home/httpd/html".$imgfile; |
my $input = "/home/httpd/html".$imgfile; |
my $output = '/home/httpd/html/'.$imgdir.'/tn-'.$filename; |
my $output = '/home/httpd/html/'.$imgdir.'/tn-'.$filename; |
if (!-e $output) { |
if (!-e $output) { |
system("convert -sample 200x50 $input $output"); |
my ($width,$height) = &thumb_dimensions(); |
|
my ($fullwidth,$fullheight) = &check_dimensions($input); |
|
if ($fullwidth ne '' && $fullheight ne '') { |
|
if ($fullwidth > $width && $fullheight > $height) { |
|
my $size = $width.'x'.$height; |
|
system("convert -sample $size $input $output"); |
|
$showfile = '/'.$imgdir.'/tn-'.$filename; |
|
} |
|
} |
} |
} |
$showfile = '/'.$imgdir.'/tn-'.$filename; |
|
} |
} |
} |
} |
if ($showfile) { |
if ($showfile) { |
|
$showfile = &Apache::loncommon::lonhttpdurl($showfile); |
|
$fullsize = &Apache::loncommon::lonhttpdurl($imgfile); |
$datatable.= '<td>'; |
$datatable.= '<td>'; |
if (!$is_custom->{$img}) { |
if (!$is_custom->{$img}) { |
$datatable .= &mt('Default in use:').'<br />'; |
$datatable .= &mt('Default in use:').'<br />'; |
} |
} |
$datatable.= '<img src="'.$showfile.'" alt="'. |
if ($img_import) { |
$alt_text->{$img}.'" /></td>'; |
$datatable.= '<input type="hidden" name="'.$role.'_import_'.$img.'" value="'.$imgfile.'" />'; |
|
} |
|
$datatable.= '<a href="'.$fullsize.'" target="_blank"><img src="'. |
|
$showfile.'" alt="'.$alt_text->{$img}. |
|
'" border="0" /></a></td>'; |
if ($is_custom->{$img}) { |
if ($is_custom->{$img}) { |
$datatable.='<td><nobr><input type="checkbox" name="'.$role.'_del_'.$img.'" value="1">'. |
$datatable.='<td><span class="LC_nobreak"><label><input type="checkbox" name="'. |
&mt('Delete?').' '.&mt('Replace:').'</nobr><br />'; |
$role.'_del_'.$img.'" value="1" />'.&mt('Delete?'). |
|
'</label> '.&mt('Replace:').'</span><br />'; |
} else { |
} else { |
$datatable.='<td valign="bottom">'.&mt('Upload:').'<br />'; |
$datatable.='<td valign="bottom">'.&mt('Upload:').'<br />'; |
} |
} |
Line 591 sub display_color_options {
|
Line 638 sub display_color_options {
|
$datatable .= '<td colspan="2" class="LC_right_item"><br />'. |
$datatable .= '<td colspan="2" class="LC_right_item"><br />'. |
&mt('Upload:'); |
&mt('Upload:'); |
} |
} |
$datatable .= ' <input type="file" name="'.$role.'_'.$img.'" /></nobr></td></tr>'; |
if ($switchserver) { |
|
$datatable .= &mt('Upload to library server: [_1]',$switchserver); |
|
} else { |
|
$datatable .=' <input type="file" name="'.$role.'_'.$img.'" />'; |
|
} |
|
$datatable .= '</td></tr>'; |
} |
} |
$itemcount ++; |
$itemcount ++; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
$css_class = $itemcount%2?' class="LC_odd_row"':''; |
Line 604 sub display_color_options {
|
Line 656 sub display_color_options {
|
} |
} |
} |
} |
if ($bgs_def) { |
if ($bgs_def) { |
$datatable .= '<td>'.&mt('Default(s) in use').'<br /><table border="0"><tr>'.$bgs_def.'</tr></table></td>'; |
$datatable .= '<td>'.&mt('Default(s) in use:').'<br /><table border="0"><tr>'.$bgs_def.'</tr></table></td>'; |
} else { |
} else { |
$datatable .= '<td> </td>'; |
$datatable .= '<td> </td>'; |
} |
} |
Line 631 sub display_color_options {
|
Line 683 sub display_color_options {
|
} |
} |
} |
} |
if ($links_def) { |
if ($links_def) { |
$datatable .= '<td>'.&mt('Default(s) in use').'<br /><table border="0"><tr>'.$links_def.'</tr></table></td>'; |
$datatable .= '<td>'.&mt('Default(s) in use:').'<br /><table border="0"><tr>'.$links_def.'</tr></table></td>'; |
} else { |
} else { |
$datatable .= '<td> </td>'; |
$datatable .= '<td> </td>'; |
} |
} |
Line 690 ENDCOL
|
Line 742 ENDCOL
|
sub print_quotas { |
sub print_quotas { |
my ($dom,$settings) = @_; |
my ($dom,$settings) = @_; |
my $datatable; |
my $datatable; |
my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom); |
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
my $othertitle = "All users"; |
|
my @types; |
|
if (ref($order) eq 'ARRAY') { |
|
@types = @{$order}; |
|
} |
|
if (@types == 0) { |
|
if (ref($usertypes) eq 'HASH') { |
|
@types = sort(keys(%{$usertypes})); |
|
} |
|
} |
|
my $typecount = 0; |
my $typecount = 0; |
my $css_class; |
my $css_class; |
if (@types > 0) { |
if (@{$types} > 0) { |
foreach my $type (@types) { |
foreach my $type (@{$types}) { |
if (defined($usertypes->{$type})) { |
if (defined($usertypes->{$type})) { |
$typecount ++; |
$typecount ++; |
$css_class = $typecount%2?' class="LC_odd_row"':''; |
$css_class = $typecount%2?' class="LC_odd_row"':''; |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td>'.$usertypes->{$type}.'</td>'. |
'<td>'.$usertypes->{$type}.'</td>'. |
'<td class="LC_right_item"><nobr>'. |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
'<input type="text" name="quota_'.$type. |
'<input type="text" name="quota_'.$type. |
'" value="'.$settings->{$type}. |
'" value="'.$settings->{$type}. |
'" size="5" /> Mb</nobr></td></tr>'; |
'" size="5" /> Mb</span></td></tr>'; |
} |
} |
} |
} |
$othertitle = "Other users"; |
|
} |
} |
my $defaultquota = '20'; |
my $defaultquota = '20'; |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
Line 728 sub print_quotas {
|
Line 769 sub print_quotas {
|
$css_class = $typecount%2?' class="LC_odd_row"':''; |
$css_class = $typecount%2?' class="LC_odd_row"':''; |
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td>'.&mt($othertitle).'</td>'. |
'<td>'.&mt($othertitle).'</td>'. |
'<td class="LC_right_item"><nobr>'. |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
'<input type="text" name="default" value="'. |
'<input type="text" name="defaultquota" value="'. |
$defaultquota.'" size="5" /> Mb</nobr></td></tr>'; |
$defaultquota.'" size="5" /> Mb</span></td></tr>'; |
return $datatable; |
return $datatable; |
} |
} |
|
|
sub print_autoenroll { |
sub print_autoenroll { |
my ($dom,$settings) = @_; |
my ($dom,$settings) = @_; |
my $defdom = $dom; |
|
my $autorun = &Apache::lonnet::auto_run(undef,$dom), |
my $autorun = &Apache::lonnet::auto_run(undef,$dom), |
my ($runon,$runoff); |
my ($defdom,$runon,$runoff); |
if (ref($settings) eq 'HASH') { |
if (ref($settings) eq 'HASH') { |
if (exists($settings->{'run'})) { |
if (exists($settings->{'run'})) { |
if ($settings->{'run'} eq '0') { |
if ($settings->{'run'} eq '0') { |
Line 760 sub print_autoenroll {
|
Line 800 sub print_autoenroll {
|
if (exists($settings->{'sender_domain'})) { |
if (exists($settings->{'sender_domain'})) { |
$defdom = $settings->{'sender_domain'}; |
$defdom = $settings->{'sender_domain'}; |
} |
} |
|
} else { |
|
if ($autorun) { |
|
$runon = ' checked="checked" '; |
|
$runoff = ' '; |
|
} else { |
|
$runoff = ' checked="checked" '; |
|
$runon = ' '; |
|
} |
} |
} |
my $domform = &Apache::loncommon::select_dom_form($defdom,'sender_domain',1); |
my $domform = &Apache::loncommon::select_dom_form($defdom,'sender_domain',1); |
my $datatable='<tr class="LC_odd_row">'. |
my $datatable='<tr class="LC_odd_row">'. |
'<td>'.&mt('Auto-enrollment active?').'</td>'. |
'<td>'.&mt('Auto-enrollment active?').'</td>'. |
'<td class="LC_right_item"><nobr>'. |
'<td class="LC_right_item"><span class="LC_nobreak"><label>'. |
'<input type="radio" name="autoenroll_run"'. |
|
$runon.' value="1" />'.&mt('Yes').' '. |
|
'<input type="radio" name="autoenroll_run"'. |
'<input type="radio" name="autoenroll_run"'. |
$runoff.'value="0" />'.&mt('No').'</nobr></td>'. |
$runon.' value="1" />'.&mt('Yes').'</label> '. |
|
'<label><input type="radio" name="autoenroll_run"'. |
|
$runoff.' value="0" />'.&mt('No').'</label></span></td>'. |
'</tr><tr>'. |
'</tr><tr>'. |
'<td>'.&mt('Notification messages - sender'). |
'<td>'.&mt('Notification messages - sender'). |
'</td><td class="LC_right_item"><nobr>'. |
'</td><td class="LC_right_item"><span class="LC_nobreak">'. |
&mt('username').': '. |
&mt('username').': '. |
'<input type="text" name="sender_uname" value="'. |
'<input type="text" name="sender_uname" value="'. |
$settings->{'sender_uname'}. |
$settings->{'sender_uname'}. |
'" size="10" /> '.&mt('domain'). |
'" size="10" /> '.&mt('domain'). |
': '.$domform.'</nobr></td></tr>'; |
': '.$domform.'</span></td></tr>'; |
return $datatable; |
return $datatable; |
} |
} |
|
|
Line 804 sub print_autoupdate {
|
Line 852 sub print_autoupdate {
|
); |
); |
$datatable = '<tr class="LC_odd_row">'. |
$datatable = '<tr class="LC_odd_row">'. |
'<td>'.&mt($title{'run'}).'</td>'. |
'<td>'.&mt($title{'run'}).'</td>'. |
'<td class="LC_right_item"><nobr>'. |
'<td class="LC_right_item"><span class="LC_nobreak"><label>'. |
'<input type="radio" name="autoupdate_run"'. |
'<input type="radio" name="autoupdate_run"'. |
$updateon.' value="1" />'.&mt('Yes').' '. |
$updateon.' value="1" />'.&mt('Yes').'</label> '. |
'<input type="radio" name="autoupdate_run"'. |
'<label><input type="radio" name="autoupdate_run"'. |
$updateoff.'value="0" />'.&mt('No').'</nobr></td>'. |
$updateoff.'value="0" />'.&mt('No').'</label></span></td>'. |
'</tr><tr>'. |
'</tr><tr>'. |
'<td>'.&mt($title{'classlists'}).'</td>'. |
'<td>'.&mt($title{'classlists'}).'</td>'. |
'<td class="LC_right_item"><nobr>'. |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
'<input type="radio" name="classlists"'. |
'<label><input type="radio" name="classlists"'. |
$classlistson.' value="1" />'.&mt('Yes').' '. |
$classlistson.' value="1" />'.&mt('Yes').'</label> '. |
'<input type="radio" name="classlists"'. |
'<label><input type="radio" name="classlists"'. |
$classlistsoff.'value="0" />'.&mt('No').'</nobr></td>'. |
$classlistsoff.'value="0" />'.&mt('No').'</label></span></td>'. |
'</tr>'; |
'</tr>'; |
} else { |
} else { |
my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom); |
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
my @types; |
my @fields = ('lastname','firstname','middlename','gen', |
if (ref($order) eq 'ARRAY') { |
'permanentemail','id'); |
@types = @{$order}; |
|
} |
|
if (@types == 0) { |
|
if (ref($usertypes) eq 'HASH') { |
|
@types = sort(keys(%{$usertypes})); |
|
} |
|
} |
|
my $othertitle = &mt('All users'); |
|
if (keys(%{$usertypes}) > 0) { |
|
$othertitle = &mt('Other users'); |
|
} |
|
my @fields = ('lastname','firstname','middlename','gen','email','id'); |
|
my %fieldtitles = &Apache::lonlocal::texthash ( |
my %fieldtitles = &Apache::lonlocal::texthash ( |
id => 'Student/Employee ID', |
id => 'Student/Employee ID', |
email => 'E-mail address', |
permanentemail => 'E-mail address', |
lastname => 'Last Name', |
lastname => 'Last Name', |
firstname => 'First Name', |
firstname => 'First Name', |
middlename => 'Middle Name', |
middlename => 'Middle Name', |
gen => 'Generation', |
gen => 'Generation', |
); |
); |
my $numrows = 0; |
my $numrows = 0; |
if (@types > 0) { |
if (@{$types} > 0) { |
$datatable = |
$datatable = |
&usertype_update_row($settings,$usertypes,\%fieldtitles, |
&usertype_update_row($settings,$usertypes,\%fieldtitles, |
\@fields,\@types,\$numrows); |
\@fields,$types,\$numrows); |
} |
} |
$datatable .= |
$datatable .= |
&usertype_update_row($settings,{'default' => $othertitle}, |
&usertype_update_row($settings,{'default' => $othertitle}, |
Line 855 sub print_autoupdate {
|
Line 891 sub print_autoupdate {
|
return $datatable; |
return $datatable; |
} |
} |
|
|
|
sub print_directorysrch { |
|
my ($dom,$settings) = @_; |
|
my $srchon = ' '; |
|
my $srchoff = ' checked="checked" '; |
|
my ($exacton,$containson,$beginson); |
|
my $localon = ' '; |
|
my $localoff = ' checked="checked" '; |
|
if (ref($settings) eq 'HASH') { |
|
if ($settings->{'available'} eq '1') { |
|
$srchon = $srchoff; |
|
$srchoff = ' '; |
|
} |
|
if ($settings->{'localonly'} eq '1') { |
|
$localon = $localoff; |
|
$localoff = ' '; |
|
} |
|
if (ref($settings->{'searchtypes'}) eq 'ARRAY') { |
|
foreach my $type (@{$settings->{'searchtypes'}}) { |
|
if ($type eq 'exact') { |
|
$exacton = ' checked="checked" '; |
|
} elsif ($type eq 'contains') { |
|
$containson = ' checked="checked" '; |
|
} elsif ($type eq 'begins') { |
|
$beginson = ' checked="checked" '; |
|
} |
|
} |
|
} else { |
|
if ($settings->{'searchtypes'} eq 'exact') { |
|
$exacton = ' checked="checked" '; |
|
} elsif ($settings->{'searchtypes'} eq 'contains') { |
|
$containson = ' checked="checked" '; |
|
} elsif ($settings->{'searchtypes'} eq 'specify') { |
|
$exacton = ' checked="checked" '; |
|
$containson = ' checked="checked" '; |
|
} |
|
} |
|
} |
|
my ($searchtitles,$titleorder) = &sorted_searchtitles(); |
|
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
|
|
|
my $numinrow = 4; |
|
my $datatable='<tr class="LC_odd_row">'. |
|
'<td colspan="2">'.&mt('Directory search available?').'</td>'. |
|
'<td class="LC_right_item"><span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="dirsrch_available"'. |
|
$srchon.' value="1" />'.&mt('Yes').'</label> '. |
|
'<label><input type="radio" name="dirsrch_available"'. |
|
$srchoff.' value="0" />'.&mt('No').'</label></span></td>'. |
|
'</tr><tr>'. |
|
'<td colspan="2">'.&mt('Other domains can search?').'</td>'. |
|
'<td class="LC_right_item"><span class="LC_nobreak"><label>'. |
|
'<input type="radio" name="dirsrch_localonly"'. |
|
$localoff.' value="0" />'.&mt('Yes').'</label> '. |
|
'<label><input type="radio" name="dirsrch_localonly"'. |
|
$localon.' value="1" />'.&mt('No').'</label></span></td>'. |
|
'</tr>'; |
|
$datatable .= &users_cansearch_row($settings,$types,$usertypes,$dom, |
|
$numinrow,$othertitle); |
|
$datatable .= '<tr>'. |
|
'<td>'.&mt('Supported search methods'). |
|
'</td><td class="LC_left_item" colspan="2"><table><tr>'; |
|
foreach my $title (@{$titleorder}) { |
|
if (defined($searchtitles->{$title})) { |
|
my $check = ' '; |
|
if (ref($settings->{'searchby'}) eq 'ARRAY') { |
|
if (grep(/^\Q$title\E$/,@{$settings->{'searchby'}})) { |
|
$check = ' checked="checked" '; |
|
} |
|
} |
|
$datatable .= '<td class="LC_left_item">'. |
|
'<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="searchby" '. |
|
'value="'.$title.'"'.$check.'/>'. |
|
$searchtitles->{$title}.'</label></span></td>'; |
|
} |
|
} |
|
$datatable .= '</tr></table></td></tr><tr class="LC_odd_row">'. |
|
'<td>'.&mt('Search latitude').'</td>'. |
|
'<td class="LC_left_item" colspan="2">'. |
|
'<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="searchtypes" '. |
|
$exacton.' value="exact" />'.&mt('Exact match'). |
|
'</label> '. |
|
'<label><input type="checkbox" name="searchtypes" '. |
|
$beginson.' value="begins" />'.&mt('Begins with'). |
|
'</label> '. |
|
'<label><input type="checkbox" name="searchtypes" '. |
|
$containson.' value="contains" />'.&mt('Contains'). |
|
'</label></span></td></tr>'; |
|
return $datatable; |
|
} |
|
|
|
sub users_cansearch_row { |
|
my ($settings,$types,$usertypes,$dom,$numinrow,$othertitle) = @_; |
|
my $output = '<tr class="LC_odd_row">'. |
|
'<td>'.&mt('Users allowed to search').' ('.$dom.')'. |
|
'</td><td class="LC_left_item" colspan="2"><table>'; |
|
for (my $i=0; $i<@{$types}; $i++) { |
|
if (defined($usertypes->{$types->[$i]})) { |
|
my $rem = $i%($numinrow); |
|
if ($rem == 0) { |
|
if ($i > 0) { |
|
$output .= '</tr>'; |
|
} |
|
$output .= '<tr>'; |
|
} |
|
my $check = ' '; |
|
if (ref($settings->{'cansearch'}) eq 'ARRAY') { |
|
if (grep(/^\Q$types->[$i]\E$/,@{$settings->{'cansearch'}})) { |
|
$check = ' checked="checked" '; |
|
} |
|
} |
|
$output .= '<td class="LC_left_item">'. |
|
'<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="cansearch" '. |
|
'value="'.$types->[$i].'"'.$check.'/>'. |
|
$usertypes->{$types->[$i]}.'</label></span></td>'; |
|
} |
|
} |
|
|
|
my $rem = @{$types}%($numinrow); |
|
my $colsleft = $numinrow - $rem; |
|
if ($colsleft > 1) { |
|
$output .= '<td colspan="'.$colsleft.'" class="LC_left_item">'; |
|
} else { |
|
$output .= '<td class="LC_left_item">'; |
|
} |
|
my $defcheck = ' '; |
|
if (ref($settings->{'cansearch'}) eq 'ARRAY') { |
|
if (grep(/^default$/,@{$settings->{'cansearch'}})) { |
|
$defcheck = ' checked="checked" '; |
|
} |
|
} |
|
$output .= '<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="cansearch" '. |
|
'value="default"'.$defcheck.'/>'. |
|
$othertitle.'</label></span></td>'. |
|
'</tr></table></td></tr>'; |
|
return $output; |
|
} |
|
|
|
sub sorted_inst_types { |
|
my ($dom) = @_; |
|
my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom); |
|
my $othertitle = "All users"; |
|
my @types; |
|
if (ref($order) eq 'ARRAY') { |
|
@types = @{$order}; |
|
} |
|
if (@types == 0) { |
|
if (ref($usertypes) eq 'HASH') { |
|
@types = sort(keys(%{$usertypes})); |
|
} |
|
} |
|
if (keys(%{$usertypes}) > 0) { |
|
$othertitle = &mt('Other users'); |
|
} |
|
return ($othertitle,$usertypes,\@types); |
|
} |
|
|
|
sub sorted_searchtitles { |
|
my %searchtitles = &Apache::lonlocal::texthash( |
|
'uname' => 'username', |
|
'lastname' => 'last name', |
|
'lastfirst' => 'last name, first name', |
|
); |
|
my @titleorder = ('uname','lastname','lastfirst'); |
|
return (\%searchtitles,\@titleorder); |
|
} |
|
|
|
sub sorted_searchtypes { |
|
my %srchtypes_desc = ( |
|
exact => 'is exact match', |
|
contains => 'contains ..', |
|
begins => 'begins with ..', |
|
); |
|
my @srchtypeorder = ('exact','begins','contains'); |
|
return (\%srchtypes_desc,\@srchtypeorder); |
|
} |
|
|
sub usertype_update_row { |
sub usertype_update_row { |
my ($settings,$usertypes,$fieldtitles,$fields,$types,$rownums) = @_; |
my ($settings,$usertypes,$fieldtitles,$fields,$types,$rownums) = @_; |
my $datatable; |
my $datatable; |
Line 892 sub usertype_update_row {
|
Line 1108 sub usertype_update_row {
|
} else { |
} else { |
$datatable .= '<td>'; |
$datatable .= '<td>'; |
} |
} |
$datatable .= '<nobr><input type="checkbox" name="updateable_'. |
$datatable .= '<span class="LC_nobreak"><label>'. |
$type.'_'.$fields->[$i].'" '. |
'<input type="checkbox" name="updateable_'.$type. |
'" value="1"'.$check.'/>'. |
'_'.$fields->[$i].'" value="1"'.$check.'/>'. |
$fieldtitles->{$fields->[$i]}.'</nobr></td>'; |
$fieldtitles->{$fields->[$i]}.'</label></span></td>'; |
} |
} |
$datatable .= '</tr></table></td></tr>'; |
$datatable .= '</tr></table></td></tr>'; |
} |
} |
Line 904 sub usertype_update_row {
|
Line 1120 sub usertype_update_row {
|
} |
} |
|
|
sub modify_login { |
sub modify_login { |
my ($r,$dom,%domconfig) = @_; |
my ($r,$dom,$confname,%domconfig) = @_; |
my ($resulttext,$errors,$colchgtext,%changes,%colchanges); |
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; |
($errors,%colchanges) = &modify_colors($r,$dom,['login'],\%domconfig, |
($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'], |
\%loginhash); |
\%domconfig,\%loginhash); |
$loginhash{login}{coursecatalog} = $env{'form.coursecatalog'}; |
$loginhash{login}{coursecatalog} = $env{'form.coursecatalog'}; |
$loginhash{login}{adminmail} = $env{'form.adminmail'}; |
$loginhash{login}{adminmail} = $env{'form.adminmail'}; |
if (ref($colchanges{'login'}) eq 'HASH') { |
if (ref($colchanges{'login'}) eq 'HASH') { |
Line 947 sub modify_login {
|
Line 1163 sub modify_login {
|
$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 = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
} |
} |
if ($errors) { |
if ($errors) { |
$resulttext .= &mt('The following errors occurred: ').'<ul>'. |
$resulttext .= '<br />'.&mt('The following errors occurred: ').'<ul>'. |
$errors.'</ul>'; |
$errors.'</ul>'; |
} |
} |
return $resulttext; |
return $resulttext; |
Line 974 sub color_font_choices {
|
Line 1191 sub color_font_choices {
|
} |
} |
|
|
sub modify_rolecolors { |
sub modify_rolecolors { |
my ($r,$dom,$roles,%domconfig) = @_; |
my ($r,$dom,$confname,$roles,%domconfig) = @_; |
my ($resulttext,%rolehash); |
my ($resulttext,%rolehash); |
$rolehash{'rolecolors'} = {}; |
$rolehash{'rolecolors'} = {}; |
my ($errors,%changes) = &modify_colors($r,$dom,$roles, |
my ($errors,%changes) = &modify_colors($r,$dom,$confname,$roles, |
$domconfig{'rolecolors'},$rolehash{'rolecolors'}); |
$domconfig{'rolecolors'},$rolehash{'rolecolors'}); |
my $putresult = &Apache::lonnet::put_dom('configuration',\%rolehash, |
my $putresult = &Apache::lonnet::put_dom('configuration',\%rolehash, |
$dom); |
$dom); |
Line 989 sub modify_rolecolors {
|
Line 1206 sub modify_rolecolors {
|
$resulttext = &mt('No changes made to default color schemes'); |
$resulttext = &mt('No changes made to default color schemes'); |
} |
} |
} else { |
} else { |
$resulttext = &mt('An error occurred: [_1]',$putresult); |
$resulttext = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
} |
} |
if ($errors) { |
if ($errors) { |
$resulttext .= &mt('The following errors occurred: ').'<ul>'. |
$resulttext .= &mt('The following errors occurred: ').'<ul>'. |
Line 999 sub modify_rolecolors {
|
Line 1217 sub modify_rolecolors {
|
} |
} |
|
|
sub modify_colors { |
sub modify_colors { |
my ($r,$dom,$roles,$domconfig,$confhash) = @_; |
my ($r,$dom,$confname,$roles,$domconfig,$confhash) = @_; |
my %changes; |
my (%changes,%choices); |
my @bgs = ('pgbg','mainbg','sidebg'); |
my @bgs = ('pgbg','mainbg','sidebg'); |
my @links = ('link','alink','vlink'); |
my @links = ('link','alink','vlink'); |
my @images; |
my @images; |
my $configuname = $dom.'-domainconfig'; |
|
my $servadm = $r->dir_config('lonAdmEMail'); |
my $servadm = $r->dir_config('lonAdmEMail'); |
my $errors; |
my $errors; |
foreach my $role (@{$roles}) { |
foreach my $role (@{$roles}) { |
if ($role eq 'login') { |
if ($role eq 'login') { |
|
%choices = &login_choices(); |
|
} else { |
|
%choices = &color_font_choices(); |
|
} |
|
if ($role eq 'login') { |
@images = ('img','logo','domlogo'); |
@images = ('img','logo','domlogo'); |
} else { |
} else { |
@images = ('img'); |
@images = ('img'); |
Line 1017 sub modify_colors {
|
Line 1239 sub modify_colors {
|
foreach my $item (@bgs,@links) { |
foreach my $item (@bgs,@links) { |
$confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item}; |
$confhash->{$role}{$item} = $env{'form.'.$role.'_'.$item}; |
} |
} |
foreach my $img (@images) { |
my ($configuserok,$author_ok,$switchserver,%currroles); |
|
my $uhome = &Apache::lonnet::homeserver($confname,$dom,1); |
|
($configuserok,%currroles) = &check_configuser($uhome,$dom, |
|
$confname,$servadm); |
|
if ($configuserok eq 'ok') { |
|
$switchserver = &check_switchserver($dom,$confname); |
|
if ($switchserver eq '') { |
|
$author_ok = &check_authorstatus($dom,$confname,%currroles); |
|
} |
|
} |
|
my ($width,$height) = &thumb_dimensions(); |
|
foreach my $img (@images) { |
|
if ( ! $env{'form.'.$role.'_'.$img.'.filename'} |
|
&& !defined($domconfig->{$role}{$img}) |
|
&& !$env{'form.'.$role.'_del_'.$img} |
|
&& $env{'form.'.$role.'_import_'.$img}) { |
|
# import the old configured image from the .tab setting |
|
# if they haven't provided a new one |
|
$domconfig->{$role}{$img} = |
|
$env{'form.'.$role.'_import_'.$img}; |
|
} |
if ($env{'form.'.$role.'_'.$img.'.filename'} ne '') { |
if ($env{'form.'.$role.'_'.$img.'.filename'} ne '') { |
my $configuserok; |
my $error; |
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') { |
if ($configuserok eq 'ok') { |
my $result = |
if ($switchserver) { |
&Apache::lonnet::userfileupload($role.'_'.$img,'', |
$error = &mt("Upload of [_1] image for $role page(s) is not permitted to this server: [_2]",$choices{$img},$switchserver); |
'portfolio/'.$img,'','','',$configuname,$dom,'200','50'); |
} else { |
if ($result =~ m|(^/uploaded/.+)/([^/]+)$|) { |
if ($author_ok eq 'ok') { |
my $urldir = $1; |
my ($result,$logourl) = |
my $filename = $2; |
&publishlogo($r,'upload',$role.'_'.$img, |
my $allowresult = &Apache::lonnet::make_public_indefinitely($result); |
$dom,$confname,$img,$width,$height); |
if ($allowresult eq 'ok') { |
if ($result eq 'ok') { |
&Apache::lonnet::make_public_indefinitely($urldir.'/tn-'.$filename); |
$confhash->{$role}{$img} = $logourl; |
$confhash->{$role}{$img} = $result; |
$changes{$role}{'images'}{$img} = 1; |
$changes{$role}{$img} = 1; |
} else { |
|
$error = &mt("Upload of [_1] image for $role page(s) failed because an error occurred publishing the file in RES space. Error was: [_2].",$choices{img},$result); |
|
} |
|
} else { |
|
$error = &mt("Upload of [_1] image for $role page(s) failed because an author role could not be assigned to a Domain Configuation user ([_2]) in domain: [_3]. Error was: [_4].",$choices{$img},$confname,$dom,$author_ok); |
} |
} |
} |
} |
} else { |
} 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); |
$error = &mt("Upload of [_1] image for $role page(s) failed because a Domain Configuation user ([_2]) could not be created in domain: [_3]. Error was: [_4].",$choices{$img},$confname,$dom,$configuserok); |
&Apache::lonnet::logthis($error); |
} |
$errors .= '<li>'.$error.'</li>'; |
if ($error) { |
|
&Apache::lonnet::logthis($error); |
|
$errors .= '<li><span class="LC_error">'.$error.'</span></li>'; |
|
} |
|
} elsif ($domconfig->{$role}{$img} ne '') { |
|
if ($domconfig->{$role}{$img} !~ m-^(/res/\Q$dom\E/\Q$confname\E/\Q$img\E)/([^/]+)$-) { |
|
my $error; |
|
if ($configuserok eq 'ok') { |
|
# is confname an author? |
|
if ($switchserver eq '') { |
|
if ($author_ok eq 'ok') { |
|
my ($result,$logourl) = |
|
&publishlogo($r,'copy',$domconfig->{$role}{$img}, |
|
$dom,$confname,$img,$width,$height); |
|
if ($result eq 'ok') { |
|
$confhash->{$role}{$img} = $logourl; |
|
$changes{$role}{'images'}{$img} = 1; |
|
} |
|
} |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
Line 1054 sub modify_colors {
|
Line 1313 sub modify_colors {
|
if ($domconfig->{$role}{$img} ne '') { |
if ($domconfig->{$role}{$img} ne '') { |
if ($env{'form.'.$role.'_del_'.$img}) { |
if ($env{'form.'.$role.'_del_'.$img}) { |
$confhash->{$role}{$img} = ''; |
$confhash->{$role}{$img} = ''; |
$changes{$role}{$img} = 1; |
$changes{$role}{'images'}{$img} = 1; |
} else { |
} else { |
$confhash->{$role}{$img} = $domconfig->{$role}{$img}; |
if ($confhash->{$role}{$img} eq '') { |
|
$confhash->{$role}{$img} = $domconfig->{$role}{$img}; |
|
} |
} |
} |
} else { |
} else { |
if ($env{'form.'.$role.'_del_'.$img}) { |
if ($env{'form.'.$role.'_del_'.$img}) { |
$confhash->{$role}{$img} = ''; |
$confhash->{$role}{$img} = ''; |
$changes{$role}{$img} = 1; |
$changes{$role}{'images'}{$img} = 1; |
} |
} |
} |
} |
} |
} |
Line 1123 sub default_change_checker {
|
Line 1384 sub default_change_checker {
|
foreach my $img (@{$images}) { |
foreach my $img (@{$images}) { |
if ($env{'form.'.$role.'_del_'.$img}) { |
if ($env{'form.'.$role.'_del_'.$img}) { |
$confhash->{$role}{$img} = ''; |
$confhash->{$role}{$img} = ''; |
$changes->{$role}{$img} = 1; |
$changes->{$role}{'images'}{$img} = 1; |
} |
} |
} |
} |
if ($confhash->{$role}{'font'}) { |
if ($confhash->{$role}{'font'}) { |
Line 1134 sub default_change_checker {
|
Line 1395 sub default_change_checker {
|
sub display_colorchgs { |
sub display_colorchgs { |
my ($dom,$changes,$roles,$confhash) = @_; |
my ($dom,$changes,$roles,$confhash) = @_; |
my (%choices,$resulttext); |
my (%choices,$resulttext); |
&Apache::lonnet::devalidate_domconfig_cache($dom); |
&Apache::loncommon::devalidate_domconfig_cache($dom); |
if (!grep(/^login$/,@{$roles})) { |
if (!grep(/^login$/,@{$roles})) { |
$resulttext = &mt('Changes made:').'<br />'; |
$resulttext = &mt('Changes made:').'<br />'; |
} |
} |
Line 1160 sub display_colorchgs {
|
Line 1421 sub display_colorchgs {
|
if ($confhash->{$role}{$item} eq '') { |
if ($confhash->{$role}{$item} eq '') { |
$resulttext .= '<li>'.&mt("$choices{$item} set to default").'</li>'; |
$resulttext .= '<li>'.&mt("$choices{$item} set to default").'</li>'; |
} else { |
} else { |
$resulttext .= '<li>'.&mt("$choices{$item} set to [_1]",$confhash->{$role}{$item}).'</li>'; |
my $newitem = $confhash->{$role}{$item}; |
|
if ($key eq 'images') { |
|
$newitem = '<img src="'.$confhash->{$role}{$item}.'" alt="'.$choices{$item}.'" valign="bottom" />'; |
|
} |
|
$resulttext .= '<li>'.&mt("$choices{$item} set to [_1]",$newitem).'</li>'; |
} |
} |
} |
} |
if ($role ne 'login') { |
if ($role ne 'login') { |
Line 1182 sub display_colorchgs {
|
Line 1447 sub display_colorchgs {
|
return $resulttext; |
return $resulttext; |
} |
} |
|
|
|
sub thumb_dimensions { |
|
return ('200','50'); |
|
} |
|
|
|
sub check_dimensions { |
|
my ($inputfile) = @_; |
|
my ($fullwidth,$fullheight); |
|
if ($inputfile =~ m|^[/\w.\-]+$|) { |
|
if (open(PIPE,"identify $inputfile 2>&1 |")) { |
|
my $imageinfo = <PIPE>; |
|
if (!close(PIPE)) { |
|
&Apache::lonnet::logthis("Failed to close PIPE opened to retrieve image information for $inputfile"); |
|
} |
|
chomp($imageinfo); |
|
my ($fullsize) = |
|
($imageinfo =~ /^\Q$inputfile\E\s+\w+\s+(\d+x\d+)/); |
|
if ($fullsize) { |
|
($fullwidth,$fullheight) = split(/x/,$fullsize); |
|
} |
|
} |
|
} |
|
return ($fullwidth,$fullheight); |
|
} |
|
|
|
sub check_configuser { |
|
my ($uhome,$dom,$confname,$servadm) = @_; |
|
my ($configuserok,%currroles); |
|
if ($uhome eq 'no_host') { |
|
srand( time() ^ ($$ + ($$ << 15)) ); # Seed rand. |
|
my $configpass = &LONCAPA::Enrollment::create_password(); |
|
$configuserok = |
|
&Apache::lonnet::modifyuser($dom,$confname,'','internal', |
|
$configpass,'','','','','',undef,$servadm); |
|
} else { |
|
$configuserok = 'ok'; |
|
%currroles = |
|
&Apache::lonnet::get_my_roles($confname,$dom,'userroles'); |
|
} |
|
return ($configuserok,%currroles); |
|
} |
|
|
|
sub check_authorstatus { |
|
my ($dom,$confname,%currroles) = @_; |
|
my $author_ok; |
|
if (!$currroles{':'.$dom.':au'}) { |
|
my $start = time; |
|
my $end = 0; |
|
$author_ok = |
|
&Apache::lonnet::assignrole($dom,$confname,'/'.$dom.'/', |
|
'au',$end,$start); |
|
} else { |
|
$author_ok = 'ok'; |
|
} |
|
return $author_ok; |
|
} |
|
|
|
sub publishlogo { |
|
my ($r,$action,$formname,$dom,$confname,$subdir,$thumbwidth,$thumbheight) = @_; |
|
my ($output,$fname,$logourl); |
|
if ($action eq 'upload') { |
|
$fname=$env{'form.'.$formname.'.filename'}; |
|
chop($env{'form.'.$formname}); |
|
} else { |
|
($fname) = ($formname =~ /([^\/]+)$/); |
|
} |
|
$fname=&Apache::lonnet::clean_filename($fname); |
|
# See if there is anything left |
|
unless ($fname) { return ('error: no uploaded file'); } |
|
$fname="$subdir/$fname"; |
|
my $filepath='/home/'.$confname.'/public_html'; |
|
my ($fnamepath,$file,$fetchthumb); |
|
$file=$fname; |
|
if ($fname=~m|/|) { |
|
($fnamepath,$file) = ($fname =~ m|^(.*)/([^/]+)$|); |
|
} |
|
my @parts=split(/\//,$filepath.'/'.$fnamepath); |
|
my $count; |
|
for ($count=4;$count<=$#parts;$count++) { |
|
$filepath.="/$parts[$count]"; |
|
if ((-e $filepath)!=1) { |
|
mkdir($filepath,02770); |
|
} |
|
} |
|
# Check for bad extension and disallow upload |
|
if ($file=~/\.(\w+)$/ && |
|
(&Apache::loncommon::fileembstyle($1) eq 'hdn')) { |
|
$output = |
|
&mt('Invalid file extension ([_1]) - reserved for LONCAPA use.',$1); |
|
} elsif ($file=~/\.(\w+)$/ && |
|
!defined(&Apache::loncommon::fileembstyle($1))) { |
|
$output = &mt('Unrecognized file extension ([_1]) - rename the file with a proper extension and re-upload.',$1); |
|
} elsif ($file=~/\.(\d+)\.(\w+)$/) { |
|
$output = &mt('File name not allowed a rename the file to remove the number immediately before the file extension([_1]) and re-upload.',$2); |
|
} elsif (-d "$filepath/$file") { |
|
$output = &mt('File name is a directory name - rename the file and re-upload'); |
|
} else { |
|
my $source = $filepath.'/'.$file; |
|
my $logfile; |
|
if (!open($logfile,">>$source".'.log')) { |
|
return (&mt('No write permission to Construction Space')); |
|
} |
|
print $logfile |
|
"\n================= Publish ".localtime()." ================\n". |
|
$env{'user.name'}.':'.$env{'user.domain'}."\n"; |
|
# Save the file |
|
if (!open(FH,'>'.$source)) { |
|
&Apache::lonnet::logthis('Failed to create '.$source); |
|
return (&mt('Failed to create file')); |
|
} |
|
if ($action eq 'upload') { |
|
if (!print FH ($env{'form.'.$formname})) { |
|
&Apache::lonnet::logthis('Failed to write to '.$source); |
|
return (&mt('Failed to write file')); |
|
} |
|
} else { |
|
my $original = &Apache::lonnet::filelocation('',$formname); |
|
if(!copy($original,$source)) { |
|
&Apache::lonnet::logthis('Failed to copy '.$original.' to '.$source); |
|
return (&mt('Failed to write file')); |
|
} |
|
} |
|
close(FH); |
|
chmod(0660, $source); # Permissions to rw-rw---. |
|
|
|
my $docroot=$r->dir_config('lonDocRoot'); |
|
my $targetdir=$docroot.'/res/'.$dom.'/'.$confname .'/'.$fnamepath; |
|
my $copyfile=$targetdir.'/'.$file; |
|
|
|
my @parts=split(/\//,$targetdir); |
|
my $path="/$parts[1]/$parts[2]/$parts[3]/$parts[4]"; |
|
for (my $count=5;$count<=$#parts;$count++) { |
|
$path.="/$parts[$count]"; |
|
if (!-e $path) { |
|
print $logfile "\nCreating directory ".$path; |
|
mkdir($path,02770); |
|
} |
|
} |
|
my $versionresult; |
|
if (-e $copyfile) { |
|
$versionresult = &logo_versioning($targetdir,$file,$logfile); |
|
} else { |
|
$versionresult = 'ok'; |
|
} |
|
if ($versionresult eq 'ok') { |
|
if (copy($source,$copyfile)) { |
|
print $logfile "\nCopied original source to ".$copyfile."\n"; |
|
$output = 'ok'; |
|
&write_metadata($dom,$confname,$formname,$targetdir,$file,$logfile); |
|
$logourl = '/res/'.$dom.'/'.$confname.'/'.$fname; |
|
} else { |
|
print $logfile "\nUnable to write ".$copyfile.':'.$!."\n"; |
|
$output = &mt('Failed to copy file to RES space').", $!"; |
|
} |
|
if (($thumbwidth =~ /^\d+$/) && ($thumbheight =~ /^\d+$/)) { |
|
my $inputfile = $filepath.'/'.$file; |
|
my $outfile = $filepath.'/'.'tn-'.$file; |
|
my ($fullwidth,$fullheight) = &check_dimensions($inputfile); |
|
if ($fullwidth ne '' && $fullheight ne '') { |
|
if ($fullwidth > $thumbwidth && $fullheight > $thumbheight) { |
|
my $thumbsize = $thumbwidth.'x'.$thumbheight; |
|
system("convert -sample $thumbsize $inputfile $outfile"); |
|
chmod(0660, $filepath.'/tn-'.$file); |
|
if (-e $outfile) { |
|
my $copyfile=$targetdir.'/tn-'.$file; |
|
if (copy($outfile,$copyfile)) { |
|
print $logfile "\nCopied source to ".$copyfile."\n"; |
|
&write_metadata($dom,$confname,$formname, |
|
$targetdir,'tn-'.$file,$logfile); |
|
} else { |
|
print $logfile "\nUnable to write ".$copyfile. |
|
':'.$!."\n"; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
$output = $versionresult; |
|
} |
|
} |
|
return ($output,$logourl); |
|
} |
|
|
|
sub logo_versioning { |
|
my ($targetdir,$file,$logfile) = @_; |
|
my $target = $targetdir.'/'.$file; |
|
my ($maxversion,$fn,$extn,$output); |
|
$maxversion = 0; |
|
if ($file =~ /^(.+)\.(\w+)$/) { |
|
$fn=$1; |
|
$extn=$2; |
|
} |
|
opendir(DIR,$targetdir); |
|
while (my $filename=readdir(DIR)) { |
|
if ($filename=~/\Q$fn\E\.(\d+)\.\Q$extn\E$/) { |
|
$maxversion=($1>$maxversion)?$1:$maxversion; |
|
} |
|
} |
|
$maxversion++; |
|
print $logfile "\nCreating old version ".$maxversion."\n"; |
|
my $copyfile=$targetdir.'/'.$fn.'.'.$maxversion.'.'.$extn; |
|
if (copy($target,$copyfile)) { |
|
print $logfile "Copied old target to ".$copyfile."\n"; |
|
$copyfile=$copyfile.'.meta'; |
|
if (copy($target.'.meta',$copyfile)) { |
|
print $logfile "Copied old target metadata to ".$copyfile."\n"; |
|
$output = 'ok'; |
|
} else { |
|
print $logfile "Unable to write metadata ".$copyfile.':'.$!."\n"; |
|
$output = &mt('Failed to copy old meta').", $!, "; |
|
} |
|
} else { |
|
print $logfile "Unable to write ".$copyfile.':'.$!."\n"; |
|
$output = &mt('Failed to copy old target').", $!, "; |
|
} |
|
return $output; |
|
} |
|
|
|
sub write_metadata { |
|
my ($dom,$confname,$formname,$targetdir,$file,$logfile) = @_; |
|
my (%metadatafields,%metadatakeys,$output); |
|
$metadatafields{'title'}=$formname; |
|
$metadatafields{'creationdate'}=time; |
|
$metadatafields{'lastrevisiondate'}=time; |
|
$metadatafields{'copyright'}='public'; |
|
$metadatafields{'modifyinguser'}=$env{'user.name'}.':'. |
|
$env{'user.domain'}; |
|
$metadatafields{'authorspace'}=$confname.':'.$dom; |
|
$metadatafields{'domain'}=$dom; |
|
{ |
|
print $logfile "\nWrite metadata file for ".$targetdir.'/'.$file; |
|
my $mfh; |
|
unless (open($mfh,'>'.$targetdir.'/'.$file.'.meta')) { |
|
$output = &mt('Could not write metadata'); |
|
} |
|
foreach (sort keys %metadatafields) { |
|
unless ($_=~/\./) { |
|
my $unikey=$_; |
|
$unikey=~/^([A-Za-z]+)/; |
|
my $tag=$1; |
|
$tag=~tr/A-Z/a-z/; |
|
print $mfh "\n\<$tag"; |
|
foreach (split(/\,/,$metadatakeys{$unikey})) { |
|
my $value=$metadatafields{$unikey.'.'.$_}; |
|
$value=~s/\"/\'\'/g; |
|
print $mfh ' '.$_.'="'.$value.'"'; |
|
} |
|
print $mfh '>'. |
|
&HTML::Entities::encode($metadatafields{$unikey},'<>&"') |
|
.'</'.$tag.'>'; |
|
} |
|
} |
|
$output = 'ok'; |
|
print $logfile "\nWrote metadata"; |
|
close($mfh); |
|
} |
|
} |
|
|
|
sub check_switchserver { |
|
my ($dom,$confname) = @_; |
|
my ($allowed,$switchserver); |
|
my $home = &Apache::lonnet::homeserver($confname,$dom); |
|
if ($home eq 'no_host') { |
|
$home = &Apache::lonnet::domain($dom,'primary'); |
|
} |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
|
if (!$allowed) { |
|
$switchserver='<a href="/adm/switchserver?otherserver='.$home.'&role=dc./'.$dom.'/">'.&mt('Switch Server').'</a>'; |
|
} |
|
return $switchserver; |
|
} |
|
|
sub modify_quotas { |
sub modify_quotas { |
my ($dom,%domconfig) = @_; |
my ($dom,%domconfig) = @_; |
my ($resulttext,%changes); |
my ($resulttext,%changes); |
Line 1193 sub modify_quotas {
|
Line 1731 sub modify_quotas {
|
$formhash{$1} = $env{$key}; |
$formhash{$1} = $env{$key}; |
} |
} |
} |
} |
|
$formhash{'default'} = $env{'form.defaultquota'}; |
if (ref($domconfig{'quotas'}) eq 'HASH') { |
if (ref($domconfig{'quotas'}) eq 'HASH') { |
foreach my $key (keys(%{$domconfig{'quotas'}})) { |
foreach my $key (keys(%{$domconfig{'quotas'}})) { |
if (exists($formhash{$key})) { |
if (exists($formhash{$key})) { |
Line 1227 sub modify_quotas {
|
Line 1766 sub modify_quotas {
|
$resulttext = &mt('No changes made to default quotas'); |
$resulttext = &mt('No changes made to default quotas'); |
} |
} |
} else { |
} else { |
$resulttext = &mt('An error occurred: [_1]',$putresult); |
$resulttext = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
} |
} |
return $resulttext; |
return $resulttext; |
} |
} |
Line 1245 sub modify_autoenroll {
|
Line 1785 sub modify_autoenroll {
|
my %title = ( run => 'Auto-enrollment active', |
my %title = ( run => 'Auto-enrollment active', |
sender => 'Sender for notification messages'); |
sender => 'Sender for notification messages'); |
my @offon = ('off','on'); |
my @offon = ('off','on'); |
|
my $sender_uname = $env{'form.sender_uname'}; |
|
my $sender_domain = $env{'form.sender_domain'}; |
|
if ($sender_domain eq '') { |
|
$sender_uname = ''; |
|
} elsif ($sender_uname eq '') { |
|
$sender_domain = ''; |
|
} |
my %autoenrollhash = ( |
my %autoenrollhash = ( |
autoenroll => { run => $env{'form.autoenroll_run'}, |
autoenroll => { run => $env{'form.autoenroll_run'}, |
sender_uname => $env{'form.sender_uname'}, |
sender_uname => $sender_uname, |
sender_domain => $env{'form.sender_domain'}, |
sender_domain => $sender_domain, |
|
|
} |
} |
); |
); |
Line 1261 sub modify_autoenroll {
|
Line 1808 sub modify_autoenroll {
|
} |
} |
} elsif ($autorun) { |
} elsif ($autorun) { |
if ($env{'form.autoenroll_run'} ne '1') { |
if ($env{'form.autoenroll_run'} ne '1') { |
$changes{'run'} = 1; |
$changes{'run'} = 1; |
} |
} |
} |
} |
if (exists($currautoenroll{sender_uname})) { |
if ($currautoenroll{'sender_uname'} ne $sender_uname) { |
if ($currautoenroll{'sender_uname'} ne $env{'form.sender_uname'}) { |
|
$changes{'sender'} = 1; |
|
} |
|
} else { |
|
$changes{'sender'} = 1; |
$changes{'sender'} = 1; |
} |
} |
if (exists($currautoenroll{sender_domain})) { |
if ($currautoenroll{'sender_domain'} ne $sender_domain) { |
if ($currautoenroll{'sender_domain'} ne $env{'form.sender_domain'}) { |
|
$changes{'sender'} = 1; |
|
} |
|
} else { |
|
$changes{'sender'} = 1; |
$changes{'sender'} = 1; |
} |
} |
if (keys(%changes) > 0) { |
if (keys(%changes) > 0) { |
Line 1284 sub modify_autoenroll {
|
Line 1823 sub modify_autoenroll {
|
$resulttext .= '<li>'.&mt("$title{'run'} set to $offon[$env{'form.autoenroll_run'}]").'</li>'; |
$resulttext .= '<li>'.&mt("$title{'run'} set to $offon[$env{'form.autoenroll_run'}]").'</li>'; |
} |
} |
if ($changes{'sender'}) { |
if ($changes{'sender'}) { |
$resulttext .= '<li>'.&mt("$title{'sender'} set to [_1]",$env{'form.sender_uname'}.':'.$env{'form.sender_domain'}).'</li>'; |
if ($sender_uname eq '' || $sender_domain eq '') { |
|
$resulttext .= '<li>'.&mt("$title{'sender'} set to default (course owner).").'</li>'; |
|
} else { |
|
$resulttext .= '<li>'.&mt("$title{'sender'} set to [_1]",$sender_uname.':'.$sender_domain).'</li>'; |
|
} |
} |
} |
$resulttext .= '</ul>'; |
$resulttext .= '</ul>'; |
} else { |
} else { |
$resulttext = &mt('No changes made to auto-enrollment settings'); |
$resulttext = &mt('No changes made to auto-enrollment settings'); |
} |
} |
} else { |
} else { |
$resulttext = &mt('An error occurred: [_1]',$putresult); |
$resulttext = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
} |
} |
return $resulttext; |
return $resulttext; |
} |
} |
Line 1312 sub modify_autoupdate {
|
Line 1856 sub modify_autoupdate {
|
my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom); |
my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom); |
my %fieldtitles = &Apache::lonlocal::texthash ( |
my %fieldtitles = &Apache::lonlocal::texthash ( |
id => 'Student/Employee ID', |
id => 'Student/Employee ID', |
email => 'E-mail address', |
permanentemail => 'E-mail address', |
lastname => 'Last Name', |
lastname => 'Last Name', |
firstname => 'First Name', |
firstname => 'First Name', |
middlename => 'Middle Name', |
middlename => 'Middle Name', |
Line 1410 sub modify_autoupdate {
|
Line 1954 sub modify_autoupdate {
|
$resulttext = &mt('No changes made to autoupdates'); |
$resulttext = &mt('No changes made to autoupdates'); |
} |
} |
} else { |
} else { |
$resulttext = &mt('An error occurred: [_1]',$putresult); |
$resulttext = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
} |
} |
return $resulttext; |
return $resulttext; |
} |
} |
|
|
1; |
sub modify_directorysrch { |
|
my ($dom,%domconfig) = @_; |
|
my ($resulttext,%changes); |
|
my %currdirsrch; |
|
if (ref($domconfig{'directorysrch'}) eq 'HASH') { |
|
foreach my $key (keys(%{$domconfig{'directorysrch'}})) { |
|
$currdirsrch{$key} = $domconfig{'directorysrch'}{$key}; |
|
} |
|
} |
|
my %title = ( available => 'Directory search available', |
|
cansearch => 'Users permitted to search', |
|
localonly => 'Other domains can search', |
|
searchby => 'Search types', |
|
searchtypes => 'Search latitude'); |
|
my @offon = ('off','on'); |
|
my @otherdoms = ('Yes','No'); |
|
|
|
my @searchtypes = &Apache::loncommon::get_env_multiple('form.searchtypes'); |
|
my @cansearch = &Apache::loncommon::get_env_multiple('form.cansearch'); |
|
my @searchby = &Apache::loncommon::get_env_multiple('form.searchby'); |
|
|
|
if (ref($currdirsrch{'cansearch'}) eq 'ARRAY') { |
|
foreach my $type (@{$currdirsrch{'cansearch'}}) { |
|
if (!grep(/^\Q$type\E$/,@cansearch)) { |
|
push(@{$changes{'cansearch'}},$type); |
|
} |
|
} |
|
foreach my $type (@cansearch) { |
|
if (!grep(/^\Q$type\E$/,@{$currdirsrch{'cansearch'}})) { |
|
push(@{$changes{'cansearch'}},$type); |
|
} |
|
} |
|
} else { |
|
push(@{$changes{'cansearch'}},@cansearch); |
|
} |
|
|
|
if (ref($currdirsrch{'searchby'}) eq 'ARRAY') { |
|
foreach my $by (@{$currdirsrch{'searchby'}}) { |
|
if (!grep(/^\Q$by\E$/,@searchby)) { |
|
push(@{$changes{'searchby'}},$by); |
|
} |
|
} |
|
foreach my $by (@searchby) { |
|
if (!grep(/^\Q$by\E$/,@{$currdirsrch{'searchby'}})) { |
|
push(@{$changes{'searchby'}},$by); |
|
} |
|
} |
|
} else { |
|
push(@{$changes{'searchby'}},@searchby); |
|
} |
|
|
|
if (ref($currdirsrch{'searchtypes'}) eq 'ARRAY') { |
|
foreach my $type (@{$currdirsrch{'searchtypes'}}) { |
|
if (!grep(/^\Q$type\E$/,@searchtypes)) { |
|
push(@{$changes{'searchtypes'}},$type); |
|
} |
|
} |
|
foreach my $type (@searchtypes) { |
|
if (!grep(/^\Q$type\E$/,@{$currdirsrch{'searchtypes'}})) { |
|
push(@{$changes{'searchtypes'}},$type); |
|
} |
|
} |
|
} else { |
|
if (exists($currdirsrch{'searchtypes'})) { |
|
foreach my $type (@searchtypes) { |
|
if ($type ne $currdirsrch{'searchtypes'}) { |
|
push(@{$changes{'searchtypes'}},$type); |
|
} |
|
} |
|
if (!grep(/^\Q$currdirsrch{'searchtypes'}\E/,@searchtypes)) { |
|
push(@{$changes{'searchtypes'}},$currdirsrch{'searchtypes'}); |
|
} |
|
} else { |
|
push(@{$changes{'searchtypes'}},@searchtypes); |
|
} |
|
} |
|
|
|
my %dirsrch_hash = ( |
|
directorysrch => { available => $env{'form.dirsrch_available'}, |
|
cansearch => \@cansearch, |
|
localonly => $env{'form.dirsrch_localonly'}, |
|
searchby => \@searchby, |
|
searchtypes => \@searchtypes, |
|
} |
|
); |
|
my $putresult = &Apache::lonnet::put_dom('configuration',\%dirsrch_hash, |
|
$dom); |
|
if ($putresult eq 'ok') { |
|
if (exists($currdirsrch{'available'})) { |
|
if ($currdirsrch{'available'} ne $env{'form.dirsrch_available'}) { |
|
$changes{'available'} = 1; |
|
} |
|
} else { |
|
if ($env{'form.dirsrch_available'} eq '1') { |
|
$changes{'available'} = 1; |
|
} |
|
} |
|
if (exists($currdirsrch{'localonly'})) { |
|
if ($currdirsrch{'localonly'} ne $env{'form.dirsrch_localonly'}) { |
|
$changes{'localonly'} = 1; |
|
} |
|
} else { |
|
if ($env{'form.dirsrch_localonly'} eq '1') { |
|
$changes{'localonly'} = 1; |
|
} |
|
} |
|
if (keys(%changes) > 0) { |
|
$resulttext = &mt('Changes made:').'<ul>'; |
|
if ($changes{'available'}) { |
|
$resulttext .= '<li>'.&mt("$title{'available'} set to: $offon[$env{'form.dirsrch_available'}]").'</li>'; |
|
} |
|
if ($changes{'localonly'}) { |
|
$resulttext .= '<li>'.&mt("$title{'localonly'} set to: $otherdoms[$env{'form.dirsrch_localonly'}]").'</li>'; |
|
} |
|
|
|
if (ref($changes{'cansearch'}) eq 'ARRAY') { |
|
my ($othertitle,$usertypes,$types) = &sorted_inst_types($dom); |
|
my $chgtext; |
|
foreach my $type (@cansearch) { |
|
if (defined($usertypes->{$type})) { |
|
$chgtext .= $usertypes->{$type}.'; '; |
|
} |
|
} |
|
if (grep(/^default$/,@cansearch)) { |
|
$chgtext .= $othertitle; |
|
} else { |
|
$chgtext =~ s/\; $//; |
|
} |
|
$resulttext .= '<li>'.&mt("$title{'cansearch'} ([_1]) set to: [_2]",$dom,$chgtext).'</li>'; |
|
} |
|
if (ref($changes{'searchby'}) eq 'ARRAY') { |
|
my ($searchtitles,$titleorder) = &sorted_searchtitles(); |
|
my $chgtext; |
|
foreach my $type (@{$titleorder}) { |
|
if (grep(/^\Q$type\E$/,@searchby)) { |
|
if (defined($searchtitles->{$type})) { |
|
$chgtext .= $searchtitles->{$type}.'; '; |
|
} |
|
} |
|
} |
|
$chgtext =~ s/\; $//; |
|
$resulttext .= '<li>'.&mt("$title{'searchby'} set to: [_1]",$chgtext).'</li>'; |
|
} |
|
if (ref($changes{'searchtypes'}) eq 'ARRAY') { |
|
my ($srchtypes_desc,$srchtypeorder) = &sorted_searchtypes(); |
|
my $chgtext; |
|
foreach my $type (@{$srchtypeorder}) { |
|
if (grep(/^\Q$type\E$/,@searchtypes)) { |
|
if (defined($srchtypes_desc->{$type})) { |
|
$chgtext .= $srchtypes_desc->{$type}.'; '; |
|
} |
|
} |
|
} |
|
$chgtext =~ s/\; $//; |
|
$resulttext .= '<li>'.&mt("$title{'searchtypes'} set to: \"[_1]\"",$chgtext).'</li>'; |
|
} |
|
$resulttext .= '</ul>'; |
|
} else { |
|
$resulttext = &mt('No changes made to institution directory search settings'); |
|
} |
|
} else { |
|
$resulttext = '<span class="LC_error">'. |
|
&mt('An error occurred: [_1]',$putresult).'</span>'; |
|
} |
|
return $resulttext; |
|
} |
|
|
|
1; |