Diff for /loncom/interface/londocs.pm between versions 1.607 and 1.608

version 1.607, 2016/06/20 14:26:58 version 1.608, 2016/07/01 19:59:36
Line 4908  sub handler { Line 4908  sub handler {
                       my $output = &Apache::lonpublisher::batchpublish($r,$srcfile,$targetfile,$nokeyref,1);                        my $output = &Apache::lonpublisher::batchpublish($r,$srcfile,$targetfile,$nokeyref,1);
                       $env{'form.folder'} = $folder;                        $env{'form.folder'} = $folder;
                       &snapshotbefore();                        &snapshotbefore();
                       my $url = $redirect;  
                       $url =~ s{^/priv/}{/res/};  
                       my $title = &LONCAPA::map::qtunescape($env{'form.newresourcetitle'});                        my $title = &LONCAPA::map::qtunescape($env{'form.newresourcetitle'});
                       my $ext = 'false';                        my $ext = 'false';
                       my $newidx = &LONCAPA::map::getresidx(&LONCAPA::map::qtunescape($url));                        my $newidx = &LONCAPA::map::getresidx(&LONCAPA::map::qtunescape($url));
Line 5394  FUFORM Line 5392  FUFORM
         </form>          </form>
   
 SEDFFORM  SEDFFORM
         my $is_home;  
         my $crshome = $env{'course.'.$env{'request.course.id'}.'.home'};  
         my @ids=&Apache::lonnet::current_machine_ids();  
         if (grep(/^\Q$crshome\E$/,@ids)) {  
             $is_home = 1;  
         }  
         my (%subdirs,%files,%selimport_menus);  
         my $pickfile;  
         my $relpath = "/res/$coursedom/$coursenum";  
         &recursedirs($is_home,'res',$londocroot,$relpath,'',\%subdirs,\%files);  
         my $numdirs = scalar(keys(%files));  
         if ($numdirs > 1) {  
             my @order = sort { lc($a) cmp lc($b) } (keys(%files));  
             foreach my $key (@order) {  
                 if (ref($files{$key}) eq 'HASH') {  
                     my $shown = $key;  
                     if ($key eq '') {  
                         $shown = '/';  
                     }  
                     $selimport_menus{$key}->{'text'} = $shown;  
                     $selimport_menus{$key}->{'default'} = '';  
                     my @ordered = ('');  
                     $selimport_menus{$key}->{'select2'}->{''} = '';   
                     foreach my $file (sort { lc($a) cmp lc($b) } (keys(%{$files{$key}}))) {  
                         $selimport_menus{$key}->{'select2'}->{$file} = $file;  
                         push(@ordered,$file);  
                     }  
                     $selimport_menus{$key}->{'order'} = \@ordered;  
                 }  
             }  
             $pickfile = $lt{'dire'}.  
                         &Apache::loncommon::linked_select_forms('crsresimportform','<br />'.  
                                                                 &mt('Filename: '),'',  
                                                                 'coursepath','coursefile',  
                                                                 \%selimport_menus,\@order,  
                                                                 "resize_scrollbox('contentscroll','1','0');",'','res').  
                                                                 '<br />';  
         } elsif ($numdirs == 1) {  
             my $singledir = (keys(%files))[0];  
             my $showdir = $singledir;  
             if ($singledir eq '') {  
                 $showdir = '/';  
             }  
             $pickfile = $lt{'dire'}.  
                         '<select name="coursepath">'.  
                         '<option value="'.$singledir.'">'.$showdir.'</option>'."\n".  
                         '</select><br />'.  
                         &mt('Filename: ').'<select name="coursefile">'."\n".  
                         '<option value="" selected="selected">'.$lt{'se'}.'</option>'."\n";  
             foreach my $file (sort { lc($a) cmp lc($b) } (keys(%{$files{$singledir}}))) {  
                 $pickfile .= '<option value="'.$file.'">'.$file.'</option>'."\n";  
             }  
             $pickfile .= '</select><br />'."\n";  
         }  
         my $importcrsresform;          my $importcrsresform;
           my ($numdirs,$pickfile) = 
               &Apache::loncommon::import_crsauthor_form('crsresimportform','coursepath','coursefile',
                                                         "resize_scrollbox('contentscroll','1','0');",
                                                         undef,'res');
         if ($pickfile) {          if ($pickfile) {
             $importcrsresform=(<<CRSFORM);              $importcrsresform=(<<CRSFORM);
         <a class="LC_menubuttons_link" href="javascript:toggleImportCrsres('res','$numdirs');">          <a class="LC_menubuttons_link" href="javascript:toggleImportCrsres('res','$numdirs');">
Line 5675  NWEBFORM Line 5623  NWEBFORM
             if (grep(/^\Q$env{'user.home'}\E$/,@ids)) {              if (grep(/^\Q$env{'user.home'}\E$/,@ids)) {
                 my $is_home = 1;                  my $is_home = 1;
                 my %subdirs;                  my %subdirs;
                 &recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);                  &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);
                 $select_menus{'author'}->{'default'} = '/';                   $select_menus{'author'}->{'default'} = '/'; 
                 $select_menus{'author'}->{'select2'}->{'/'} = '/';                  $select_menus{'author'}->{'select2'}->{'/'} = '/';
                 my @ordered = ('/');                  my @ordered = ('/');
Line 5706  NWEBFORM Line 5654  NWEBFORM
                     my $is_home = 1;                      my $is_home = 1;
                     my (%subdirs,@ordered);                      my (%subdirs,@ordered);
                     my $toppath="/priv/$audom/$auname";                      my $toppath="/priv/$audom/$auname";
                     &recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);                      &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);
                     $select_menus{$key}->{'default'} = '/';                      $select_menus{$key}->{'default'} = '/';
                     $select_menus{$key}->{'select2'}->{'/'} = '/';                      $select_menus{$key}->{'select2'}->{'/'} = '/';
                     my @ordered = ('/');                      my @ordered = ('/');
Line 5748  NWEBFORM Line 5696  NWEBFORM
                 my $is_home = 1;                  my $is_home = 1;
                 my %subdirs;                  my %subdirs;
                 my $toppath="/priv/$coursedom/$coursenum";                  my $toppath="/priv/$coursedom/$coursenum";
                 &recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);                  &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);
                 $numcrsdirs = keys(%subdirs);                  $numcrsdirs = keys(%subdirs);
                 $select_menus{'course'}->{'default'} = '/';                  $select_menus{'course'}->{'default'} = '/';
                 $select_menus{'course'}->{'select2'}->{'/'} = '/';                  $select_menus{'course'}->{'select2'}->{'/'} = '/';
Line 5778  NWEBFORM Line 5726  NWEBFORM
                 $pickdir .= '<input type="hidden" name="authorrole" value="course" />';                   $pickdir .= '<input type="hidden" name="authorrole" value="course" />'; 
                 my $toppath="/priv/$coursedom/$coursenum'}";                  my $toppath="/priv/$coursedom/$coursenum'}";
                 my %subdirs;                  my %subdirs;
                 &recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);                  &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs);
                 $numcrsdirs = keys(%subdirs);                   $numcrsdirs = keys(%subdirs); 
                 if ($numcrsdirs) {                  if ($numcrsdirs) {
                     $pickdir .= &mt('Directory: ').'<select name="authorpath">'."\n".                      $pickdir .= &mt('Directory: ').'<select name="authorpath">'."\n".
                                  '<option value="/">/</option>'."\n";                                   '<option value="/">/</option>'."\n";
                     foreach my $key (sort { lc($a) cmp lc($b) } (keys(%subdirs))) {                      foreach my $key (sort { lc($a) cmp lc($b) } (keys(%subdirs))) {
                         $pickdir .= '<option value="'.$relpath.'</option>'."\n";                          $pickdir .= '<option value="'.$key.'">'.$key.'</option>'."\n";
                     }                      }
                     $pickdir .= '</select>';                      $pickdir .= '</select>';
                 } else {                  } else {
Line 7838  sub makesimpleeditform { Line 7786  sub makesimpleeditform {
 SIMPFORM  SIMPFORM
 }  }
   
 sub recursedirs {  
     my ($is_home,$context,$docroot,$toppath,$relpath,$dirhashref,$filehashref) = @_;  
     return unless (ref($dirhashref) eq 'HASH');  
     my $currpath = $docroot.$toppath;  
     if ($relpath) {  
         $currpath .= "/$relpath";  
     }  
     my $savefile;  
     if (ref($filehashref)) {  
         $savefile = 1;  
     }  
     if ($is_home) {  
         if (opendir(my $dirh,$currpath)) {  
             foreach my $item (sort { lc($a) cmp lc($b) } grep(!/^\.+$/,readdir($dirh))) {   
                 next if ($item eq '');  
                 if (-d "$currpath/$item") {  
                     my $newpath;  
                     if ($relpath) {  
                         $newpath = "$relpath/$item";  
                     } else {  
                         $newpath = $item;  
                     }  
                     $dirhashref->{&js_escape($newpath)} = 1;  
                     &recursedirs($is_home,$context,$docroot,$toppath,$newpath,$dirhashref,$filehashref);  
                 } elsif ($savefile) {  
                     if ($context eq 'priv') {  
                         unless ($item =~ /\.(meta|save|log|bak|DS_Store)$/) {  
                             $filehashref->{&js_escape($relpath)}{$item} = 1;  
                         }  
                     } else {  
                         unless (($item =~ /\.meta$/) || ($item =~ /\.\d+\.\w+$/) || ($item =~ /\.rights$/)) {  
                             $filehashref->{&js_escape($relpath)}{$item} = 1;  
                         }  
                     }  
                 }  
             }  
             closedir($dirh);  
         }  
     } else {  
         my ($dirlistref,$listerror) =  
             &Apache::lonnet::dirlist($toppath.$relpath);  
         my @dir_lines;  
         my $dirptr=16384;  
         if (ref($dirlistref) eq 'ARRAY') {  
             foreach my $dir_line (sort  
                               {  
                                   my ($afile)=split('&',$a,2);  
                                   my ($bfile)=split('&',$b,2);  
                                   return (lc($afile) cmp lc($bfile));  
                               } (@{$dirlistref})) {  
                 my ($item,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef) =  
                     split(/\&/,$dir_line,16);  
                 $item =~ s/\s+$//;  
                 next if (($item =~ /^\.\.?$/) || ($obs));  
                 if ($dirptr&$testdir) {  
                     my $newpath;  
                     if ($relpath) {  
                         $newpath = "$relpath/$item";  
                     } else {  
                         $relpath = '/';  
                         $newpath = $item;  
                     }  
                     $dirhashref->{&js_escape($newpath)} = 1;  
                     &recursedirs($is_home,$context,$docroot,$toppath,$newpath,$dirhashref,$filehashref);                           
                 } elsif ($savefile) {  
                     if ($context eq 'priv') {  
                         unless ($item =~ /\.(meta|save|log|bak|DS_Store)$/) {  
                             $filehashref->{$relpath}{$item} = 1;  
                         }  
                     } else {  
                         unless (($item =~ /\.meta$/) || ($item =~ /\.\d+\.\w+$/)) {  
                             $filehashref->{$relpath}{$item} = 1;  
                         }  
                     }  
                 }  
             }  
         }  
     }  
     return;  
 }  
   
 sub makenewproblem {  sub makenewproblem {
     my ($r,$coursedom,$coursenum) = @_;      my ($r,$coursedom,$coursenum) = @_;
 # Creating a new problem  # Creating a new problem

Removed from v.1.607  
changed lines
  Added in v.1.608


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