--- loncom/interface/londocs.pm 2016/06/20 14:26:58 1.607 +++ loncom/interface/londocs.pm 2016/07/01 19:59:36 1.608 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.607 2016/06/20 14:26:58 raeburn Exp $ +# $Id: londocs.pm,v 1.608 2016/07/01 19:59:36 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -4908,8 +4908,6 @@ sub handler { my $output = &Apache::lonpublisher::batchpublish($r,$srcfile,$targetfile,$nokeyref,1); $env{'form.folder'} = $folder; &snapshotbefore(); - my $url = $redirect; - $url =~ s{^/priv/}{/res/}; my $title = &LONCAPA::map::qtunescape($env{'form.newresourcetitle'}); my $ext = 'false'; my $newidx = &LONCAPA::map::getresidx(&LONCAPA::map::qtunescape($url)); @@ -5394,61 +5392,11 @@ FUFORM 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','
'. - &mt('Filename: '),'', - 'coursepath','coursefile', - \%selimport_menus,\@order, - "resize_scrollbox('contentscroll','1','0');",'','res'). - '
'; - } elsif ($numdirs == 1) { - my $singledir = (keys(%files))[0]; - my $showdir = $singledir; - if ($singledir eq '') { - $showdir = '/'; - } - $pickfile = $lt{'dire'}. - '
'. - &mt('Filename: ').'
'."\n"; - } my $importcrsresform; + my ($numdirs,$pickfile) = + &Apache::loncommon::import_crsauthor_form('crsresimportform','coursepath','coursefile', + "resize_scrollbox('contentscroll','1','0');", + undef,'res'); if ($pickfile) { $importcrsresform=(< @@ -5675,7 +5623,7 @@ NWEBFORM if (grep(/^\Q$env{'user.home'}\E$/,@ids)) { my $is_home = 1; 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'}->{'select2'}->{'/'} = '/'; my @ordered = ('/'); @@ -5706,7 +5654,7 @@ NWEBFORM my $is_home = 1; my (%subdirs,@ordered); 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}->{'select2'}->{'/'} = '/'; my @ordered = ('/'); @@ -5748,7 +5696,7 @@ NWEBFORM my $is_home = 1; my %subdirs; my $toppath="/priv/$coursedom/$coursenum"; - &recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs); + &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs); $numcrsdirs = keys(%subdirs); $select_menus{'course'}->{'default'} = '/'; $select_menus{'course'}->{'select2'}->{'/'} = '/'; @@ -5778,13 +5726,13 @@ NWEBFORM $pickdir .= ''; my $toppath="/priv/$coursedom/$coursenum'}"; my %subdirs; - &recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs); + &Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$toppath,'',\%subdirs); $numcrsdirs = keys(%subdirs); if ($numcrsdirs) { $pickdir .= &mt('Directory: ').''; } else { @@ -7838,87 +7786,6 @@ sub makesimpleeditform { 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 { my ($r,$coursedom,$coursenum) = @_; # Creating a new problem