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 |