Diff for /loncom/interface/londocs.pm between versions 1.614 and 1.615

version 1.614, 2016/11/26 01:28:14 version 1.615, 2016/11/26 15:39:52
Line 2970  sub handle_edit_cmd { Line 2970  sub handle_edit_cmd {
   
 sub editor {  sub editor {
     my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$crstype,      my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$crstype,
         $supplementalflag,$orderhash,$iconpath,$pathitem,$ltitoolsref,$canedit)=@_;          $supplementalflag,$orderhash,$iconpath,$pathitem,$ltitoolsref,
           $canedit,$navmapref,$hiddentop)=@_;
     my ($randompick,$ishidden,$isencrypted,$plain,$is_random_order,$container);      my ($randompick,$ishidden,$isencrypted,$plain,$is_random_order,$container);
     if ($allowed) {      if ($allowed) {
         (my $breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,          (my $breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,
Line 2993  sub editor { Line 2994  sub editor {
         $randompick = -1;          $randompick = -1;
     }      }
   
     my ($errtext,$fatal) = &mapread($coursenum,$coursedom,      my ($errtext,$fatal);
     $folder.'.'.$container);      if (($folder eq '') && (!$supplementalflag)) {
     return $errtext if ($fatal);          if (@LONCAPA::map::order) {
               undef(@LONCAPA::map::order);
               undef(@LONCAPA::map::resources);
               undef(@LONCAPA::map::resparms);
               undef(@LONCAPA::map::zombies);
           }
           $folder = 'default';
           $container = 'sequence'; 
       } else {
           ($errtext,$fatal) = &mapread($coursenum,$coursedom,
        $folder.'.'.$container);
           return $errtext if ($fatal);
       }
   
     if ($#LONCAPA::map::order<1) {      if ($#LONCAPA::map::order<1) {
  my $idx=&LONCAPA::map::getresidx();   my $idx=&LONCAPA::map::getresidx();
Line 3287  sub editor { Line 3300  sub editor {
         $output .= &entryline($idx,$name,$url,$folder,$allowed,$res,          $output .= &entryline($idx,$name,$url,$folder,$allowed,$res,
                               $coursenum,$coursedom,$crstype,                                $coursenum,$coursedom,$crstype,
                               $pathitem,$supplementalflag,$container,                                $pathitem,$supplementalflag,$container,
                               \%filters,\%curr_groups,$ltitoolsref,$canedit,$isencrypted);                                \%filters,\%curr_groups,$ltitoolsref,$canedit,$isencrypted,$navmapref);
         $idx++;          $idx++;
         $shown++;          $shown++;
     }      }
Line 3369  sub editor { Line 3382  sub editor {
             if (!$allowed) {              if (!$allowed) {
                 $to_show .= $toolslink;                  $to_show .= $toolslink;
             }              }
               my $noresmsg;
               if ($allowed && $hiddentop && !$supplementalflag) {
                   $noresmsg = &mt('Main Content Hidden'); 
               } else {
                   $noresmsg = &mt('Currently empty');
               }
             $to_show .= &Apache::loncommon::start_scrollbox('400px','380px','200px','contentscroll')              $to_show .= &Apache::loncommon::start_scrollbox('400px','380px','200px','contentscroll')
                        .'<div class="LC_info" id="contentlist">'                         .'<div class="LC_info" id="contentlist">'
                        .&mt('Currently empty')                         .$noresmsg
                        .'</div>'                         .'</div>'
                        .&Apache::loncommon::end_scrollbox();                         .&Apache::loncommon::end_scrollbox();
         }          }
Line 3662  sub is_supplemental_title { Line 3681  sub is_supplemental_title {
 sub entryline {  sub entryline {
     my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,      my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,
         $crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups,          $crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups,
         $ltitoolsref,$canedit,$isencrypted)=@_;          $ltitoolsref,$canedit,$isencrypted,$navmapref)=@_;
     my ($foldertitle,$renametitle,$oldtitle);      my ($foldertitle,$renametitle,$oldtitle);
     if (&is_supplemental_title($title)) {      if (&is_supplemental_title($title)) {
  ($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);   ($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);
Line 3888  END Line 3907  END
     my $isfolder;      my $isfolder;
     my $ispage;      my $ispage;
     my $containerarg;      my $containerarg;
       my $folderurl;
     if ($uploaded) {      if ($uploaded) {
         if (($extension eq 'sequence') || ($extension eq 'page')) {          if (($extension eq 'sequence') || ($extension eq 'page')) {
             $url=~/\Q$coursenum\E\/([\/\w]+)\.\Q$extension\E$/;              $url=~/\Q$coursenum\E\/([\/\w]+)\.\Q$extension\E$/;
Line 3899  END Line 3919  END
                 $icon=$iconpath.'page.gif';                  $icon=$iconpath.'page.gif';
                 $ispage=1;                  $ispage=1;
             }              }
               $folderurl = &Apache::lonnet::declutter($url);
             if ($allowed) {              if ($allowed) {
                 $url='/adm/coursedocs?';                  $url='/adm/coursedocs?';
             } else {              } else {
Line 3944  END Line 3965  END
                     }                      }
                 }                  }
                 $url.=(($url=~/\?/)?'&':'?').'symb='.&HTML::Entities::encode($shownsymb,'"<>&');                  $url.=(($url=~/\?/)?'&':'?').'symb='.&HTML::Entities::encode($shownsymb,'"<>&');
             } elsif ((!$env{'request.role.adv'}) &&              } elsif (!$env{'request.role.adv'}) {
                      (((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i) ||                  my $checkencrypt;
                       $isencrypted)) {                  if (((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i) ||
                 my $shownsymb = &Apache::lonenc::encrypted($symb);                        $isencrypted || (&Apache::lonnet::EXT('resource.0.encrypturl',$symb) =~ /^yes$/i)) {
                 my $shownurl = &Apache::lonenc::encrypted($url);                      $checkencrypt = 1;
                 if (&Apache::lonnet::symbverify($shownsymb,$shownurl)) {                  } else {
                     $url = $shownurl.(($shownurl=~/\?/)?'&':'?').'symb='.&HTML::Entities::encode($shownsymb,'"<>&');                      unless (ref($$navmapref)) {
                     if ($env{'request.enc'} ne '') {                          $$navmapref = Apache::lonnavmaps::navmap->new();
                         delete($env{'request.enc'});                      }
                       if (ref($$navmapref)) {
                           if (lc($$navmapref->get_mapparam($symb,undef,"0.encrypturl")) eq 'yes') {
                               $checkencrypt = 1;       
                           }
                       }
                   }
                   if ($checkencrypt) {
                       my $shownsymb = &Apache::lonenc::encrypted($symb);
                       my $shownurl = &Apache::lonenc::encrypted($url);
                       if (&Apache::lonnet::symbverify($shownsymb,$shownurl)) {
                           $url = $shownurl.(($shownurl=~/\?/)?'&':'?').'symb='.&HTML::Entities::encode($shownsymb,'"<>&');
                           if ($env{'request.enc'} ne '') {
                               delete($env{'request.enc'});
                           }
                       } else {
                           $url='';
                     }                      }
                 } else {                  } else {
                     $url='';                      $url='';
Line 3969  END Line 4006  END
             }              }
         }          }
     }      }
     my ($rand_pick_text,$rand_order_text);      my ($rand_pick_text,$rand_order_text,$hiddenfolder);
     if ($isfolder || $ispage || $extension eq 'sequence' || $extension eq 'page') {      if ($isfolder || $ispage || $extension eq 'sequence' || $extension eq 'page') {
  my $foldername=&escape($foldertitle);   my $foldername=&escape($foldertitle);
  my $folderpath=$env{'form.folderpath'};   my $folderpath=$env{'form.folderpath'};
Line 3990  END Line 4027  END
                                                .':'.((&LONCAPA::map::getparameter($orderidx,                                                 .':'.((&LONCAPA::map::getparameter($orderidx,
                                               'parameter_randomorder'))[0]=~/^yes$/i)                                                'parameter_randomorder'))[0]=~/^yes$/i)
                                                .':'.$ispage;                                                 .':'.$ispage;
             if ($env{'request.role.adv'} ||              if (!$env{'request.role.adv'}) {
                 (&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]!~/^yes$/i) {                  if (lc((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]) eq 'yes') {
                       $url = '';
                       $hiddenfolder = 1;
                   } else {
                       unless (ref($$navmapref)) {
                           $$navmapref = Apache::lonnavmaps::navmap->new();
                       }
                       if (ref($$navmapref)) {
                           if (lc($$navmapref->get_mapparam(undef,$folderurl,"0.hiddenresource")) eq 'yes') {
                               $url = '';
                               $hiddenfolder = 1;
                           }
                       }
                   }
               }
               unless ($url eq '') {
                 $url.='folderpath='.&escape($folderpath);                  $url.='folderpath='.&escape($folderpath);
             } else {  
                 $url = '';  
             }              }
             my $rpicknum = (&LONCAPA::map::getparameter($orderidx,              my $rpicknum = (&LONCAPA::map::getparameter($orderidx,
                                                         'parameter_randompick'))[0];                                                          'parameter_randompick'))[0];
Line 4117  $form_end; Line 4167  $form_end;
        $line.=&Apache::loncommon::modal_link($url.(($url=~/\?/)?'&amp;':'?').'inhibitmenu=yes'.         $line.=&Apache::loncommon::modal_link($url.(($url=~/\?/)?'&amp;':'?').'inhibitmenu=yes'.
                                              (($anchor ne '')?$anchor:''),                                               (($anchor ne '')?$anchor:''),
                                              $title,600,500);                                               $title,600,500);
       } elsif ($hiddenfolder) {
          $line.=$title.' <span class="LC_warning LC_docs_reinit_warn">'.&mt('(Hidden)').'</span>';
     } else {      } else {
        $line.=$title.' <span class="LC_docs_reinit_warn">'.$reinit.'</span>';         $line.=$title.' <span class="LC_docs_reinit_warn">'.$reinit.'</span>';
     }      }
Line 5056  sub handler { Line 5108  sub handler {
     my $containertag;      my $containertag;
     my $pathitem;      my $pathitem;
     my %ltitools;      my %ltitools;
       my $navmap;
       my $hiddentop; 
   
 # Do we directly jump somewhere?  # Do we directly jump somewhere?
   
Line 5095  sub handler { Line 5149  sub handler {
     if ((!$env{'form.folderpath'}) && $allowed) {      if ((!$env{'form.folderpath'}) && $allowed) {
         &Apache::loncommon::restore_course_settings($stored_folderpath,          &Apache::loncommon::restore_course_settings($stored_folderpath,
                                           {'folderpath' => 'scalar'});                                            {'folderpath' => 'scalar'});
         unless (&unescape($env{'form.folderpath'}) =~ m{^(default|supplemental)&}) {  
           if (&unescape($env{'form.folderpath'}) =~ m{^(default|supplemental)&}) {
               if ($supplementalflag) {
                   undef($env{'form.folderpath'}) if ($1 eq 'default'); 
               } else {
                   undef($env{'form.folderpath'}) if ($1 eq 'supplemental');
               }
           } else {
             undef($env{'form.folderpath'});              undef($env{'form.folderpath'});
         }          }
     }      }
Line 5112  sub handler { Line 5173  sub handler {
                                   .'&'.                                    .'&'.
                                   $env{'form.folderpath'};                                    $env{'form.folderpath'};
     }      }
   # If allowed and user's role is not advanced check folderpath is not hidden  
       if (($allowed) && (!$env{'request.role.adv'}) && 
           ($env{'form.folderpath'} ne '') && (!$supplementalflag)) {
           my $folderurl;
           my @pathitems = split(/\&/,$env{'form.folderpath'});
           my $container = $pathitems[-2];
           if ($container ne '') {
               $folderurl = "uploaded/$coursedom/$coursenum/$container";
               if ((split(/\:/,$pathitems[-1]))[4]) {
                   $folderurl .= '.page';
               } else {
                   $folderurl .= '.sequence';
               }
               $navmap = Apache::lonnavmaps::navmap->new();
               if (ref($navmap)) {
                   if (lc($navmap->get_mapparam(undef,$folderurl,"0.hiddenresource")) eq 'yes') {
                       undef($env{'form.folderpath'});
                   }
               }
           } else {
               undef($env{'form.folderpath'});    
           }
       }
   
   
 # If after all of this, we still don't have any paths, make them  # If after all of this, we still don't have any paths, make them
     unless ($env{'form.folderpath'}) {      unless ($env{'form.folderpath'}) {
        if ($supplementalflag) {         if ($supplementalflag) {
Line 5119  sub handler { Line 5205  sub handler {
        } else {         } else {
           $env{'form.folderpath'}='default&'.&escape(&mt('Main Content').            $env{'form.folderpath'}='default&'.&escape(&mt('Main Content').
                                   ':::::');                                    ':::::');
             if (($allowed) && (!$env{'request.role.adv'})) {
   # If allowed and user's role is not advanced check entire course is not hidden
                 unless (ref($navmap)) {
                     $navmap = Apache::lonnavmaps::navmap->new();
                 }
                 if (ref($navmap)) {
                     if (lc($navmap->get_mapparam(undef,"uploaded/$coursedom/$coursenum/default.sequence",
                                                  "0.hiddenresource")) eq 'yes') {
                         undef($env{'form.folderpath'});
                         $hiddentop = 1;
                         if ($env{'form.folder'}) {
                             undef($env{'form.folder'});
                         }
                     }
                 }
             }
        }         }
     }      }
   
   
 # Store this  # Store this
     unless ($toolsflag) {      unless ($toolsflag) {
         if ($allowed) {          if (($allowed) && ($env{'form.folderpath'} ne '')) {
             &Apache::loncommon::store_course_settings($stored_folderpath,              &Apache::loncommon::store_course_settings($stored_folderpath,
                                                       {'folderpath' => 'scalar'});                                                        {'folderpath' => 'scalar'});
         }          }
Line 5562  CRSFORM Line 5665  CRSFORM
         if ($folder eq '') {          if ($folder eq '') {
             $folder='default';              $folder='default';
         }          }
  my $output = &update_paste_buffer($coursenum,$coursedom,$folder);          if ($canedit) {
         if ($output) {      my $output = &update_paste_buffer($coursenum,$coursedom,$folder);
             $r->print($output);              if ($output) {
                   $r->print($output);
               }
         }          }
  $r->print(<<HIDDENFORM);   $r->print(<<HIDDENFORM);
  <form name="renameform" method="post" action="/adm/coursedocs">   <form name="renameform" method="post" action="/adm/coursedocs">
Line 5601  HIDDENFORM Line 5706  HIDDENFORM
   
     if ($allowed) {      if ($allowed) {
        my $folder=$env{'form.folder'};         my $folder=$env{'form.folder'};
        if ($folder eq '' || $supplementalflag) {         if ((($folder eq '') && (!$hiddentop)) || ($supplementalflag)) {
            $folder='default';             $folder='default';
    $savefolderpath = $env{'form.folderpath'};     $savefolderpath = $env{'form.folderpath'};
    $env{'form.folderpath'}='default&'.&escape(&mt('Main Content'));     $env{'form.folderpath'}='default&'.&escape(&mt('Main Content'));
Line 6065  unless ($container eq 'page') { Line 6170  unless ($container eq 'page') {
  $hadchanges=0;   $hadchanges=0;
        unless (($supplementalflag || $toolsflag)) {         unless (($supplementalflag || $toolsflag)) {
           my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,            my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,
                               $supplementalflag,\%orderhash,$iconpath,$pathitem,\%ltitools,$canedit);                                $supplementalflag,\%orderhash,$iconpath,$pathitem,
                                 \%ltitools,$canedit,\$navmap,$hiddentop);
           if ($error) {            if ($error) {
              $r->print('<p><span class="LC_error">'.$error.'</span></p>');               $r->print('<p><span class="LC_error">'.$error.'</span></p>');
           }            }
Line 6212  my %suporderhash = ( Line 6318  my %suporderhash = (
                 );                  );
         if ($supplementalflag) {          if ($supplementalflag) {
            my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,             my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,
                                $supplementalflag,\%suporderhash,$iconpath,$pathitem,\%ltitools,$canedit);                                 $supplementalflag,\%suporderhash,$iconpath,$pathitem,
                                  \%ltitools,$canedit,\$navmap);
            if ($error) {             if ($error) {
               $r->print('<p><span class="LC_error">'.$error.'</span></p>');                $r->print('<p><span class="LC_error">'.$error.'</span></p>');
            } else {             } else {
Line 6232  my %suporderhash = ( Line 6339  my %suporderhash = (
         }          }
     } elsif ($supplementalflag) {      } elsif ($supplementalflag) {
         my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,          my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,
                             $supplementalflag,'',$iconpath,$pathitem,$canedit);                              $supplementalflag,'',$iconpath,$pathitem);
         if ($error) {          if ($error) {
             $r->print('<p><span class="LC_error">'.$error.'</span></p>');              $r->print('<p><span class="LC_error">'.$error.'</span></p>');
         }          }

Removed from v.1.614  
changed lines
  Added in v.1.615


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