Diff for /loncom/interface/lonparmset.pm between versions 1.379 and 1.382

version 1.379, 2007/09/03 15:34:12 version 1.382, 2007/10/06 04:32:49
Line 2124  sub crsenv { Line 2124  sub crsenv {
                 if ($name eq 'cloners') {                  if ($name eq 'cloners') {
                     &change_clone($value,\@oldcloner);                      &change_clone($value,\@oldcloner);
                 }                  }
                 # Flush the course logs so course description is immediately updated                  # Update environment and nohist_courseids.db
                 if ($name eq 'description' && defined($value)) {                  if ($name eq 'description' && defined($value)) {
                     &Apache::lonnet::flushcourselogs();                      my %crsinfo = 
                           &Apache::lonnet::courseiddump($dom,'.',1,'.','.',
                                                    $crs,undef,undef,'Course');
                       &Apache::lonnet::appenv('course.'.$env{'request.course.id'}.'.description' => $value);
                       if (ref($crsinfo{$env{'request.course.id'}}) eq 'HASH') {
                           $crsinfo{$env{'request.course.id'}}{'description'} = $value; 
                           my $chome = &Apache::lonnet::homeserver($crs,$dom);
                           my $putresult =
                               &Apache::lonnet::courseidput($dom,\%crsinfo,
                                                            $chome,'notime');
                       }
                 }                  }
             } else {              } else {
                 $setoutput.=&mt('Unable to set').' <b>'.$name.'</b> '.&mt('to').                  $setoutput.=&mt('Unable to set').' <b>'.$name.'</b> '.&mt('to').
Line 2582  sub extractuser { Line 2592  sub extractuser {
     return ($key=~/^$env{'request.course.id'}.\[useropt\:($match_username)\:($match_domain)\]\./);      return ($key=~/^$env{'request.course.id'}.\[useropt\:($match_username)\:($match_domain)\]\./);
 }  }
   
   sub parse_listdata_key {
       my ($key,$listdata) = @_;
       # split into student/section affected, and
       # the realm (folder/resource part and parameter
       my ($student,$realm) = 
    ($key=~/^\Q$env{'request.course.id'}\E\.\[([^\.]+)\]\.(.+)$/);
       # if course wide student would be undefined
       if (!defined($student)) {
    ($realm)=($key=~/^\Q$env{'request.course.id'}\E\.(.+)$/);
       }
       # strip off the .type if it's not the Question type parameter
       if ($realm=~/\.type$/ && !exists($listdata->{$key.'.type'})) {
    $realm=~s/\.type//;
       }
       # split into resource+part and parameter name
       my ($res, $parm) = ($realm=~/^(.*)\.(.*)$/);
       my ($res, $part) = ($res  =~/^(.*)\.(.*)$/);
       return ($student,$res,$part,$parm);
   }
   
 sub listdata {  sub listdata {
     my ($r,$resourcedata,$listdata,$sortorder)=@_;      my ($r,$resourcedata,$listdata,$sortorder)=@_;
 # Start list output  # Start list output
Line 2593  sub listdata { Line 2623  sub listdata {
     $tableopen=0;      $tableopen=0;
     my $foundkeys=0;      my $foundkeys=0;
     my %keyorder=&standardkeyorder();      my %keyorder=&standardkeyorder();
   
     foreach my $thiskey (sort {      foreach my $thiskey (sort {
    my ($astudent,$ares,$apart,$aparm) = &parse_listdata_key($a,$listdata);
    my ($bstudent,$bres,$bpart,$bparm) = &parse_listdata_key($b,$listdata);
   
    # get the numerical order for the param
    $aparm=$keyorder{'parameter_0_'.$aparm};
    $bparm=$keyorder{'parameter_0_'.$bparm};
   
    my $result=0;
   
  if ($sortorder eq 'realmstudent') {   if ($sortorder eq 'realmstudent') {
     my ($astudent,$arealm)=($a=~/^\Q$env{'request.course.id'}\E\.\[([^\.]+)\]\.(.+)\.[^\.]+$/);              if ($ares     ne $bres    ) {
     my ($bstudent,$brealm)=($b=~/^\Q$env{'request.course.id'}\E\.\[([^\.]+)\]\.(.+)\.[^\.]+$/);   $result = ($ares     cmp $bres);
     if (!defined($astudent)) {              } elsif ($astudent ne $bstudent) { 
  ($arealm)=($a=~/^\Q$env{'request.course.id'}\E\.(.+)$/);   $result = ($astudent cmp $bstudent);
       } elsif ($apart    ne $bpart   ) {
    $result = ($apart    cmp $bpart);
     }      }
     if (!defined($bstudent)) {   } else {
  ($brealm)=($b=~/^\Q$env{'request.course.id'}\E\.(.+)$/);      if      ($astudent ne $bstudent) { 
    $result = ($astudent cmp $bstudent);
       } elsif ($ares     ne $bres    ) {
    $result = ($ares     cmp $bres);
       } elsif ($apart    ne $bpart   ) {
    $result = ($apart    cmp $bpart);
     }      }
     $arealm=~s/\.type//;   }
     my ($ares, $aparm) = ($arealm=~/^(.*)\.(.*)$/);      
     $aparm=$keyorder{'parameter_0_'.$aparm};   if (!$result) {
     $brealm=~s/\.type//;              if (defined($aparm) && defined($bparm)) {
     my ($bres, $bparm) = ($brealm=~/^(.*)\.(.*)$/);   $result = ($aparm <=> $bparm);
     $bparm=$keyorder{'parameter_0_'.$bparm};                 } elsif (defined($aparm)) {
     if ($ares eq $bres) {   $result = -1;
  if (defined($aparm) && defined($bparm)) {              } elsif (defined($bparm)) {
     ($aparm <=> $bparm);   $result = 1;
  } elsif (defined($aparm)) {  
     -1;  
  } elsif (defined($bparm)) {  
     1;  
  } else {  
     ($arealm cmp $brealm) || ($astudent cmp $bstudent);  
  }  
     } else {  
  ($arealm cmp $brealm) || ($astudent cmp $bstudent);  
     }      }
  } else {  
     $a cmp $b;  
  }   }
   
    $result;
     } keys %{$listdata}) {      } keys %{$listdata}) {
     
  if ($$listdata{$thiskey.'.type'}) {   if ($$listdata{$thiskey.'.type'}) {
             my $thistype=$$listdata{$thiskey.'.type'};              my $thistype=$$listdata{$thiskey.'.type'};
             if ($$resourcedata{$thiskey.'.type'}) {              if ($$resourcedata{$thiskey.'.type'}) {
Line 3082  where $action is add or drop, and $clone Line 3120  where $action is add or drop, and $clone
 user for whom cloning ability is to be changed in course.   user for whom cloning ability is to be changed in course. 
   
 =cut  =cut
                                                                                               
 ##################################################  ##################################################
 ##################################################  ##################################################
   
 sub extract_cloners {  sub extract_cloners {
     my ($clonelist,$allowclone) = @_;      my ($clonelist,$allowclone) = @_;
     if ($clonelist =~ /,/) {      if ($clonelist =~ /,/) {
         @{$allowclone} = split/,/,$clonelist;          @{$allowclone} = split(/,/,$clonelist);
     } else {      } else {
         $$allowclone[0] = $clonelist;          $$allowclone[0] = $clonelist;
     }      }
Line 3101  sub check_cloners { Line 3139  sub check_cloners {
     my @allowclone = ();      my @allowclone = ();
     &extract_cloners($$clonelist,\@allowclone);      &extract_cloners($$clonelist,\@allowclone);
     foreach my $currclone (@allowclone) {      foreach my $currclone (@allowclone) {
         if (!grep/^\Q$currclone\E$/,@$oldcloner) {          if (!grep(/^\Q$currclone\E$/,@$oldcloner)) {
             if ($currclone eq '*') {              if ($currclone eq '*') {
                 $clean_clonelist .= $currclone.',';                  $clean_clonelist .= $currclone.',';
             } else {              } else {
                 my ($uname,$udom) = split(/:/,$currclone);                  my ($uname,$udom) = split(/:/,$currclone);
                 if ($uname eq '*') {                  if ($uname eq '*') {
                     if ($udom =~ /^$match_domain$/) {                      if ($udom =~ /^$match_domain$/) {
                         my @alldoms = &Apache::lonnet::all_domains();                          if (!&Apache::lonnet::domain($udom)) {
                         if (!grep(/^\Q$udom\E$/,@alldoms)) {  
                             $disallowed{'domain'} .= $currclone.',';                              $disallowed{'domain'} .= $currclone.',';
                         } else {                          } else {
                             $clean_clonelist .= $currclone.',';                              $clean_clonelist .= $currclone.',';
Line 3152  sub change_clone { Line 3189  sub change_clone {
         my @allowclone;          my @allowclone;
         &extract_cloners($clonelist,\@allowclone);          &extract_cloners($clonelist,\@allowclone);
         foreach my $currclone (@allowclone) {          foreach my $currclone (@allowclone) {
             if (!grep/^$currclone$/,@$oldcloner) {              if (!grep(/^$currclone$/,@$oldcloner)) {
                 if ($currclone ne '*') {                  if ($currclone ne '*') {
                     ($uname,$udom) = split/:/,$currclone;                      ($uname,$udom) = split(/:/,$currclone);
                     if ($uname && $udom && $uname ne '*') {                      if ($uname && $udom && $uname ne '*') {
                         if (&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') {                          if (&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') {
                             my %currclonecrs = &Apache::lonnet::dump('environment',$udom,$uname,'cloneable');                              my %currclonecrs = &Apache::lonnet::dump('environment',$udom,$uname,'cloneable');
Line 3172  sub change_clone { Line 3209  sub change_clone {
             }              }
         }          }
         foreach my $oldclone (@$oldcloner) {          foreach my $oldclone (@$oldcloner) {
             if (!grep/^$oldclone$/,@allowclone) {              if (!grep(/^\Q$oldclone\E$/,@allowclone)) {
                 if ($oldclone ne '*') {                  if ($oldclone ne '*') {
                     ($uname,$udom) = split/:/,$oldclone;                      ($uname,$udom) = split(/:/,$oldclone);
                     if ($uname && $udom && $uname ne '*' ) {                      if ($uname && $udom && $uname ne '*' ) {
                         if (&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') {                          if (&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') {
                             my %currclonecrs = &Apache::lonnet::dump('environment',$udom,$uname,'cloneable');                              my %currclonecrs = &Apache::lonnet::dump('environment',$udom,$uname,'cloneable');

Removed from v.1.379  
changed lines
  Added in v.1.382


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>