Diff for /loncom/interface/lonsyllabus.pm between versions 1.125 and 1.128

version 1.125, 2013/05/15 17:47:57 version 1.128, 2013/05/19 15:48:51
Line 332  sub handler { Line 332  sub handler {
             }              }
             &Apache::lontemplate::print_start_template($r,&mt('Personnel'),'LC_Box',              &Apache::lontemplate::print_start_template($r,&mt('Personnel'),'LC_Box',
                                                        'box_000_showpeople',$display);                                                         'box_000_showpeople',$display);
             $r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed));              $r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed,$crstype,\%syllabus));
             &Apache::lontemplate::print_end_template($r);              &Apache::lontemplate::print_end_template($r);
         } else {          } else {
             unless ($hidepersonnel) {              unless ($hidepersonnel) {
                 &Apache::lontemplate::print_start_template($r,&mt('Personnel'),'LC_Box');                  &Apache::lontemplate::print_start_template($r,&mt('Personnel'),'LC_Box');
                 $r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed));                    $r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed,$crstype,\%syllabus));  
                 &Apache::lontemplate::print_end_template($r);                  &Apache::lontemplate::print_end_template($r);
             }              }
         }          }
     } else {      } else {
         unless ($hidepersonnel) {          unless ($hidepersonnel) {
             $r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed));              $r->print(&get_personnel($r,$target,$cdom,$cnum,$allowed,$crstype,%syllabus));
         }          }
     }      }
 # -------------------------------------------------------------- Announcements?  # -------------------------------------------------------------- Announcements?
Line 940  sub fields_check_uncheck { Line 940  sub fields_check_uncheck {
 }  }
   
 sub get_personnel {  sub get_personnel {
     my ($r,$target,$cdom,$cnum,$allowed) = @_;      my ($r,$target,$cdom,$cnum,$allowed,$crstype,$syllabus) = @_;
       my (%hiddenroles,%hiddenusers);
       if (ref($syllabus) eq 'HASH') {
           if (ref($syllabus->{'personnel'}) eq 'HASH') {
               if ($syllabus->{'personnel'}{'hiderole'}) {
                   map { $hiddenroles{$_} = 1; } split(/,/,$syllabus->{'personnel'}{'hiderole'});
               }
               if ($syllabus->{'personnel'}{'hideuser'}) {
                   map { $hiddenusers{$_} = 1; } split(/,/,$syllabus->{'personnel'}{'hideuser'});
               }
           }
       }
     my $output;      my $output;
     my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum);      my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum,1);
     if ($target ne 'tex') {      if ($target ne 'tex') {
         $r->print(&Apache::lonhtmlcommon::start_pick_box());          if ($allowed) {
               $r->print(&Apache::loncommon::start_data_table().
                         &Apache::loncommon::start_data_table_header_row().
                         '<th>'.&mt('Role hidden?').'</th><th>'.&mt('Role').'</th>'.
                         '<th>'.&mt('Personnel (hidden if checked)').'</th>'.
                         &Apache::loncommon::end_data_table_header_row());
           } else {
               $r->print(&Apache::lonhtmlcommon::start_pick_box());
           }
     } else {      } else {
         $r->print('\begin{tabular}{|p{0.45\textwidth}|p{0.45\textwidth}|}\hline');          $r->print('\begin{tabular}{|p{0.45\textwidth}|p{0.45\textwidth}|}\hline');
     }      }
     my @personnel=sort(keys(%coursepersonnel));      my @personnel=sort(keys(%coursepersonnel));
     my $lastpers=$personnel[$#personnel];      my $lastpers=$personnel[$#personnel];
     foreach my $element (@personnel) {      foreach my $element (@personnel) {
           unless ($allowed) {
               next if ($hiddenroles{$element}) 
           }
           my ($role,$sec);
           if ($element =~ /:/) {
               ($role,$sec) = split(/:/,$element);
           } else {
               $role = $element;
           }
           my $roletext = &Apache::lonnet::plaintext($role,$crstype);
           if ($sec) {
               $roletext .=' ('.&Apache::lonlocal::mt('Section [_1]',$sec).')';
           }
         if ($target ne 'tex') {          if ($target ne 'tex') {
             $r->print(&Apache::lonhtmlcommon::row_title($element));              if ($allowed) {
                   my $checked;
                   if ($hiddenroles{$element}) {
                       $checked = ' checked="checked"';
                   }
                   $r->print(&Apache::loncommon::start_data_table_row().
                             '<td>'.
                             '<input type="checkbox" name="hiderole" value="'.$element.'" '.
                             $checked.' />'.
                             '</td><td>'.$roletext.'</td><td>');
               } else {
                   $r->print(&Apache::lonhtmlcommon::row_title($roletext));
               }
         } else {          } else {
             $r->print(' '.&Apache::lonxml::xmlparse($r,'tex',$element).' & ');              $r->print(' '.&Apache::lonxml::xmlparse($r,'tex',$roletext).' & ');
         }          }
         my @coursepersonlist;          my @coursepersonlist;
         foreach my $user (split(/\,/,$coursepersonnel{$element})) {          foreach my $user (split(/\,/,$coursepersonnel{$element})) {
             my ($puname,$pudom)=split(/\:/,$user);              my ($puname,$pudom)=split(/\:/,$user);
             if ($target ne 'tex') {              if ($target ne 'tex') {
                 my $courseperson = &Apache::loncommon::plainname($puname,$pudom);                  my $courseperson = &Apache::loncommon::plainname($puname,$pudom);
                 if (($env{'user.name'} eq '') || ($env{'user.name'} eq 'public') ||                  my $checked;
                     ($env{'user.domain'} eq '') || ($env{'user.domain'} eq 'public')) {                  if ($hiddenusers{$element.'&'.$puname.':'.$pudom}) {
                     push(@coursepersonlist,$courseperson);                      $checked = ' checked="checked"';
                   }
                   if ($allowed) {
                       my $item = '<span class="LC_nobreak"><label>'.
                                  '<input type="checkbox" name="hideuser" value="'.$element.'&'.$puname.':'.$pudom.'"'.$checked.' />'.
                                  &Apache::loncommon::aboutmewrapper($courseperson
   ,
                                                  $puname,$pudom).
                                  '</label>'.('&nbsp;'x2).'</span> ';
                       push(@coursepersonlist,$item);
   
                 } else {                  } else {
                     push(@coursepersonlist,&Apache::loncommon::aboutmewrapper($courseperson,                      next if ($hiddenusers{$element.'&'.$puname.':'.$pudom});
                               $puname,$pudom));                      if (($env{'user.name'} eq '') || ($env{'user.name'} eq 'public') ||
                           ($env{'user.domain'} eq '') || ($env{'user.domain'} eq 'public')) {
                           push(@coursepersonlist,$courseperson);
                       } else {
                           push(@coursepersonlist,&Apache::loncommon::aboutmewrapper($courseperson,
                                                  $puname,$pudom));
                       }
                 }                  }
             } else {              } else {
                 push(@coursepersonlist,&Apache::loncommon::plainname($puname,                  push(@coursepersonlist,&Apache::loncommon::plainname($puname,
                               $pudom).' ');                                $pudom).' ');
             }              }
         }          }
         $r->print(join(", ",@coursepersonlist));          if ($allowed) {
               $r->print(join('',@coursepersonlist));
           } else {
               $r->print(join(', ',@coursepersonlist));
           }
         if ($target ne 'tex') {          if ($target ne 'tex') {
             my $lastclose=$element eq $lastpers?1:0;              if ($allowed) {
             $r->print(&Apache::lonhtmlcommon::row_closure($lastclose));                  $r->print(&Apache::loncommon::end_data_table_row());
               } else {
                   my $lastclose=$element eq $lastpers?1:0;
                   $r->print(&Apache::lonhtmlcommon::row_closure($lastclose));
               }
         } else {          } else {
             $r->print('\\\\ \hline');              $r->print('\\\\ \hline');
         }          }
     }      }
     if ($target ne 'tex') {      if ($target ne 'tex') {
         $r->print(&Apache::lonhtmlcommon::end_pick_box());          if ($allowed) {
               $r->print(&Apache::loncommon::end_data_table());
           } else {
               $r->print(&Apache::lonhtmlcommon::end_pick_box());
           }
     } else {      } else {
         $r->print('\end{tabular}\\\\');          $r->print('\end{tabular}\\\\');
     }      }
Line 995  sub save_changes { Line 1067  sub save_changes {
     unless ((ref($syllabus) eq 'HASH') && (ref($syllabusfields) eq 'HASH')) {      unless ((ref($syllabus) eq 'HASH') && (ref($syllabusfields) eq 'HASH')) {
         return ($earlyout,$uploaded,$external,$minimal,$output);          return ($earlyout,$uploaded,$external,$minimal,$output);
     }      }
     if ($env{'form.deleteuploaded'}) {      if (($env{'form.deleteuploaded_file'}) || ($env{'form.deleteuploaded_minimal'})) {
         my %storehash;          my %storehash;
         if (($env{'form.choice'} eq 'file') &&           if (($env{'form.choice'} eq 'file') && 
             ($env{'form.deleteuploaded'} eq 'file') && ($uploaded =~ /\w/)) {              ($env{'form.deleteuploaded_file'}) && ($uploaded =~ /\w/)) {
             &Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.uploadedsyllabus');              &Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.uploadedsyllabus');
             &Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus');              &Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus');
             $storehash{'uploadedsyllabus'} = '';              $storehash{'uploadedsyllabus'} = '';
Line 1007  sub save_changes { Line 1079  sub save_changes {
             undef($uploaded);              undef($uploaded);
             undef($external);              undef($external);
         } elsif (($env{'form.choice'} eq 'minimal') &&          } elsif (($env{'form.choice'} eq 'minimal') &&
                  ($env{'form.deleteuploaded'} eq 'minimal') && ($minimal =~ /\w/)) {                   ($env{'form.deleteuploaded_minimal'}) && ($minimal =~ /\w/)) {
             &Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus');              &Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.externalsyllabus');
             &Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.minimalsyllabus');              &Apache::lonnet::delenv('course.'.$env{'request.course.id'}.'.minimalsyllabus');
             $storehash{'externalsyllabus'} = '';              $storehash{'externalsyllabus'} = '';
Line 1030  sub save_changes { Line 1102  sub save_changes {
                     my ($prefix) = split(/_/,$field);                      my ($prefix) = split(/_/,$field);
                     $syllabus->{'uploaded.fields'} .= $prefix.',';                      $syllabus->{'uploaded.fields'} .= $prefix.',';
                 }                  }
                   if ($field eq '000_showpeople') {
                       my @hideusers = &Apache::loncommon::get_env_multiple('form.hideuser');
                       my @hideroles = &Apache::loncommon::get_env_multiple('form.hiderole');
                       my %coursepersonnel=&Apache::lonnet::get_course_adv_roles($cdom.'/'.$cnum,1);
                       my %personnel;
                       foreach my $key (keys(%coursepersonnel)) {
                           map { $personnel{$key}{$_} = 1; } split(/,/,$coursepersonnel{$key});
                       }
                       %{$syllabus->{'personnel'}} = ();
                       $syllabus->{'personnel'}{'hideuser'} = '';
                       $syllabus->{'personnel'}{'hiderole'} = '';
                       foreach my $role (@hideroles) {
                           if (exists($personnel{$role})) {
                               $syllabus->{'personnel'}{'hiderole'} .= $role.',';
                           }
                       }
                       foreach my $item (@hideusers) {
                           my ($role,$user) = split(/\&/,$item);
                           if (ref($personnel{$role}) eq 'HASH') {
                               if ($personnel{$role}{$user}) {
                                   $syllabus->{'personnel'}{'hideuser'} .= $item.',';
                               }
                           }
                       }
                       $syllabus->{'personnel'}{'hideuser'} =~ s/,$//;
                       $syllabus->{'personnel'}{'hiderole'} =~ s/,$//;
                   }
             }              }
             $syllabus->{'uploaded.fields'} =~ s/,$//;              $syllabus->{'uploaded.fields'} =~ s/,$//;
         }          }
Line 1428  sub editfile_button { Line 1527  sub editfile_button {
     }      }
     $output .= '      $output .= '
                 <input type="button" value="'.$deltext.'" onclick="javascript:dodelete('."'$context'".');" name="del_'.$context.'" />                  <input type="button" value="'.$deltext.'" onclick="javascript:dodelete('."'$context'".');" name="del_'.$context.'" />
                 <input type="hidden" value="" name="deleteuploaded" />                  <input type="hidden" value="" name="deleteuploaded_'.$context.'" id="deleteuploaded_'.$context.'" />
     ';      ';
     return $output;      return $output;
 }  }
   
 sub editbutton_js {  sub editbutton_js {
       my %lt = &Apache::lonlocal::texthash(
                  min    => 'Are you sure you want to delete the contents of the syllabus template?',
                  file   => 'Are you sure you want to delete the uploaded syllabus file?',
                  noundo => 'This action cannot be reversed.'
                );
     return <<ENDJS;      return <<ENDJS;
                 <script type="text/javascript">                  <script type="text/javascript">
                 // <![CDATA[                  // <![CDATA[
Line 1441  sub editbutton_js { Line 1545  sub editbutton_js {
                       document.location.href = url+'?editmode=1&forceedit=1';                        document.location.href = url+'?editmode=1&forceedit=1';
                   }                    }
                   function dodelete(caller,url) {                    function dodelete(caller,url) {
                       document.syllabus.deleteuploaded.value=caller;                        if (document.getElementById('deleteuploaded_'+caller)) {
                       document.syllabus.submit();                            document.getElementById('deleteuploaded_'+caller).value=1;
                             if (caller == 'minimal') {
                                 if (confirm("$lt{'min'}"+"\\n"+"$lt{'noundo'}")) {
                                     document.syllabus.submit();
                                 }
                             }
                             if (caller == 'file') {
                                 if (confirm("$lt{'file'}"+"\\n"+"$lt{'noundo'}")) {
                                     document.syllabus.submit();
                                 }
                             }
                         }
                         return;   
                   }                    }
                 // ]]>                  // ]]>
                 </script>                  </script>

Removed from v.1.125  
changed lines
  Added in v.1.128


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