version 1.11, 2007/04/12 20:33:31
|
version 1.25, 2007/08/26 15:31:03
|
Line 67 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 106 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 |
Line 133 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') { |
Line 145 sub handler {
|
Line 176 sub handler {
|
</td> |
</td> |
</tr> |
</tr> |
</table>'); |
</table>'); |
&print_footer($r,$phase,'process','Store changes'); |
&print_footer($r,$phase,'process','Save changes'); |
} |
} |
return OK; |
return OK; |
} |
} |
Line 164 sub process_changes {
|
Line 195 sub process_changes {
|
$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; |
} |
} |
Line 173 sub print_config_box {
|
Line 206 sub print_config_box {
|
$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 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 251 sub print_config_box {
|
Line 287 sub print_config_box {
|
$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 522 sub display_color_options {
|
Line 560 sub display_color_options {
|
'</span></td></tr>'; |
'</span></td></tr>'; |
my $switchserver = &check_switchserver($dom,$confname); |
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'.$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}; |
} |
} |
Line 550 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 559 sub display_color_options {
|
Line 599 sub display_color_options {
|
my $output = '/home/httpd/html/'.$imgdir.'/tn-'.$filename; |
my $output = '/home/httpd/html/'.$imgdir.'/tn-'.$filename; |
if (!-e $output) { |
if (!-e $output) { |
my ($width,$height) = &thumb_dimensions(); |
my ($width,$height) = &thumb_dimensions(); |
my $size = $width.'x'.$height; |
my ($fullwidth,$fullheight) = &check_dimensions($input); |
system("convert -sample $size $input $output"); |
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); |
$showfile = &Apache::loncommon::lonhttpdurl($showfile); |
$fullsize = &Apache::loncommon::lonhttpdurl($imgfile); |
$fullsize = &Apache::loncommon::lonhttpdurl($imgfile); |
Line 572 sub display_color_options {
|
Line 617 sub display_color_options {
|
if (!$is_custom->{$img}) { |
if (!$is_custom->{$img}) { |
$datatable .= &mt('Default in use:').'<br />'; |
$datatable .= &mt('Default in use:').'<br />'; |
} |
} |
|
if ($img_import) { |
|
$datatable.= '<input type="hidden" name="'.$role.'_import_'.$img.'" value="'.$imgfile.'" />'; |
|
} |
$datatable.= '<a href="'.$fullsize.'" target="_blank"><img src="'. |
$datatable.= '<a href="'.$fullsize.'" target="_blank"><img src="'. |
$showfile.'" alt="'.$alt_text->{$img}. |
$showfile.'" alt="'.$alt_text->{$img}. |
'" border="0" /></a></td>'; |
'" border="0" /></a></td>'; |
Line 694 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"':''; |
Line 720 sub print_quotas {
|
Line 758 sub print_quotas {
|
'" size="5" /> Mb</span></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 733 sub print_quotas {
|
Line 770 sub print_quotas {
|
$datatable .= '<tr'.$css_class.'>'. |
$datatable .= '<tr'.$css_class.'>'. |
'<td>'.&mt($othertitle).'</td>'. |
'<td>'.&mt($othertitle).'</td>'. |
'<td class="LC_right_item"><span class="LC_nobreak">'. |
'<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</span></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 764 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">'. |
Line 772 sub print_autoenroll {
|
Line 816 sub print_autoenroll {
|
'<input type="radio" name="autoenroll_run"'. |
'<input type="radio" name="autoenroll_run"'. |
$runon.' value="1" />'.&mt('Yes').'</label> '. |
$runon.' value="1" />'.&mt('Yes').'</label> '. |
'<label><input type="radio" name="autoenroll_run"'. |
'<label><input type="radio" name="autoenroll_run"'. |
$runoff.'value="0" />'.&mt('No').'</label></span></td>'. |
$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"><span class="LC_nobreak">'. |
'</td><td class="LC_right_item"><span class="LC_nobreak">'. |
Line 822 sub print_autoupdate {
|
Line 866 sub print_autoupdate {
|
$classlistsoff.'value="0" />'.&mt('No').'</label></span></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 859 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 1006 sub modify_rolecolors {
|
Line 1218 sub modify_rolecolors {
|
|
|
sub modify_colors { |
sub modify_colors { |
my ($r,$dom,$confname,$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; |
Line 1014 sub modify_colors {
|
Line 1226 sub modify_colors {
|
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 1034 sub modify_colors {
|
Line 1251 sub modify_colors {
|
} |
} |
my ($width,$height) = &thumb_dimensions(); |
my ($width,$height) = &thumb_dimensions(); |
foreach my $img (@images) { |
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 $error; |
my $error; |
if ($configuserok eq 'ok') { |
if ($configuserok eq 'ok') { |
if ($switchserver) { |
if ($switchserver) { |
$error = &mt("Upload of image [_1] for $role page(s) is not permitted to this server: [_2]",$img,$switchserver); |
$error = &mt("Upload of [_1] image for $role page(s) is not permitted to this server: [_2]",$choices{$img},$switchserver); |
} else { |
} else { |
if ($author_ok eq 'ok') { |
if ($author_ok eq 'ok') { |
my ($result,$logourl) = |
my ($result,$logourl) = |
Line 1046 sub modify_colors {
|
Line 1272 sub modify_colors {
|
$dom,$confname,$img,$width,$height); |
$dom,$confname,$img,$width,$height); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$confhash->{$role}{$img} = $logourl; |
$confhash->{$role}{$img} = $logourl; |
$changes{$role}{$img} = 1; |
$changes{$role}{'images'}{$img} = 1; |
} else { |
} else { |
$error = &mt("Upload of image [_1] for $role page(s) failed because an error occurred publishing the file in RES space. Error was: [_2].",$img,$result); |
$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 { |
} else { |
$error = &mt("Upload of image [_1] 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].",$img,$confname,$dom,$author_ok); |
$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 { |
$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,$confname,$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); |
} |
} |
if ($error) { |
if ($error) { |
&Apache::lonnet::logthis($error); |
&Apache::lonnet::logthis($error); |
Line 1073 sub modify_colors {
|
Line 1299 sub modify_colors {
|
$dom,$confname,$img,$width,$height); |
$dom,$confname,$img,$width,$height); |
if ($result eq 'ok') { |
if ($result eq 'ok') { |
$confhash->{$role}{$img} = $logourl; |
$confhash->{$role}{$img} = $logourl; |
|
$changes{$role}{'images'}{$img} = 1; |
} |
} |
} |
} |
} |
} |
Line 1086 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 { |
if ($confhash->{$role}{$img} eq '') { |
if ($confhash->{$role}{$img} eq '') { |
$confhash->{$role}{$img} = $domconfig->{$role}{$img}; |
$confhash->{$role}{$img} = $domconfig->{$role}{$img}; |
Line 1095 sub modify_colors {
|
Line 1322 sub modify_colors {
|
} 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 1157 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 1194 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 1220 sub thumb_dimensions {
|
Line 1451 sub thumb_dimensions {
|
return ('200','50'); |
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 { |
sub check_configuser { |
my ($uhome,$dom,$confname,$servadm) = @_; |
my ($uhome,$dom,$confname,$servadm) = @_; |
my ($configuserok,%currroles); |
my ($configuserok,%currroles); |
Line 1352 $env{'user.name'}.':'.$env{'user.domain'
|
Line 1603 $env{'user.name'}.':'.$env{'user.domain'
|
if (($thumbwidth =~ /^\d+$/) && ($thumbheight =~ /^\d+$/)) { |
if (($thumbwidth =~ /^\d+$/) && ($thumbheight =~ /^\d+$/)) { |
my $inputfile = $filepath.'/'.$file; |
my $inputfile = $filepath.'/'.$file; |
my $outfile = $filepath.'/'.'tn-'.$file; |
my $outfile = $filepath.'/'.'tn-'.$file; |
my $thumbsize = $thumbwidth.'x'.$thumbheight; |
my ($fullwidth,$fullheight) = &check_dimensions($inputfile); |
system("convert -sample $thumbsize $inputfile $outfile"); |
if ($fullwidth ne '' && $fullheight ne '') { |
chmod(0660, $filepath.'/tn-'.$file); |
if ($fullwidth > $thumbwidth && $fullheight > $thumbheight) { |
if (-e $outfile) { |
my $thumbsize = $thumbwidth.'x'.$thumbheight; |
my $copyfile=$targetdir.'/tn-'.$file; |
system("convert -sample $thumbsize $inputfile $outfile"); |
if (copy($outfile,$copyfile)) { |
chmod(0660, $filepath.'/tn-'.$file); |
print $logfile "\nCopied source to ".$copyfile."\n"; |
if (-e $outfile) { |
&write_metadata($dom,$confname,$formname,$targetdir, |
my $copyfile=$targetdir.'/tn-'.$file; |
'tn-'.$file,$logfile); |
if (copy($outfile,$copyfile)) { |
} else { |
print $logfile "\nCopied source to ".$copyfile."\n"; |
print $logfile "\nUnable to write ".$copyfile.':'.$!."\n"; |
&write_metadata($dom,$confname,$formname, |
|
$targetdir,'tn-'.$file,$logfile); |
|
} else { |
|
print $logfile "\nUnable to write ".$copyfile. |
|
':'.$!."\n"; |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
Line 1474 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 1527 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 1543 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 1566 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 { |
Line 1595 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 1699 sub modify_autoupdate {
|
Line 1960 sub modify_autoupdate {
|
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; |