');
my ($ext)=($_=~/\.(\w+)$/);
my $title=$hash{'title_'.$hash{
'ids_/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'.$_}};
$title=~s/:/:/g;
$r->print('
'.($title?$title:' ').'
');
- unless ($title) {
+ if (!$title) {
$title=$_;
+ } else {
+ $title=~s|/|_|g;
}
$title=~s/\.(\w+)$//;
$title=&clean($title);
@@ -929,13 +931,13 @@ sub group_import {
}
}
if ($url) {
- my $idx = &Apache::lonratedt::getresidx($url);
- $Apache::lonratedt::order[$#Apache::lonratedt::order+1]=$idx;
+ my $idx = &LONCAPA::map::getresidx($url);
+ $LONCAPA::map::order[$#LONCAPA::map::order+1]=$idx;
my $ext = 'false';
if ($url=~/^http:\/\//) { $ext = 'true'; }
$url =~ s/:/\:/g;
$name =~ s/:/\:/g;
- $Apache::lonratedt::resources[$idx] =
+ $LONCAPA::map::resources[$idx] =
join ':', ($name, $url, $ext, 'normal', 'res');
}
}
@@ -959,6 +961,9 @@ sub breadcrumbs {
'&markedcopy_title='.
&escape($env{'form.markedcopy_title'});
}
+ my $randompick=-1;
+ my $isencrypted=0;
+ my $ishidden=0;
while (@folders) {
my $folder=shift(@folders);
my $foldername=shift(@folders);
@@ -966,16 +971,25 @@ sub breadcrumbs {
$folderpath.=$folder.'&'.$foldername;
my $url='/adm/coursedocs?folderpath='.
&escape($folderpath);
+ my $name=&unescape($foldername);
+# randompick number, hidden, encrypted is appended with ":"s to the foldername
+ $name=~s/\:(\d*)\:(\w*)\:(\w*)$//;
+ if ($1 ne '') {
+ $randompick=$1;
+ } else {
+ $randompick=-1;
+ }
+ if ($2) { $ishidden=1; }
+ if ($3) { $isencrypted=1; }
&Apache::lonhtmlcommon::add_breadcrumb(
{'href'=>$url.$cpinfo,
- 'title'=>&unescape($foldername),
+ 'title'=>$name,
'text'=>''.
- &unescape($foldername).''
+ $name.''
});
-
-
}
- return &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp');
+ return (&Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp',
+ 'LC_docs_path'),$randompick,$ishidden,$isencrypted);
}
sub editor {
@@ -988,19 +1002,20 @@ sub editor {
}
($errtext,$fatal)=
&mapread($coursenum,$coursedom,$folder.'.'.$container);
- if ($#Apache::lonratedt::order<1) {
- my $idx=&Apache::lonratedt::getresidx();
+ if ($#LONCAPA::map::order<1) {
+ my $idx=&LONCAPA::map::getresidx();
if ($idx<=0) { $idx=1; }
- $Apache::lonratedt::order[0]=$idx;
- $Apache::lonratedt::resources[$idx]='';
+ $LONCAPA::map::order[0]=$idx;
+ $LONCAPA::map::resources[$idx]='';
}
if (defined($env{'form.markcopy'})) {
# Mark for copying
- my ($title,$url)=split(':',$Apache::lonratedt::resources[$Apache::lonratedt::order[$env{'form.markcopy'}]]);
+ my ($title,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$env{'form.markcopy'}]]);
$env{'form.markedcopy_title'}=$title;
$env{'form.markedcopy_url'}=$url;
}
- $r->print(&breadcrumbs($folder));
+ my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted)=&breadcrumbs($folder);
+ $r->print($breadcrumbtrail);
if ($fatal) {
$r->print('
'.$errtext.'
');
} else {
@@ -1013,19 +1028,19 @@ sub editor {
my $idx=$env{'form.setparms'};
# set parameters
if ($env{'form.randpick_'.$idx}) {
- &Apache::lonratedt::storeparameter($idx,'parameter_randompick',$env{'form.randpick_'.$idx},'int_pos');
+ &LONCAPA::map::storeparameter($idx,'parameter_randompick',$env{'form.randpick_'.$idx},'int_pos');
} else {
- &Apache::lonratedt::delparameter($idx,'parameter_randompick');
+ &LONCAPA::map::delparameter($idx,'parameter_randompick');
}
if ($env{'form.hidprs_'.$idx}) {
- &Apache::lonratedt::storeparameter($idx,'parameter_hiddenresource','yes','string_yesno');
+ &LONCAPA::map::storeparameter($idx,'parameter_hiddenresource','yes','string_yesno');
} else {
- &Apache::lonratedt::delparameter($idx,'parameter_hiddenresource');
+ &LONCAPA::map::delparameter($idx,'parameter_hiddenresource');
}
if ($env{'form.encprs_'.$idx}) {
- &Apache::lonratedt::storeparameter($idx,'parameter_encrypturl','yes','string_yesno');
+ &LONCAPA::map::storeparameter($idx,'parameter_encrypturl','yes','string_yesno');
} else {
- &Apache::lonratedt::delparameter($idx,'parameter_encrypturl');
+ &LONCAPA::map::delparameter($idx,'parameter_encrypturl');
}
if ($env{'form.newpos'}) {
@@ -1038,29 +1053,29 @@ sub editor {
if ($newpos>$currentpos) {
# moving stuff up
for ($i=0;$i<$currentpos;$i++) {
- $neworder[$i]=$Apache::lonratedt::order[$i];
+ $neworder[$i]=$LONCAPA::map::order[$i];
}
for ($i=$currentpos;$i<$newpos;$i++) {
- $neworder[$i]=$Apache::lonratedt::order[$i+1];
+ $neworder[$i]=$LONCAPA::map::order[$i+1];
}
- $neworder[$newpos]=$Apache::lonratedt::order[$currentpos];
- for ($i=$newpos+1;$i<=$#Apache::lonratedt::order;$i++) {
- $neworder[$i]=$Apache::lonratedt::order[$i];
+ $neworder[$newpos]=$LONCAPA::map::order[$currentpos];
+ for ($i=$newpos+1;$i<=$#LONCAPA::map::order;$i++) {
+ $neworder[$i]=$LONCAPA::map::order[$i];
}
} else {
# moving stuff down
for ($i=0;$i<$newpos;$i++) {
- $neworder[$i]=$Apache::lonratedt::order[$i];
+ $neworder[$i]=$LONCAPA::map::order[$i];
}
- $neworder[$newpos]=$Apache::lonratedt::order[$currentpos];
+ $neworder[$newpos]=$LONCAPA::map::order[$currentpos];
for ($i=$newpos+1;$i<$currentpos+1;$i++) {
- $neworder[$i]=$Apache::lonratedt::order[$i-1];
+ $neworder[$i]=$LONCAPA::map::order[$i-1];
}
- for ($i=$currentpos+1;$i<=$#Apache::lonratedt::order;$i++) {
- $neworder[$i]=$Apache::lonratedt::order[$i];
+ for ($i=$currentpos+1;$i<=$#LONCAPA::map::order;$i++) {
+ $neworder[$i]=$LONCAPA::map::order[$i];
}
}
- @Apache::lonratedt::order=@neworder;
+ @LONCAPA::map::order=@neworder;
}
# store the changed version
@@ -1083,7 +1098,7 @@ sub editor {
my $newurl=$1.$newid.'.'.$2;
my $storefn=$newurl;
$storefn=~s/^\/\w+\/\w+\/\w+\///;
- &Apache::loncreatecourse::writefile
+ &Apache::lonclonecourse::writefile
($env{'request.course.id'},$storefn,
&Apache::lonnet::getfile($url));
$url=$newurl;
@@ -1095,10 +1110,10 @@ sub editor {
if ($url=~/^http\:\/\//) { $ext='true'; }
$url=~s/\:/\:/g;
# Now insert the URL at the bottom
- my $newidx=&Apache::lonratedt::getresidx($url);
- $Apache::lonratedt::resources[$newidx]=
+ my $newidx=&LONCAPA::map::getresidx($url);
+ $LONCAPA::map::resources[$newidx]=
$title.':'.$url.':'.$ext.':normal:res';
- $Apache::lonratedt::order[1+$#Apache::lonratedt::order]=$newidx;
+ $LONCAPA::map::order[1+$#LONCAPA::map::order]=$newidx;
# Store the result
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);
if ($fatal) {
@@ -1111,55 +1126,54 @@ sub editor {
if ($env{'form.cmd'}) {
my ($cmd,$idx)=split(/\_/,$env{'form.cmd'});
if ($cmd eq 'del') {
- my (undef,$url)=split(':',$Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]]);
+ my (undef,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$idx]]);
if (($url=~m|/+uploaded/\Q$coursedom\E/\Q$coursenum\E/|) &&
($url!~/\.(page|sequence|problem|exam|quiz|assess|survey|form|library|task)$/)) {
&Apache::lonnet::removeuploadedurl($url);
} else {
- &Apache::lonratedt::makezombie($Apache::lonratedt::order[$idx]);
+ &LONCAPA::map::makezombie($LONCAPA::map::order[$idx]);
}
- for (my $i=$idx;$i<$#Apache::lonratedt::order;$i++) {
- $Apache::lonratedt::order[$i]=
- $Apache::lonratedt::order[$i+1];
+ for (my $i=$idx;$i<$#LONCAPA::map::order;$i++) {
+ $LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1];
}
- $#Apache::lonratedt::order--;
+ $#LONCAPA::map::order--;
} elsif ($cmd eq 'cut') {
- my (undef,$url)=split(':',$Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]]);
- &Apache::lonratedt::makezombie($Apache::lonratedt::order[$idx]);
- for (my $i=$idx;$i<$#Apache::lonratedt::order;$i++) {
- $Apache::lonratedt::order[$i]=
- $Apache::lonratedt::order[$i+1];
+ my (undef,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$idx]]);
+ &LONCAPA::map::makezombie($LONCAPA::map::order[$idx]);
+ for (my $i=$idx;$i<$#LONCAPA::map::order;$i++) {
+ $LONCAPA::map::order[$i] = $LONCAPA::map::order[$i+1];
}
- $#Apache::lonratedt::order--;
+ $#LONCAPA::map::order--;
} elsif ($cmd eq 'up') {
- if (($idx) && (defined($Apache::lonratedt::order[$idx-1]))) {
- my $i=$Apache::lonratedt::order[$idx-1];
- $Apache::lonratedt::order[$idx-1]=
- $Apache::lonratedt::order[$idx];
- $Apache::lonratedt::order[$idx]=$i;
+ if (($idx) && (defined($LONCAPA::map::order[$idx-1]))) {
+ my $i=$LONCAPA::map::order[$idx-1];
+ $LONCAPA::map::order[$idx-1] = $LONCAPA::map::order[$idx];
+ $LONCAPA::map::order[$idx] = $i;
}
} elsif ($cmd eq 'down') {
- if (defined($Apache::lonratedt::order[$idx+1])) {
- my $i=$Apache::lonratedt::order[$idx+1];
- $Apache::lonratedt::order[$idx+1]=
- $Apache::lonratedt::order[$idx];
- $Apache::lonratedt::order[$idx]=$i;
+ if (defined($LONCAPA::map::order[$idx+1])) {
+ my $i=$LONCAPA::map::order[$idx+1];
+ $LONCAPA::map::order[$idx+1] = $LONCAPA::map::order[$idx];
+ $LONCAPA::map::order[$idx] = $i;
}
} elsif ($cmd eq 'rename') {
- my $ratstr = $Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]];
+ my $ratstr = $LONCAPA::map::resources[$LONCAPA::map::order[$idx]];
my ($rtitle,@rrest)=split(/\:/,
- $Apache::lonratedt::resources[
- $Apache::lonratedt::order[$idx]]);
+ $LONCAPA::map::resources[$LONCAPA::map::order[$idx]]);
my $comment=
&HTML::Entities::decode($env{'form.title'});
$comment=~s/\\<\;/g;
$comment=~s/\>/\>\;/g;
$comment=~s/\:/\:/g;
if ($comment=~/\S/) {
- $Apache::lonratedt::resources[
- $Apache::lonratedt::order[$idx]]=
- $comment.':'.join(':',@rrest);
+ $LONCAPA::map::resources[$LONCAPA::map::order[$idx]]=
+ $comment.':'.join(':',@rrest);
}
+# Devalidate title cache
+ my $renamed_url=$rrest[0];
+# Has the :-escaping
+ $renamed_url=~s/\&colon\;/\:/g;
+ &Apache::lonnet::devalidate_title_cache($renamed_url);
}
# Store the changed version
($errtext,$fatal)=&storemap($coursenum,$coursedom,
@@ -1172,6 +1186,7 @@ sub editor {
# Group import/search
if ($env{'form.importdetail'}) {
my @imports;
+# &Apache::lonnet::logthis("imp detail ".$env{'form.importdetail'});
foreach (split(/\&/,$env{'form.importdetail'})) {
if (defined($_)) {
my ($name,$url)=split(/\=/,$_);
@@ -1193,10 +1208,9 @@ sub editor {
if ($env{'form.importmap'}=~/\w/) {
foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) {
my ($title,$url,$ext,$type)=split(/\:/,$_);
- my $idx=&Apache::lonratedt::getresidx($url);
- $Apache::lonratedt::resources[$idx]=$_;
- $Apache::lonratedt::order
- [$#Apache::lonratedt::order+1]=$idx;
+ my $idx=&LONCAPA::map::getresidx($url);
+ $LONCAPA::map::resources[$idx]=$_;
+ $LONCAPA::map::order[$#LONCAPA::map::order+1]=$idx;
}
# Store the changed version
($errtext,$fatal)=&storemap($coursenum,$coursedom,
@@ -1214,9 +1228,19 @@ sub editor {
# ---------------------------------------------------------------- Print screen
my $idx=0;
my $shown=0;
+ if (($ishidden) || ($isencrypted) || ($randompick>=0)) {
+ $r->print('
'.&mt('Caution: this folder is set to randomly pick a subset of resources. Adding or removing resources from this folder will change the set of resources that the students see, resulting in spurious or missing credit for completed problems, not limited to ones you modify. Do not modify the contents of this folder if it is in active student use.').'
');
+ }
$r->print('
');
- foreach (@Apache::lonratedt::order) {
- my ($name,$url)=split(/\:/,$Apache::lonratedt::resources[$_]);
+ foreach (@LONCAPA::map::order) {
+ my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$_]);
$name=&Apache::lonratsrv::qtescape($name);
$url=&Apache::lonratsrv::qtescape($url);
unless ($name) { $name=(split(/\//,$url))[-1]; }
@@ -1276,9 +1300,9 @@ sub process_file_upload {
}
($errtext,$fatal)=
&mapread($coursenum,$coursedom,$folder.'.'.$container);
- if ($#Apache::lonratedt::order<1) {
- $Apache::lonratedt::order[0]=1;
- $Apache::lonratedt::resources[1]='';
+ if ($#LONCAPA::map::order<1) {
+ $LONCAPA::map::order[0]=1;
+ $LONCAPA::map::resources[1]='';
}
if ($fatal) {
return 'failed';
@@ -1294,7 +1318,7 @@ sub process_file_upload {
}
# 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 $newidx=&Apache::lonratedt::getresidx();
+ my $newidx=&LONCAPA::map::getresidx();
$destination .= $newidx;
my $url=&Apache::lonnet::userfileupload('uploaddoc',1,$destination,
$parseaction,$allfiles,
@@ -1311,9 +1335,9 @@ sub process_file_upload {
$env{'user.domain'}.'___&&&___'.$comment;
}
- $Apache::lonratedt::resources[$newidx]=
- $comment.':'.$url.':'.$ext.':normal:res';
- $Apache::lonratedt::order[$#Apache::lonratedt::order+1]= $newidx;
+ $LONCAPA::map::resources[$newidx]=
+ $comment.':'.$url.':'.$ext.':normal:res';
+ $LONCAPA::map::order[$#LONCAPA::map::order+1]= $newidx;
($errtext,$fatal)=&storemap($coursenum,$coursedom,
$folder.'.'.$container);
if ($fatal) {
@@ -1394,7 +1418,7 @@ sub entryline {
my $renametitle=$title;
my $foldertitle=$title;
my $pagetitle=$title;
- my $orderidx=$Apache::lonratedt::order[$index];
+ my $orderidx=$LONCAPA::map::order[$index];
if ($title=~ /^(\d+)___&&&___(\w+)___&&&___(\w+)___&&&___(.*)$/ ) {
$foldertitle=&Apache::lontexconvert::msgtexconverted($4);
$renametitle=$4;
@@ -1430,17 +1454,17 @@ sub entryline {
my $incindex=$index+1;
my $selectbox='';
if (($folder!~/^supplemental/) &&
- ($#Apache::lonratedt::order>0) &&
+ ($#LONCAPA::map::order>0) &&
((split(/\:/,
- $Apache::lonratedt::resources[$Apache::lonratedt::order[0]]))[1]
+ $LONCAPA::map::resources[$LONCAPA::map::order[0]]))[1]
ne '') &&
((split(/\:/,
- $Apache::lonratedt::resources[$Apache::lonratedt::order[1]]))[1]
+ $LONCAPA::map::resources[$LONCAPA::map::order[1]]))[1]
ne '')) {
$selectbox=
''.
'