--- loncom/interface/loncommon.pm 2008/07/08 01:08:57 1.667 +++ loncom/interface/loncommon.pm 2008/09/19 22:54:46 1.679.2.3 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.667 2008/07/08 01:08:57 raeburn Exp $ +# $Id: loncommon.pm,v 1.679.2.3 2008/09/19 22:54:46 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -904,6 +904,9 @@ sub helpLatexCheatsheet { .''. &Apache::loncommon::help_open_topic("Other_Symbols",&mt('Other Symbols'), undef,undef,600) + .''. + &Apache::loncommon::help_open_topic("Authoring_Output_Tags",&mt('Output Tags'), + undef,undef,600) .''; } @@ -913,6 +916,8 @@ sub general_help { $helptopic='Authoring_Intro'; } elsif ($env{'request.role'}=~/^cc/) { $helptopic='Course_Coordination_Intro'; + } elsif ($env{'request.role'}=~/^dc/) { + $helptopic='Domain_Coordination_Intro'; } return $helptopic; } @@ -1502,9 +1507,9 @@ sub create_text_file { $fh = Apache::File->new('>/home/httpd'.$filename); if (! defined($fh)) { $r->log_error("Couldn't open $filename for output $!"); - $r->print("Problems occured in creating the output file. ". - "This error has been logged. ". - "Please alert your LON-CAPA administrator."); + $r->print(&mt('Problems occurred in creating the output file. ' + .'This error has been logged. ' + .'Please alert your LON-CAPA administrator.')); } return ($fh,$filename) } @@ -3742,6 +3747,60 @@ sub blocking_status { ############################################### +sub check_ip_acc { + my ($acc)=@_; + &Apache::lonxml::debug("acc is $acc"); + if (!defined($acc) || $acc =~ /^\s*$/ || $acc =~/^\s*no\s*$/i) { + return 1; + } + my $allowed=0; + my $ip=$env{'request.host'} || $ENV{'REMOTE_ADDR'}; + + my $name; + foreach my $pattern (split(',',$acc)) { + $pattern =~ s/^\s*//; + $pattern =~ s/\s*$//; + if ($pattern =~ /\*$/) { + #35.8.* + $pattern=~s/\*//; + if ($ip =~ /^\Q$pattern\E/) { $allowed=1; } + } elsif ($pattern =~ /(\d+\.\d+\.\d+)\.\[(\d+)-(\d+)\]$/) { + #35.8.3.[34-56] + my $low=$2; + my $high=$3; + $pattern=$1; + if ($ip =~ /^\Q$pattern\E/) { + my $last=(split(/\./,$ip))[3]; + if ($last <=$high && $last >=$low) { $allowed=1; } + } + } elsif ($pattern =~ /^\*/) { + #*.msu.edu + $pattern=~s/\*//; + if (!defined($name)) { + use Socket; + my $netaddr=inet_aton($ip); + ($name)=gethostbyaddr($netaddr,AF_INET); + } + if ($name =~ /\Q$pattern\E$/i) { $allowed=1; } + } elsif ($pattern =~ /\d+\.\d+\.\d+\.\d+/) { + #127.0.0.1 + if ($ip =~ /^\Q$pattern\E/) { $allowed=1; } + } else { + #some.name.com + if (!defined($name)) { + use Socket; + my $netaddr=inet_aton($ip); + ($name)=gethostbyaddr($netaddr,AF_INET); + } + if ($name =~ /\Q$pattern\E$/i) { $allowed=1; } + } + if ($allowed) { last; } + } + return $allowed; +} + +############################################### + =pod =head1 Domain Template Functions @@ -5355,6 +5414,10 @@ hr.LC_edit_problem_divide { height: 3px; border: 0px; } +img.stift{ + border-width:0; + vertical-align:middle; +} END } @@ -6803,12 +6866,16 @@ sub instrule_disallow_msg { $text{'action'} = 'IDs'; } } - $response = &mt("The $text{'item'} you chose $text{'match'} the format of $text{'items'} defined for [_1], but the $text{'item'} $text{'do'} not exist in the institutional directory.",$domdesc).'
'; + $response = &mt("The $text{'item'} you chose $text{'match'} the format of $text{'items'} defined for [_1], but the $text{'item'} $text{'do'} not exist in the institutional directory.",''.$domdesc.'').'
'; if ($mode eq 'upload') { if ($checkitem eq 'username') { $response .= &mt("You will need to modify your upload file so it will include $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}."); } elsif ($checkitem eq 'id') { - $response .= &mt("Either upload a file which includes $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}, or when associating fields with data columns, omit an association for the ID/Student Number field."); + $response .= &mt("Either upload a file which includes $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}, or when associating fields with data columns, omit an association for the Student/Employee ID field."); + } + } elsif ($mode eq 'selfcreate') { + if ($checkitem eq 'id') { + $response .= &mt("You must either choose $text{'action'} with a different format -- $text{'one'} that will not conflict with 'official' institutional $text{'items'}, or leave the ID field blank."); } } else { if ($checkitem eq 'username') { @@ -6838,7 +6905,7 @@ sub sorted_inst_types { my ($usertypes,$order) = &Apache::lonnet::retrieve_inst_usertypes($dom); my $othertitle = &mt('All users'); if ($env{'request.course.id'}) { - $othertitle = 'any'; + $othertitle = &mt('Any users'); } my @types; if (ref($order) eq 'ARRAY') { @@ -6851,9 +6918,6 @@ sub sorted_inst_types { } if (keys(%{$usertypes}) > 0) { $othertitle = &mt('Other users'); - if ($env{'request.course.id'}) { - $othertitle = 'other'; - } } return ($othertitle,$usertypes,\@types); } @@ -7242,7 +7306,6 @@ sub check_for_upload { } } } - my $getpropath = 1; if (($current_disk_usage + $filesize) > $disk_quota){ my $msg = ''. &mt('Unable to upload [_1]. (size = [_2] kilobytes). Disk quota will be exceeded.',''.$fname.'',$filesize).''. @@ -8506,9 +8569,10 @@ sub assign_categories_table { $checked = ' checked="checked" '; } } - $output .= '' - .''.&escape($parent).''; + $output .= ''. + ''.$parent.''. + ''; my $depth = 1; push(@path,$parent); $output .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories); @@ -8574,7 +8638,9 @@ sub assign_category_rows { } $text .= ''; + $item.'"'.$checked.' />'.$name.''. + ''. + ''; if (ref($path) eq 'ARRAY') { push(@{$path},$name); $text .= &assign_category_rows($itemcount,$cats,$deeper,$name,$path,$currcategories); @@ -9257,7 +9323,7 @@ sub init_user_environment { } # Give them a new cookie my $id = ($args->{'robot'} ? 'robot'.$args->{'robot'} - : $now); + : $now.$$.int(rand(10000))); $cookie="$username\_$id\_$domain\_$authhost"; # Initialize roles @@ -9372,9 +9438,11 @@ sub init_user_environment { sub _add_to_env { my ($idf,$env_data,$prefix) = @_; - while (my ($key,$value) = each(%$env_data)) { - $idf->{$prefix.$key} = $value; - $env{$prefix.$key} = $value; + if (ref($env_data) eq 'HASH') { + while (my ($key,$value) = each(%$env_data)) { + $idf->{$prefix.$key} = $value; + $env{$prefix.$key} = $value; + } } }