--- loncom/homework/lonhomework.pm 2008/01/21 17:20:45 1.290
+++ loncom/homework/lonhomework.pm 2009/03/04 16:00:14 1.304
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.290 2008/01/21 17:20:45 www Exp $
+# $Id: lonhomework.pm,v 1.304 2009/03/04 16:00:14 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -209,58 +209,6 @@ sub proctor_checked_in {
return 0;
}
-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;
-}
-
sub check_slot_access {
my ($id,$type)=@_;
@@ -307,7 +255,7 @@ sub check_slot_access {
&Apache::lonhomework::showhash(%slot);
if ($slot{'starttime'} < time &&
$slot{'endtime'} > time &&
- &check_ip_acc($slot{'ip'})) {
+ &Apache::loncommon::check_ip_acc($slot{'ip'})) {
&Apache::lonxml::debug("$slot is good");
$slotstatus='NEEDS_CHECKIN';
$returned_slot=\%slot;
@@ -421,7 +369,7 @@ sub check_access {
#if ($env{'request.state'} ne "construct" && $symb ne '') {
if ($env{'request.state'} ne "construct") {
my $idacc = &Apache::lonnet::EXT("resource.$id.acc");
- my $allowed=&check_ip_acc($idacc);
+ my $allowed=&Apache::loncommon::check_ip_acc($idacc);
if (!$allowed && ($Apache::lonhomework::browse ne 'F')) {
$status='INVALID_ACCESS';
$date=&mt("can not be accessed from your location.");
@@ -923,20 +871,17 @@ sub editxmlmode {
&renderpage($request,$file);
} else {
my ($rows,$cols) = &Apache::edit::textarea_sizes(\$problem);
- my $xml_help = '
'.
- &Apache::loncommon::helpLatexCheatsheet("Problem_Editor_XML_Index",
- "Problem Editing Help").
- ' | '.
- &Apache::loncommon::help_open_menu(undef,undef,5,'Authoring').
- ' |
';
if ($cols > 80) { $cols = 80; }
if ($cols < 70) { $cols = 70; }
if ($rows < 20) { $rows = 20; }
my $js =
&Apache::edit::js_change_detection().
&Apache::loncommon::resize_textarea_js().
- &Apache::structuretags::setmode_javascript();
+ &Apache::structuretags::setmode_javascript().
+ &Apache::lonhtmlcommon::dragmath_js("EditMathPopup");
my $only_body = ($env{'environment.remote'} eq 'off')? 0 : 1;
+ my $dragmath_button =
+ &Apache::lonhtmlcommon::dragmath_button("LC_editxmltext",1);
my $start_page =
&Apache::loncommon::start_page(&mt("EditXML [_1]",$file),$js,
{'no_auto_mt_title' => 1,
@@ -954,15 +899,17 @@ sub editxmlmode {
+
+ '.$dragmath_button.'
@@ -1079,8 +1026,10 @@ sub get_template_list {
}
my @files = glob($Apache::lonnet::perlvar{'lonIncludes'}.
'/templates/*.'.$glob_extension);
- @files = map {[$_,&mt(&Apache::lonnet::metadata($_, 'title'))]} (@files);
- @files = sort {$a->[1] cmp $b->[1]} (@files);
+ @files = map {[$_,&mt(&Apache::lonnet::metadata($_, 'title')),
+ (&Apache::lonnet::metadata($_, 'category')?&mt(&Apache::lonnet::metadata($_, 'category')):&mt('Miscellaneous')),
+ &mt(&Apache::lonnet::metadata($_, 'help'))]} (@files);
+ @files = sort {$a->[2].$a->[1] cmp $b->[2].$b->[1]} (@files);
my ($midpoint,$seconddiv,$numfiles);
$numfiles = 0;
foreach my $file (@files) {
@@ -1095,16 +1044,28 @@ sub get_template_list {
}
}
my $count = 0;
+ my $currentcategory='';
foreach my $file (@files) {
next if ($file->[1] !~ /\S/);
+ if ($file->[2] ne $currentcategory) {
+ $currentcategory=$file->[2];
+ if ((!$seconddiv) && ($count >= $midpoint)) {
+ $result .= '
'."\n".''."\n";
+ $seconddiv = 1;
+ }
+ $result.='
'.$currentcategory.'
';
+ $count++;
+ }
$result .=
'
'."\n";
- $count ++;
- if ((!$seconddiv) && ($count >= $midpoint)) {
- $result .= ''."\n".''."\n";
- $seconddiv = 1;
+ $file->[1].'';
+ if ($file->[3]) {
+ $result.=&Apache::loncommon::help_open_topic($file->[3]);
}
+ my $filename=$file->[0];
+ $filename=~s/^\/home\/httpd\/html//;
+ $result.='
'.&mt('Example').''."\n";
+ $count ++;
}
if ($numfiles > 0) {
$result .= '
'."\n".''."\n";
@@ -1173,11 +1134,11 @@ sub update_construct_style {
&& !defined($env{'form.newrandomization'})) {
if ((!$env{'form.style_file'} && $env{'construct.style'})
||$env{'form.clear_style_file'}) {
- &Apache::lonnet::delenv('construct\\.style');
+ &Apache::lonnet::delenv('construct.style');
} elsif ($env{'form.style_file'}
&& $env{'construct.style'} ne $env{'form.style_file'}) {
- &Apache::lonnet::appenv('construct.style' =>
- $env{'form.style_file'});
+ &Apache::lonnet::appenv({'construct.style' =>
+ $env{'form.style_file'}});
}
}
}