--- loncom/interface/londocs.pm 2004/02/12 19:20:40 1.105
+++ loncom/interface/londocs.pm 2004/04/08 21:10:25 1.117
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.105 2004/02/12 19:20:40 albertel Exp $
+# $Id: londocs.pm,v 1.117 2004/04/08 21:10:25 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -97,13 +97,15 @@ sub authorhosts {
} else {
($cd,$ca)=($realm=~/^\/(\w+)\/(\w+)$/);
}
- if (&Apache::lonnet::homeserver($ca,$cd) eq
- $Apache::lonnet::perlvar{'lonHostID'}) {
+ my $allowed=0;
+ my $myhome=&Apache::lonnet::homeserver($ca,$cd);
+ my @ids=&Apache::lonnet::current_machine_ids();
+ foreach my $id (@ids) { if ($id eq $myhome) { $allowed=1; } }
+ if ($allowed) {
$home++;
$outhash{'home_'.$ca.'@'.$cd}=1;
} else {
- $outhash{'otherhome_'.$ca.'@'.$cd}=
- &Apache::lonnet::homeserver($ca,$cd);
+ $outhash{'otherhome_'.$ca.'@'.$cd}=$myhome;
$other++;
}
}
@@ -256,11 +258,34 @@ sub group_import {
return &storemap($coursenum, $coursedom, $folder.'.sequence');
}
+sub breadcrumbs {
+ my ($where)=@_;
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ my (@folders)=split('&',$ENV{'form.folderpath'});
+ my $folderpath;
+ while (@folders) {
+ my $folder=shift(@folders);
+ my $foldername=shift(@folders);
+ if ($folderpath) {$folderpath.='&';}
+ $folderpath.=$folder.'&'.$foldername;
+ my $url='/adm/coursedocs?folderpath='.
+ &Apache::lonnet::escape($folderpath);
+ &Apache::lonhtmlcommon::add_breadcrumb(
+ {'href'=>$url,
+ 'title'=>&Apache::lonnet::unescape($foldername),
+ 'text'=>''.
+ &Apache::lonnet::unescape($foldername).''
+ });
+
+
+ }
+ return &Apache::lonhtmlcommon::breadcrumbs(undef,undef,undef,undef,undef,0);
+}
+
sub editor {
my ($r,$coursenum,$coursedom,$folder,$allowed)=@_;
- if ($ENV{'form.foldername'}) {
- $r->print('
Folder: '.$ENV{'form.foldername'}.'
');
- }
+
+ $r->print(&breadcrumbs($folder));
my $errtext='';
my $fatal=0;
($errtext,$fatal)=
@@ -278,7 +303,7 @@ sub editor {
# upload a file, if present
if (($ENV{'form.uploaddoc.filename'}) &&
($ENV{'form.cmd'}=~/^upload_(\w+)/)) {
- if ($folder=~/^$1/) {
+ if ( ($folder=~/^$1/) || ($1 eq 'default') ) {
# this is for a course, not a user, so set coursedoc flag
# probably the only place in the system where this should be "1"
my $url=&Apache::lonnet::userfileupload('uploaddoc',1);
@@ -395,8 +420,8 @@ sub editor {
foreach (@Apache::lonratedt::order) {
my ($name,$url)=split(/\:/,$Apache::lonratedt::resources[$_]);
unless ($name) { $name=(split(/\//,$url))[-1]; }
- unless ($name) { $name='NO RESOURCE'; $url='/adm/notfound.html'; }
- $r->print(&entryline($idx,$name,$url,$folder,$allowed,$_));
+ unless ($name) { next; }
+ $r->print(&entryline($idx,$name,$url,$folder,$allowed,$_,$coursenum));
$idx++;
}
$r->print('');
@@ -406,41 +431,44 @@ sub editor {
# --------------------------------------------------------------- An entry line
sub entryline {
- my ($index,$title,$url,$folder,$allowed,$residx)=@_;
+ my ($index,$title,$url,$folder,$allowed,$residx,$coursenum)=@_;
$title=~s/\&colon\;/\:/g;
$title=&HTML::Entities::encode(&HTML::Entities::decode(
- &Apache::lonnet::unescape($title)),'\"\<\>\&\'');
+ &Apache::lonnet::unescape($title)),'"<>&\'');
my $renametitle=$title;
my $foldertitle=$title;
- if ($title=~
- /^(\d+)\_\_\_\&\;\&\;\&\;\_\_\_(\w+)\_\_\_\&\;\&\;\&\;\_\_\_(\w+)\_\_\_\&\;\&\;\&\;\_\_\_(.*)$/
- ) {
- $foldertitle=&Apache::lontexconvert::msgtexconverted($4);
- $renametitle=$4;
- $title=''.&Apache::lonlocal::locallocaltime($1).' '.
- &Apache::loncommon::plainname($2,$3).':
'.
- $foldertitle;
- }
+ if ($title=~ /^(\d+)___&&&___(\w+)___&&&___(\w+)___&&&___(.*)$/ ) {
+ $foldertitle=&Apache::lontexconvert::msgtexconverted($4);
+ $renametitle=$4;
+ $title=''.&Apache::lonlocal::locallocaltime($1).' '.
+ &Apache::loncommon::plainname($2,$3).':
'.
+ $foldertitle;
+ }
$renametitle=~s/\"\;/\\\"/g;
my $line='';
# Edit commands
- if ($allowed) {
- my %lt=('up' => 'Move Up',
- 'dw' => 'Move Down',
- 'rm' => 'Remove',
- 'rn' => 'Rename');
- $line.=(< 'Move Up',
+ 'dw' => 'Move Down',
+ 'rm' => 'Remove',
+ 'rn' => 'Rename');
+ my $folderpath;
+ if ($ENV{'form.folderpath'}) {
+ $folderpath=&Apache::lonnet::escape($ENV{'form.folderpath'});
+ # $htmlfoldername=&HTML::Entities::encode($ENV{'form.foldername'},'<>&"');
+ }
+ $line.=(<
-
+
$lt{'rm'}
-
+
$lt{'rn'} |
END
}
@@ -449,32 +477,41 @@ END
my $uploaded=($url=~/^\/*uploaded\//);
my $icon=&Apache::loncommon::icon($url);
my $isfolder=0;
+ my $folderarg;
if ($uploaded) {
if ($extension eq 'sequence') {
$icon=$iconpath.'/folder_closed.gif';
- $url=~/\/(\w+)\.sequence/;
- $url='/adm/coursedocs?folder='.$1;
+ $url=~/$coursenum\/([\/\w]+)\.sequence$/;
+ $url='/adm/coursedocs?';
+ $folderarg=$1;
$isfolder=1;
} else {
$url=&Apache::lonnet::tokenwrapper($url);
}
}
$url=~s/^http\&colon\;\/\//\/adm\/wrapper\/ext\//;
- if (($residx) && ($folder!~/supplemental/)) {
- $url.=(($url=~/\?/)?'&':'?').'symb='.
- &Apache::lonnet::escape(&Apache::lonnet::symbclean(
+ if ((!$isfolder) && ($residx) && ($folder!~/supplemental/)) {
+ my $symb=&Apache::lonnet::symbclean(
&Apache::lonnet::declutter('uploaded/'.
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.'/'.
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}.'/'.$folder.
'.sequence').
'___'.$residx.'___'.
- &Apache::lonnet::declutter($url)));
- }
- if ($isfolder) { $url.='&foldername='.
- &Apache::lonnet::escape($foldertitle); }
- $line.=' | '.
- "$title |
";
+ &Apache::lonnet::declutter($url));
+ (undef,undef,$url)=&Apache::lonnet::decode_symb($symb);
+ $url=&Apache::lonnet::clutter($url);
+ $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb);
+ }
+ if ($isfolder) {
+ my $foldername=&Apache::lonnet::escape($foldertitle);
+ my $folderpath=$ENV{'form.folderpath'};
+ if ($folderpath) { $folderpath.='&' };
+ $folderpath.=$folderarg.'&'.$foldername;
+ $url.='folderpath='.&Apache::lonnet::escape($folderpath);
+ }
+ $line.=' | '.
+ "$title | ";
return $line;
}
@@ -502,7 +539,7 @@ sub checkonthis {
$alreadyseen{$url}=1;
$r->rflush();
if (($url) && ($url!~/^\/uploaded\//) && ($url!~/\*$/)) {
- $r->print('
');
+ $r->print("\n
");
for (my $i=0;$i<=$level*5;$i++) {
$r->print(' ');
}
@@ -590,7 +627,8 @@ sub verifycontent {
}
}
&untiehash();
- $r->print(''.&mt('Done').'.
');
+ $r->print(''.&mt('Done').'.
'.''.
+ &mt('Return to DOCS').'');
}
# -------------------------------------------------------------- Check Versions
@@ -637,7 +675,6 @@ sub checkversions {
foreach (keys %ENV) {
if ($_=~/^form\.set_version_(.+)$/) {
my $src=$1;
- &Apache::lonnet::logthis('Found: '.$1.' '.$ENV{$_});
if (($ENV{$_}) && ($ENV{$_} ne $setversions{$src})) {
$newsetversions{$src}=$ENV{$_};
}
@@ -839,7 +876,9 @@ sub changewarning {
$r->print(
''.
'