";
+ $line.="$extresform";
$rand_pick_text = ' ' if ($rand_pick_text eq '');
$rand_order_text = ' ' if ($rand_order_text eq '');
if (($allowed) && ($folder!~/^supplemental/)) {
@@ -2536,6 +2527,30 @@ ENDPARMS
return $line;
}
+sub newmap_suffix {
+ my ($area,$container,$coursedom,$coursenum) = @_;
+ my ($prefix,$idtype,$errtext,$locknotfreed);
+ $prefix = 'docs';
+ if ($area eq 'supplemental') {
+ $prefix = 'supp';
+ }
+ $prefix .= $container;
+ $idtype = 'concat';
+ my ($suffix,$freedlock,$error) =
+ &Apache::lonnet::get_timebased_id($prefix,'num','uploadedmaps',
+ $coursedom,$coursenum);
+ if (!$suffix) {
+ $errtext = &mt('Failed to acquire a unique timestamp-based suffix for the new folder/page.');
+ if ($error) {
+ $errtext .= ' '.$error;
+ }
+ }
+ if ($freedlock ne 'ok') {
+ $locknotfreed = '
'.&mt('There was a problem removing a lockfile. This will prevent creation of additional folders or composite pages in this course. Please contact the domain coordinator for your LON-CAPA domain.').'
';
+ }
+ return ($suffix,$errtext,$locknotfreed);
+}
+
=pod
=item tiehash()
@@ -3203,7 +3218,7 @@ sub handler {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['folderpath','pagepath',
'pagesymb','forcesupplement','forcestandard',
- 'tools','symb','command']);
+ 'tools','symb','command','supppath']);
# standard=1: this is a "new-style" course with an uploaded map as top level
# standard=2: this is a "old-style" course, and there is nothing we can do
@@ -3232,7 +3247,7 @@ sub handler {
my $addentries = {};
my $container;
my $containertag;
- my $uploadtag;
+ my $pathitem;
# Do we directly jump somewhere?
@@ -3273,21 +3288,31 @@ sub handler {
}
}
}
- $path .= '&'.&Apache::lonhtmlcommon::entity_encode($mapurl).'&'.
- &Apache::lonhtmlcommon::entity_encode($mapresobj->title()).
+ $path =~ s/^\&//;
+ my $maptitle = $mapresobj->title();
+ if ($mapurl eq 'default') {
+ $maptitle = 'Main Course Documents';
+ }
+ $path .= (($path ne '')? '&' : '').
+ &Apache::lonhtmlcommon::entity_encode($mapurl).'&'.
+ &Apache::lonhtmlcommon::entity_encode($maptitle).
':'.$mapresobj->randompick().
':'.$mapresobj->randomout().
':'.$mapresobj->encrypted().
':'.$mapresobj->randomorder();
} else {
my $maptitle = &Apache::lonnet::gettitle($mapurl);
- $path = '&default&...::::'.
- '&'.&Apache::lonhtmlcommon::entity_encode($mapurl).'&'.
- &Apache::lonhtmlcommon::entity_encode($maptitle).'::::';
+ if ($mapurl eq 'default') {
+ $maptitle = 'Main Course Documents';
+ }
+ $path = &Apache::lonhtmlcommon::entity_encode($mapurl).'&'.
+ &Apache::lonhtmlcommon::entity_encode($maptitle).'::::';
+ }
+ unless ($mapurl eq 'default') {
+ $path = 'default&'.
+ &Apache::lonhtmlcommon::entity_encode('Main Course Documents').
+ '::::&'.$path;
}
- $path = 'default&'.
- &Apache::lonhtmlcommon::entity_encode('Main Course Documents').
- $path;
if ($type eq 'sequence') {
$env{'form.folderpath'}=$path;
$env{'form.pagepath'}='';
@@ -3314,10 +3339,10 @@ sub handler {
$stored_folderpath='docs_sup_folderpath';
}
-# No folderpath, no pagepath, see if we have something stored
- if ((!$env{'form.folderpath'}) && (!$env{'form.pagepath'})) {
+# No folderpath, no pagepath, and in edit mode, see if we have something stored
+ if ((!$env{'form.folderpath'}) && (!$env{'form.pagepath'}) && $allowed) {
&Apache::loncommon::restore_course_settings($stored_folderpath,
- {'folderpath' => 'scalar'});
+ {'folderpath' => 'scalar'});
}
# If we are not allowed to make changes, all we can see are supplemental docs
@@ -3349,9 +3374,11 @@ sub handler {
# Store this
unless ($toolsflag) {
- &Apache::loncommon::store_course_settings($stored_folderpath,
- {'pagepath' => 'scalar',
- 'folderpath' => 'scalar'});
+ if ($allowed) {
+ &Apache::loncommon::store_course_settings($stored_folderpath,
+ {'pagepath' => 'scalar',
+ 'folderpath' => 'scalar'});
+ }
if ($env{'form.folderpath'}) {
my (@folderpath)=split('&',$env{'form.folderpath'});
$env{'form.foldername'}=&unescape(pop(@folderpath));
@@ -3365,7 +3392,7 @@ sub handler {
$container='page';
$containertag = ''.
'';
- $uploadtag =
+ $pathitem =
''.
''.
'';
@@ -3379,7 +3406,7 @@ sub handler {
}
}
$containertag = '';
- $uploadtag = '';
+ $pathitem = '';
}
if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) {
$showdoc='/'.$1;
@@ -3427,7 +3454,8 @@ sub handler {
$script .= &editing_js($udom,$uname,$supplementalflag).
&history_tab_js().
&inject_data_js().
- &Apache::lonhtmlcommon::resize_scrollbox_js('docs',$tabidstr);
+ &Apache::lonhtmlcommon::resize_scrollbox_js('docs',$tabidstr).
+ &Apache::lonextresedit::extedit_javascript();
$addentries = {
onload => "javascript:resize_scrollbox('contentscroll','1','1');",
};
@@ -3449,22 +3477,26 @@ sub handler {
# Breadcrumbs
&Apache::lonhtmlcommon::clear_breadcrumbs();
- unless ($showdoc) {
+
+ if ($showdoc) {
+ $r->print(&Apache::loncommon::start_page("$crstype documents",undef,
+ {'force_register' => $showdoc,}));
+ } elsif ($r->uri eq '/adm/supplemental') {
+ my $brcrum = &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype);
+ $r->print(&Apache::loncommon::start_page("Supplemental $crstype Content",undef,
+ {'bread_crumbs' => $brcrum,}));
+ } else {
&Apache::lonhtmlcommon::add_breadcrumb({
href=>"/adm/coursedocs",text=>"$crstype Contents"});
$r->print(&Apache::loncommon::start_page("$crstype Contents", $script,
- {'force_register' => $showdoc,
- 'add_entries' => $addentries,
- })
+ {'add_entries' => $addentries}
+ )
.&Apache::loncommon::help_open_menu('','',273,'RAT')
.&Apache::lonhtmlcommon::breadcrumbs(
'Editing '.$crstype.' Contents',
'Docs_Adding_Course_Doc')
);
- } else {
- $r->print(&Apache::loncommon::start_page("$crstype documents",undef,
- {'force_register' => $showdoc,}));
}
my %allfiles = ();
@@ -3565,10 +3597,6 @@ sub handler {
'prev' => 'Preview',
'lnk' => 'Add Link',
'parse' => 'Upload embedded images/multimedia files if HTML file',
- 'nd' => 'Upload Document',
- 'pm' => 'Published Map',
- 'sd' => 'Special Document',
- 'mo' => 'More Options',
);
# -----------------------------------------------------------------------------
my $fileupload=(<
$lt{'imsf'} $help{'Importing_IMS_Course'}
HIDDENFORM
- $r->print(&makesimpleeditform($uploadtag)."\n".
- &makedocslogform($uploadtag."\n".
+ $r->print(&makesimpleeditform($pathitem)."\n".
+ &makedocslogform($pathitem."\n".
''."\n"));
}
# Generate the tabs
- my $mode;
+ my ($mode,$needs_end);
if (($supplementalflag) && (!$allowed)) {
- &Apache::lonnavdisplay::startContentScreen($r,'supplemental');
+ my @folders = split('&',$env{'form.folderpath'});
+ unless (@folders > 2) {
+ &Apache::lonnavdisplay::startContentScreen($r,'supplemental');
+ $needs_end = 1;
+ }
} else {
$r->print(&startContentScreen(($supplementalflag?'suppdocs':'docs')));
+ $needs_end = 1;
}
#
@@ -3721,7 +3736,7 @@ HIDDENFORM
$folder='default';
$savefolderpath = $env{'form.folderpath'};
$env{'form.folderpath'}='default&'.&escape(&mt('Content'));
- $uploadtag = '';
}
my $postexec='';
@@ -3735,10 +3750,8 @@ HIDDENFORM
} else {
#$postexec='self.close();';
}
- my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time.
- '.sequence';
- my $pageseq = '/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time.
- '.page';
+ my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_new.sequence';
+ my $pageseq = '/uploaded/'.$coursedom.'/'.$coursenum.'/default_new.page';
my $container='sequence';
if ($env{'form.pagepath'}) {
$container='page';
@@ -3748,7 +3761,7 @@ HIDDENFORM
my $newnavform=(<
- $uploadtag
+ $pathitem
$lt{'navc'}
@@ -3758,7 +3771,7 @@ NNFORM
my $newsmppageform=(<
- $uploadtag
+ $pathitem
$lt{'sipa'}
$help{'Simple Page'}
@@ -3768,7 +3781,7 @@ NSPFORM
my $newsmpproblemform=(<
- $uploadtag
+ $pathitem
$lt{'sipr'}
$help{'Simple Problem'}
@@ -3779,7 +3792,7 @@ NSPROBFORM
my $newdropboxform=(<
- $uploadtag
+ $pathitem
$lt{'drbx'}
@@ -3788,7 +3801,7 @@ NDBFORM
my $newexuploadform=(<
- $uploadtag
+ $pathitem
$lt{'scuf'}
$help{'Score_Upload_Form'}
@@ -3798,7 +3811,7 @@ NEXUFORM
my $newbulform=(<
- $uploadtag
+ $pathitem
$lt{'bull'}
$help{'Bulletin Board'}
@@ -3808,7 +3821,7 @@ NBFORM
my $newaboutmeform=(<
- $uploadtag
+ $pathitem
$lt{'mypi'}
@@ -3819,7 +3832,7 @@ NAMFORM
my $newaboutsomeoneform=(<
- $uploadtag
+ $pathitem
$lt{'abou'}
@@ -3829,7 +3842,7 @@ NASOFORM
my $newrosterform=(<
- $uploadtag
+ $pathitem
$lt{'rost'}
@@ -3861,7 +3874,7 @@ NPFORM
$newfolderform=(<
-
+ $pathitem
$lt{'newf'}$help{'Adding_Folders'}
@@ -3871,7 +3884,7 @@ NFFORM
my $newsylform=(<
- $uploadtag
+ $pathitem
$lt{'syll'}
@@ -3883,7 +3896,7 @@ NSYLFORM
my $newgroupfileform=(<
- $uploadtag
+ $pathitem
$lt{'grpo'}
@@ -3931,13 +3944,13 @@ my %orderhash = (
unless ($env{'form.pagepath'}) {
$orderhash{'00'} = ['Newfolder',$newfolderform];
$orderhash{'dd'} = ['Collaboration',$communityform];
- $orderhash{'ee'} = ['Special Documents',$specialdocumentsform];
+ $orderhash{'ee'} = ['Special Pages',$specialdocumentsform];
}
$hadchanges=0;
unless (($supplementalflag || $toolsflag)) {
my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,
- $supplementalflag,\%orderhash,$iconpath,$uploadtag);
+ $supplementalflag,\%orderhash,$iconpath,$pathitem);
if ($error) {
$r->print('