Diff for /loncom/interface/groupsort.pm between versions 1.68.6.4 and 1.77

version 1.68.6.4, 2013/01/08 03:51:06 version 1.77, 2017/05/30 15:16:38
Line 32  package Apache::groupsort; Line 32  package Apache::groupsort;
   
 use strict;  use strict;
   
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common :http);
 use GDBM_File;  use GDBM_File;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonlocal;  use Apache::lonlocal;
Line 59  sub update_actions_hash { Line 59  sub update_actions_hash {
  $ac++;   $ac++;
     }      }
     # sorting through the actions and changing the global database hash      # sorting through the actions and changing the global database hash
     foreach my $key (sort {$achash{$a}<=>$achash{$b}} (keys %ahash)) {      foreach my $key (sort {$achash{$a}<=>$achash{$b}} (keys(%ahash))) {
  if ($ahash{$key} eq '1') {   if ($ahash{$key} eq '1') {
     $hash->{'store_'.$hash->{'pre_'.$key.'_link'}}=      $hash->{'store_'.$hash->{'pre_'.$key.'_link'}}=
  $hash->{'pre_'.$key.'_title'};   $hash->{'pre_'.$key.'_title'};
Line 152  sub readfromfile { Line 152  sub readfromfile {
   &Apache::lonnet::filelocation('',$env{'form.readfile'}));    &Apache::lonnet::filelocation('',$env{'form.readfile'}));
     } else {      } else {
         my $parser = HTML::TokeParser->new(\$cont);          my $parser = HTML::TokeParser->new(\$cont);
         my ($token,$donechk,%allmaps);          my ($token,$donechk,$allmaps);
           $allmaps = {};
         while ($token = $parser->get_token) {          while ($token = $parser->get_token) {
     if ($token->[0] eq 'S') {      if ($token->[0] eq 'S') {
                 if ($token->[1] eq 'resource') {                  if ($token->[1] eq 'resource') {
     if ($env{'form.recover'}) {      if ($env{'form.recover'}) {
  if ($token->[2]->{'type'} ne 'zombie') { next; }   if ($token->[2]->{'type'} ne 'zombie') { next; }
                         if ($token->[2]->{'src'} =~ /\.(page|sequence)$/) {                          if ($token->[2]->{'src'} =~ /\.(page|sequence)$/) {
                             unless ($donechk) {                              if (($env{'request.course.id'}) &&
                                 $donechk = &get_allmaps(\%allmaps);                                  ($env{'form.readfile'} =~ m{/default(|_\d+)\.(page|sequence)$})) {
                                   unless ($donechk) {
                                       $allmaps = &Apache::loncommon::allmaps_incourse();
                                       $donechk = 1;
                                   }
                             }                              }
                             if ($allmaps{$token->[2]->{'src'}}) { next; }                              if ($allmaps->{$token->[2]->{'src'}}) { next; }
                         }                          }
     } else {      } else {
  if ($token->[2]->{'type'} eq 'zombie') { next; }   if ($token->[2]->{'type'} eq 'zombie') { next; }
Line 187  sub readfromfile { Line 192  sub readfromfile {
     }      }
 }  }
   
 sub get_allmaps {  
     my ($allmaps) = @_;  
     return unless (ref($allmaps) eq 'HASH');  
     if (($env{'form.recover'}) &&  
         ($env{'request.course.id'}) &&  
         ($env{'form.readfile'} =~ m{/default(|_\d+)\.(page|sequence)$})) {  
         my $cid = $env{'request.course.id'};  
         my $cdom = $env{'course.'.$cid.'.domain'};  
         my $cnum = $env{'course.'.$cid.'.num'};  
         my $chome = $env{'course.'.$cid.'.home'};  
         my $lastchange =  
             &Apache::lonnet::get_coursechange($cdom,$cnum);  
         if ($lastchange > $env{'request.course.tied'}) {  
             my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");  
             unless ($ferr) {  
                 &Apache::loncommon::update_content_constraints($cdom,$cnum,  
                                                                $chome,$cid);  
             }  
         }  
         my $navmap = Apache::lonnavmaps::navmap->new();  
         if (defined($navmap)) {  
             foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_map() },1,0,1)) {  
                 $allmaps->{$res->src()} = 1;  
             }  
         }  
     }  
     return 1;  
 }  
   
 # ---------------------------------------------------------------- Main Handler  # ---------------------------------------------------------------- Main Handler
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 227  sub handler { Line 203  sub handler {
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
   # permissions checking
       my ($allowed,$canedit,$context,$cid);
       if ($env{'form.readfile'} eq '') {
           $allowed = 1;
       } elsif ($env{'form.readfile'} =~ m{^/uploaded/($match_domain)/($match_courseid)/}) {
           my ($cdom,$cnum) = ($1,$2);
           $cid = $cdom.'_'.$cnum;
           $context = 'course';
           if ((&Apache::lonnet::allowed('mdc',$cid)) ||
               (&Apache::lonnet::allowed('cev',$cid))) {
               $allowed = 1;
           }
       } elsif ($env{'form.readfile'} =~ m{^/res/}) {
           $context = 'res';
           if ((&Apache::lonnet::allowed('bre',$env{'form.readfile'})) ||
               (&Apache::lonnet::allowed('bro',$env{'form.readfile'}))) {
               $allowed = 1;
           }
       }
       if ($allowed) {
           if ($env{'form.mode'} eq 'rat') {
               if (&Apache::lonnet::allowed('are',$env{'request.role.domain'})) {
                   $canedit = 1;
               }
           } elsif (($env{'form.mode'} eq 'simple') || ($env{'form.mode'} eq '')) {
               if ($context eq 'course') {
                   if (&Apache::lonnet::allowed('mdc',$cid)) {
                       $canedit = 1;
                   }
               } elsif (($env{'request.course.id'}) &&
                        (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) {
                   $canedit = 1;
               } elsif (&Apache::lonnet::allowed('are',$env{'request.role.domain'})) {
                   $canedit = 1;
               }
           }
       }
   
       unless ($allowed) {
           if ($context eq 'course') {
               if ($env{'request.course.id'} eq $cid) {
                   $env{'user.error.msg'}=
                       "/adm/groupsort::0:1:Course environment gone, reinitialize the course";
               } else {
                   $env{'user.error.msg'}=
                       "/adm/groupsort:bre:0:0:Cannot view folder contents";
               }
           } else {
               $env{'user.error.msg'}=
                   "/adm/groupsort:bre:0:0:Cannot view map contents";
           }
           return HTTP_NOT_ACCEPTABLE;
       }
   
 # finish_import looks different for graphical or "simple" RAT  # finish_import looks different for graphical or "simple" RAT
     my $finishimport='';      my $finishimport='';
     my $begincondition='';      my $begincondition='';
     my $endcondition='';      my $endcondition='';
       my $noedit;
       unless ($canedit) {
           if ($context eq 'course') {
               $noedit = &js_escape(&mt('You do not have rights to edit the course.'));
           } else {
               $noedit = &js_escape(&mt('You do not have rights to edit map contents.'));
           }
       }
     if (($env{'form.readfile'}))  {      if (($env{'form.readfile'}))  {
         $begincondition='if (eval("document.forms.groupsort.include"+num+".checked")) {';          $begincondition='if (eval("document.forms.groupsort.include"+num+".checked")) {';
  $endcondition='}';   $endcondition='}';
     }      }
     if ($env{'form.mode'} eq 'simple' || $env{'form.mode'} eq '') {      if ($env{'form.mode'} eq 'simple' || $env{'form.mode'} eq '') {
         $finishimport=(<<ENDSMP);          if ($canedit) {
               $finishimport=(<<ENDSMP);
 function finish_import() {  function finish_import() {
     opener.document.forms.simpleedit.importdetail.value='';      opener.document.forms.simpleedit.importdetail.value='';
     for (var num=0; num<document.forms.groupsort.fnum.value; num++) {      for (var num=0; num<document.forms.groupsort.fnum.value; num++) {
Line 251  function finish_import() { Line 290  function finish_import() {
     self.close();      self.close();
 }  }
 ENDSMP  ENDSMP
           } else {
               $finishimport=(<<ENDNO);
   function finish_import() {
       alert('$noedit');
   }
   ENDNO
           }
     } else {      } else {
         $finishimport=(<<ENDADV);          if ($canedit) {
               $finishimport=(<<ENDADV);
 function finish_import() {  function finish_import() {
     var linkflag=false;      var linkflag=false;
     for (var num=0; num<document.forms.groupsort.fnum.value; num++) {      for (var num=0; num<document.forms.groupsort.fnum.value; num++) {
Line 274  function finish_import() { Line 321  function finish_import() {
     self.close();      self.close();
 }  }
 ENDADV  ENDADV
           } else {
               $finishimport=(<<ENDNONE);
   function finish_import() {
       alert('$noedit');
   }
   ENDNONE
           }
     }      }
   
 # output start of web page  # output start of web page
Line 327  END Line 381  END
     } else {      } else {
         $title = 'Sort Imported Resources';          $title = 'Sort Imported Resources';
     }      }
       my $disabled;
       unless ($canedit) {
           $disabled = ' disabled="disabled"';
       }
     if (($clen > 1) || ($env{'form.readfile'})) {      if (($clen > 1) || ($env{'form.readfile'})) {
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
  'fin'=> 'Finalize order of resources',   'fin'=> 'Finalize order of resources',
Line 363  END Line 421  END
         if ($env{'form.recover'}) {          if ($env{'form.recover'}) {
     $r->print(<<END);      $r->print(<<END);
 <input type="button" name="alter" value="$buttontext"  <input type="button" name="alter" value="$buttontext"
  onClick="finish_import()" />&nbsp;   onclick="finish_import()"$disabled />&nbsp;
 <input type="button" name="alter" value="$lt{'ca'}" onClick="self.close()" />  <input type="button" name="alter" value="$lt{'ca'}" onclick="self.close()" />
 END  END
  } else {   } else {
         # --- Continue Buttons          # --- Continue Buttons
Line 374  END Line 432  END
 <h2>$lt{'fin'}</h2>  <h2>$lt{'fin'}</h2>
 <div>  <div>
 <input type="button" name="alter" value="$lt{'ci'}"  <input type="button" name="alter" value="$lt{'ci'}"
  onClick="window.location='$resurl?inhibitmenu=yes&amp;catalogmode=import'" />&nbsp;   onclick="window.location='$resurl?inhibitmenu=yes&amp;catalogmode=import'" />&nbsp;
 <input type="button" name="altersearch" value="$lt{'cs'}"  <input type="button" name="altersearch" value="$lt{'cs'}"
  onClick="window.location='/adm/searchcat?inhibitmenu=yes&amp;catalogmode=import'" />&nbsp;   onclick="window.location='/adm/searchcat?inhibitmenu=yes&amp;catalogmode=import'" />&nbsp;
 <input type="button" name="alter" value="$lt{'fi'}"  <input type="button" name="alter" value="$lt{'fi'}"
  onClick="finish_import()" />&nbsp;   onclick="finish_import()"$disabled />&nbsp;
 <input type="button" name="alter" value="$lt{'ca'}" onClick="self.close()" />  <input type="button" name="alter" value="$lt{'ca'}" onclick="self.close()" />
 </div>  </div>
 <br />  <br />
 END  END
Line 428  END Line 486  END
     $r->print(&Apache::loncommon::start_data_table_row()      $r->print(&Apache::loncommon::start_data_table_row()
                      ."<td>");                       ."<td>");
             if (($env{'form.readfile'})) {              if (($env{'form.readfile'})) {
  $r->print(&checkbox($ctr-1));   $r->print(&checkbox($ctr-1,$disabled));
     } else {      } else {
  $r->print(&movers($clen,$ctr));   $r->print(&movers($clen,$ctr));
     }      }
Line 439  END Line 497  END
     $r->print("</td>");      $r->print("</td>");
             unless (($env{'form.readfile'})) {              unless (($env{'form.readfile'})) {
  $r->print("<td>".   $r->print("<td>".
   &select_box($clen,$ctr).    &select_box($clen,$ctr,$disabled).
   "</td>");    "</td>");
     }      }
     $r->print("<td>");      $r->print("<td>");
Line 452  END Line 510  END
             } else {              } else {
                 $r->print($resource->{'title'});                  $r->print($resource->{'title'});
             }              }
     $r->print($resource->{'notes'}."</td><td>\n");              $r->print($resource->{'notes'}."</td><td>\n");
     $r->print($resource->{'url'}."</td>"      $r->print($resource->{'url'}."</td>"
                      .&Apache::loncommon::end_data_table_row()                       .&Apache::loncommon::end_data_table_row()
                      ."\n");                       ."\n");
Line 509  END Line 567  END
   
 # ------------------------------------------ Select box (returns scalar string)  # ------------------------------------------ Select box (returns scalar string)
 sub select_box {  sub select_box {
     my ($total,$sel) = @_;      my ($total,$sel,$disabled) = @_;
     my $string;      my $string;
     $string = '<select name="alt'.$sel.'"';      $string = '<select name="alt'.$sel.'"';
     $string .= " onChange='selectchange($sel)'>";      $string .= " onchange='selectchange($sel)'.$disabled.'>";
     $string .= "<option name='o0' value='0'>".&mt('discard')."</option>";      $string .= "<option name='o0' value='0'>".&mt('discard')."</option>";
     for my $cur (1..$total) {      for my $cur (1..$total) {
  $string .= "<option name='o$cur' value='$cur'";   $string .= "<option name='o$cur' value='$cur'";
Line 528  sub select_box { Line 586  sub select_box {
 # ------------------------------------------------------------------- Checkbox  # ------------------------------------------------------------------- Checkbox
   
 sub checkbox {  sub checkbox {
     my $sel=shift;      my ($sel,$disabled) = @_;
     return "<label><input type='checkbox' name='include$sel'".      return "<label><input type='checkbox' name='include$sel'".
        ($env{"form.include$sel"}?' checked="checked"':'').         ($env{"form.include$sel"}?' checked="checked"':'').
        ' />'.&mt('Include').'</label>';         $disabled.' />'.&mt('Include').'</label>';
 }  }
   
 1;  1;

Removed from v.1.68.6.4  
changed lines
  Added in v.1.77


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