Diff for /loncom/interface/lonblockingmenu.pm between versions 1.7 and 1.10

version 1.7, 2012/04/05 21:36:28 version 1.10, 2013/11/12 14:36:07
Line 135  Outputs: 2 Line 135  Outputs: 2
       $output - Information about changes made.        $output - Information about changes made.
   
   
 =item &enumerate_course_contents()  
   
 Create hashes of maps (for folders/pages) and symbs (for resources) in  
 a course, where keys are numbers (starting with 1) and values are  
 map url, or symb, for an iteration through the course, as seen by  
 a Course Coordinator. Used to generate numerical IDs to facilitate  
 storage of lists of maps or resources to be blocked during an exam.     
   
 Inputs: 3  
       $navmap - navmaps object  
   
       $map_url - reference to hash to contain URLs of maps in course  
   
       $resource_symb - reference to hash to contain symbs for  
                        resources in course  
   
 Outputs: None  
   
 Side Effects: $map_url and $resource_symb hashrefs are populated.  
   
   
 =item &get_dates_from_form()  =item &get_dates_from_form()
   
 Extract start and end dates from web form input for blocks with  Extract start and end dates from web form input for blocks with
Line 238  Output: None Line 217  Output: None
   
 Side Effects: prints web form elements (in a table) for current blocks.   Side Effects: prints web form elements (in a table) for current blocks. 
   
 =item &path_to_trigger()  
   
 Provides hierarchy of names of folders/sub-folders containing the current  
 item identified as an item with an interval timer set, to be used as a   
 trigger.   
   
 Inputs: 3   
      - $navmap - navmaps object  
   
      - $map - url for map (either the trigger itself, or map containing  
                            the resource, which is the trigger).   
   
      - $type - type of trigger: map or resource.  
   
 Outputs: 1 @pathitems - array of folder/subfolder names.    
   
   
 =item &convlim()  =item &convlim()
   
 Convert a time interval used for a timed quiz (in seconds) to  Convert a time interval used for a timed quiz (in seconds) to
Line 405  use Apache::Constants qw(:common :http); Line 367  use Apache::Constants qw(:common :http);
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::lonparmset();  use Apache::lonparmset();
   use Apache::loncourserespicker();
 use HTML::Entities();  use HTML::Entities();
 use Apache::lonlocal;  use Apache::lonlocal;
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
Line 515  sub handler { Line 478  sub handler {
         &Apache::lonhtmlcommon::breadcrumbs('Blocking communication/content access'));          &Apache::lonhtmlcommon::breadcrumbs('Blocking communication/content access'));
   
     my $usertype;      my $usertype;
     my $crstype = &Apache::loncommon::course_type();  
     if ($crstype eq 'Community') {      if ($crstype eq 'Community') {
         $usertype = 'members';          $usertype = 'members';
     } else {      } else {
Line 682  sub blockstore { Line 644  sub blockstore {
     my $changestotal = 0;      my $changestotal = 0;
     my $addtimer = 0;      my $addtimer = 0;
     my %blocking = ();      my %blocking = ();
     my (%map_url,%resource_symb,$output);      my (%map_url,%resource_symb,%titles,$output);
     $output = '<h3>'.$lt{'head'}.'</h3>';      $output = '<h3>'.$lt{'head'}.'</h3>';
     if ($env{'form.blockaction'} eq 'modify') {      if ($env{'form.blockaction'} eq 'modify') {
         foreach my $envkey (keys(%env)) {          foreach my $envkey (keys(%env)) {
Line 708  sub blockstore { Line 670  sub blockstore {
         $output = $lt{'unna'}.' '.$lt{'ncwm'}.'</br>';          $output = $lt{'unna'}.' '.$lt{'ncwm'}.'</br>';
         return ($changestotal,$output);          return ($changestotal,$output);
     }      }
     &enumerate_course_contents($navmap,\%map_url,\%resource_symb);      &Apache::loncourserespicker::enumerate_course_contents($navmap,\%map_url,\%resource_symb,\%titles,'examblock');
     foreach my $key (keys(%removals)) {      foreach my $key (keys(%removals)) {
         my $hashkey = $env{'form.key_'.$key};          my $hashkey = $env{'form.key_'.$key};
         &Apache::lonnet::del('comm_block',["$hashkey"],          &Apache::lonnet::del('comm_block',["$hashkey"],
Line 818  sub blockstore { Line 780  sub blockstore {
     return ($changestotal,$output);      return ($changestotal,$output);
 }  }
   
 sub enumerate_course_contents {  
     my ($navmap,$map_url,$resource_symb) = @_;  
     if ((ref($navmap)) && (ref($map_url) eq 'HASH') &&   
         (ref($resource_symb) eq 'HASH')) {  
         my $it = $navmap->getIterator(undef,undef,undef,1,undef,undef);  
         my $count = 0;  
         while (my $curRes = $it->next()) {  
             if (ref($curRes)) {  
                 $count ++;  
                 my $symb = $curRes->symb();  
                 my $ressymb = $symb;  
                 if ($ressymb =~ m|adm/($match_domain)/($match_username)/(\d+)/bulletinboard$|) {  
                     unless ($ressymb =~ m|adm/wrapper/adm|) {  
                         $ressymb = 'bulletin___'.$3.'___adm/wrapper/adm/'.$1.'/'.$2.'/'.$3.  
                                    '/bulletinboard';  
                     }  
                 }  
                 if (($curRes->is_sequence()) || ($curRes->is_page())) {  
                     $map_url->{$count} = (&Apache::lonnet::decode_symb($symb))[2];  
                 } else {  
                     $resource_symb->{$count} = $ressymb;  
                 }  
             }  
         }  
     }  
     return;  
 }  
   
 sub get_dates_from_form {  sub get_dates_from_form {
     my $item = shift;      my $item = shift;
     my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate_'.$item);      my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate_'.$item);
Line 934  sub check_release_required { Line 868  sub check_release_required {
 sub display_blocker_status {  sub display_blocker_status {
     my ($r,$records,$ltext,$intervals,$navmap,$errormsg,$blockcount) = @_;      my ($r,$records,$ltext,$intervals,$navmap,$errormsg,$blockcount) = @_;
     my $parmcount = 0;      my $parmcount = 0;
     my (%map_url,%resource_symb,%lookups);      my (%map_url,%resource_symb,%titles,%lookups);
     &enumerate_course_contents($navmap,\%map_url,\%resource_symb);      &Apache::loncourserespicker::enumerate_course_contents($navmap,\%map_url,\%resource_symb,\%titles,'examblock');
     %{$lookups{'maps'}} = reverse(%map_url);      %{$lookups{'maps'}} = reverse(%map_url);
     %{$lookups{'resources'}} = reverse(%resource_symb);      %{$lookups{'resources'}} = reverse(%resource_symb);
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
Line 1129  END Line 1063  END
     return;      return;
 }  }
   
 sub path_to_trigger {  
     my ($navmap,$map,$type) = @_;  
     my @pathitems;  
     if (ref($navmap)) {  
         my $mapres = $navmap->getResourceByUrl($map);  
         if (ref($mapres)) {  
             my $pcslist = $mapres->map_hierarchy();  
             if ($pcslist ne '') {  
                 my @pcs = split(/,/,$pcslist);  
                 foreach my $pc (@pcs) {      
                     if ($pc == 1) {  
                         push(@pathitems,&mt('Main Course Documents'));  
                     } else {  
                         my $res = $navmap->getByMapPc($pc);  
                         if (ref($res)) {  
                             my $title = $res->compTitle();  
                             $title =~ s/\W+/_/g;  
                             if ($title ne '') {  
                                 push(@pathitems,$title);  
                             }  
                         }  
                     }  
                 }  
             }  
         }  
         if ($type eq 'resource') {  
             if ($mapres->{ID} eq '0.0') {  
                 push(@pathitems,&mt('Main Course Documents'));  
             } else {  
                 my $maptitle = $mapres->compTitle();  
                 $maptitle =~ s/\W+/_/g;  
                 if ($maptitle ne '') {  
                     push(@pathitems,$maptitle);  
                 }  
             }  
         }  
     }  
     return @pathitems;  
 }  
   
 sub convlim {  sub convlim {
     my ($timelimit) = @_;      my ($timelimit) = @_;
     my $output;  
     my @order = ('days','hours','minutes','seconds');      my @order = ('days','hours','minutes','seconds');
     my %catlimits = (       my %catlimits = ( 
                       days    => 86400,                        days    => 86400,
Line 1189  sub convlim { Line 1082  sub convlim {
             if ($val > 0) {              if ($val > 0) {
                 push(@toshow,&mt("[_1] $cat",$val));                  push(@toshow,&mt("[_1] $cat",$val));
             }              }
             $timelimit =- $val*$catlimits{$cat};              $timelimit -= $val*$catlimits{$cat};
         }          }
     }      }
     my $output = join(', ',@toshow);      my $output = join(', ',@toshow);
Line 1460  sub show_timer_path { Line 1353  sub show_timer_path {
     return unless(ref($navmap));      return unless(ref($navmap));
     my @pathitems;      my @pathitems;
     if ($type eq 'map') {      if ($type eq 'map') {
         @pathitems = &path_to_trigger($navmap,$item,$type);          @pathitems = 
               &Apache::loncommon::get_folder_hierarchy($navmap,$item);
     } elsif ($type eq 'resource') {      } elsif ($type eq 'resource') {
         my ($map,$id,$resource) = &Apache::lonnet::decode_symb($item);          my ($map,$id,$resource) = &Apache::lonnet::decode_symb($item);
         @pathitems = &path_to_trigger($navmap,$map,$type);          @pathitems = 
               &Apache::loncommon::get_folder_hierarchy($navmap,$map,1);
     }      }
     if (@pathitems) {      if (@pathitems) {
         return join(' &raquo; ',@pathitems);          return join(' &raquo; ',@pathitems);

Removed from v.1.7  
changed lines
  Added in v.1.10


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