--- loncom/interface/londocs.pm 2012/10/31 12:54:13 1.501 +++ loncom/interface/londocs.pm 2012/11/14 02:49:19 1.508 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.501 2012/10/31 12:54:13 raeburn Exp $ +# $Id: londocs.pm,v 1.508 2012/11/14 02:49:19 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -454,7 +454,8 @@ sub docs_change_log { if ($folderpath eq '') { $folderpath = 'default&'.&escape(&mt('Main '.$crstype.' Documents')); } - $pathitem = ''; + $pathitem = ''; } my $readfile="/uploaded/$coursedom/$coursenum/$folder.$container"; my $jumpto = $readfile; @@ -1743,7 +1744,7 @@ sub handle_edit_cmd { sub editor { my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$crstype, - $supplementalflag,$orderhash,$iconpath,$uploadtag)=@_; + $supplementalflag,$orderhash,$iconpath,$pathitem)=@_; my $container= ($env{'form.pagepath'}) ? 'page' : 'sequence'; @@ -1828,6 +1829,18 @@ sub editor { if (defined($item)) { my ($name,$url,$residx)= map {&unescape($_)} split(/\=/,$item); + if ($url=~ m{^\Q/uploaded/$coursedom/$coursenum/\E(default|supplemental)_new\.(sequence|page)$}) { + my ($suffix,$errortxt,$locknotfreed) = + &newmap_suffix($1,$2,$coursedom,$coursenum); + if ($locknotfreed) { + $r->print($locknotfreed); + } + if ($suffix) { + $url =~ s/_new\./_$suffix./; + } else { + return $errortxt; + } + } push(@imports, [$name, $url, $residx]); } } @@ -1900,7 +1913,7 @@ sub editor { unless ($name) { $idx++; next; } $output .= &entryline($idx,$name,$url,$folder,$allowed,$res, $coursenum,$coursedom,$crstype, - $uploadtag,$supplementalflag); + $pathitem,$supplementalflag); $idx++; $shown++; } @@ -1949,7 +1962,7 @@ sub editor { &Apache::lonhtmlcommon::add_item_funclist( ''. - ''.$funcname.''. + ''.$funcname.''. ''.$funcname.''). &Apache::lonhtmlcommon::end_funclist())); } @@ -2118,7 +2131,7 @@ sub is_supplemental_title { sub entryline { my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom, - $crstype,$uploadtag,$supplementalflag)=@_; + $crstype,$pathitem,$supplementalflag)=@_; my ($foldertitle,$pagetitle,$renametitle); if (&is_supplemental_title($title)) { ($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title); @@ -2151,9 +2164,13 @@ sub entryline { $esc_path=&escape($env{'form.pagepath'}); $path = &HTML::Entities::encode($env{'form.pagepath'},'<>&"'); } + my $isexternal; if (!$supplementalflag && $residx) { my $currurl = $url; $currurl =~ s{^http(|s)(:|:)//}{/adm/wrapper/ext/}; + if ($currurl =~ m{^/adm/wrapper/ext/}) { + $isexternal = 1; + } my $path = 'uploaded/'. $env{'course.'.$env{'request.course.id'}.'.domain'}.'/'. $env{'course.'.$env{'request.course.id'}.'.num'}.'/'; @@ -2258,10 +2275,7 @@ sub entryline { $nocopy=1; } } - my $copylink=' '; - my $cutlink=' '; - my $removelink=' '; - + my ($copylink,$cutlink,$removelink,$renamelink); my $skip_confirm = 0; if ( $folder =~ /^supplemental/ || ($url =~ m{( /smppg$ @@ -2269,26 +2283,41 @@ sub entryline { |/aboutme$ |/navmaps$ |/bulletinboard$ - |\.html$ - |^/adm/wrapper/ext)}x)) { + |\.html$)}x) + || $isexternal) { $skip_confirm = 1; } - if (!$nocopy) { + if ($nocopy) { + $copylink=(<$lt{'cp'} +ENDCOPY + } else { $copylink=(<$lt{'cp'} ENDCOPY } - if (!$nocut) { + if ($nocut) { + $cutlink=(<$lt{'ct'} +ENDCUT + } else { $cutlink=(<$lt{'ct'} ENDCUT } - if (!$noremove) { + if ($noremove) { + $removelink=(<$lt{'rm'} +ENDREM + } else { $removelink=(<$lt{'rm'} ENDREM } + $renamelink=(<$lt{'rn'} +ENDREN $form_start = '
'; @@ -2318,11 +2347,12 @@ END $selectbox $form_end - + $removelink +$renamelink $cutlink - $lt{'rn'} $copylink + END @@ -2459,21 +2489,30 @@ $form_common.' $lt{'ti'}  - $uploadtag + $pathitem
EXTLNK - } else { - my ($cfile,$home,$switchserver,$uploaded) = - &Apache::lonnet::can_edit_resource($fileloc,$coursenum,$coursedom); - if (($cfile ne '') && ($symb ne '')) { + } else { + my ($cfile,$home,$switchserver,$forceedit,$forceview) = + &Apache::lonnet::can_edit_resource($fileloc,$coursenum,$coursedom,$orig_url); + my $geteditlink; + if ($supplementalflag) { + if ($orig_url eq "/adm/$env{'user.domain'}/$env{'user.name'}/aboutme") { + $geteditlink = 1; + } + } elsif (($cfile ne '') && ($symb ne '')) { + $geteditlink = 1; + } + if ($geteditlink) { my $jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home, $switchserver, - $uploaded,$symb); + $forceedit, + undef,$symb); if ($jscall) { $editlink = ' '.&mt('Edit').''; @@ -2536,6 +2575,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() @@ -3232,7 +3295,7 @@ sub handler { my $addentries = {}; my $container; my $containertag; - my $uploadtag; + my $pathitem; # Do we directly jump somewhere? @@ -3365,7 +3428,7 @@ sub handler { $container='page'; $containertag = ''. ''; - $uploadtag = + $pathitem = ''. ''. ''; @@ -3379,7 +3442,7 @@ sub handler { } } $containertag = ''; - $uploadtag = ''; + $pathitem = ''; } if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { $showdoc='/'.$1; @@ -3536,6 +3599,7 @@ sub handler { 'srch' => 'Search', 'impo' => 'Import', 'lnks' => 'Import from Stored Links', + 'impm' => 'Import from Assembled Map', 'selm' => 'Select Map', 'load' => 'Load Map', 'reco' => 'Recover Deleted Documents', @@ -3623,7 +3687,7 @@ IMSFORM
$lt{'title'}:
- $uploadtag + $pathitem
@@ -3635,26 +3699,30 @@ IMSFORM FUFORM - my $simpleeditdefaultform=(< + my $importpubform=(< + $lt{'impm'}$help{'Load_Map'} +
+ +
+ SEDFFORM - my @simpleeditdefaultforma = ( - { ''.$lt{srch}.'' => "$uploadtag$lt{'srch'}" }, + my @importpubforma = ( + { ''.$lt{srch}.'' => $pathitem."$lt{'srch'}" }, { ''.$lt{impo}.'' => "$lt{'impo'}$help{'Importing_LON-CAPA_Resource'}" }, { ''.$lt{lnks}.'' => "$lt{'lnks'}" }, + { ''.$lt{impm}.'' => $importpubform } ); - $simpleeditdefaultform .= &create_form_ul(&create_list_elements(@simpleeditdefaultforma)); - $simpleeditdefaultform .=(< - $lt{'copm'}
-
- - $help{'Load_Map'} - -SEDFFORM + $importpubform = &create_form_ul(&create_list_elements(@importpubforma)); my $extresourcesform=(<$lt{'extr'}$help{'Adding_External_Resource'} @@ -3667,7 +3735,7 @@ SEDFFORM
$lt{'title'}:
- $uploadtag + $pathitem
@@ -3692,8 +3760,8 @@ ERFORM HIDDENFORM - $r->print(&makesimpleeditform($uploadtag)."\n". - &makedocslogform($uploadtag."\n". + $r->print(&makesimpleeditform($pathitem)."\n". + &makedocslogform($pathitem."\n". ''."\n")); } @@ -3716,7 +3784,7 @@ HIDDENFORM $folder='default'; $savefolderpath = $env{'form.folderpath'}; $env{'form.folderpath'}='default&'.&escape(&mt('Content')); - $uploadtag = ''; } my $postexec=''; @@ -3730,10 +3798,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'; @@ -3743,7 +3809,7 @@ HIDDENFORM my $newnavform=(< - $uploadtag + $pathitem $lt{'navc'} @@ -3753,7 +3819,7 @@ NNFORM my $newsmppageform=(< - $uploadtag + $pathitem $lt{'sipa'} $help{'Simple Page'} @@ -3763,7 +3829,7 @@ NSPFORM my $newsmpproblemform=(< - $uploadtag + $pathitem $lt{'sipr'} $help{'Simple Problem'} @@ -3774,7 +3840,7 @@ NSPROBFORM my $newdropboxform=(< - $uploadtag + $pathitem $lt{'drbx'} @@ -3783,7 +3849,7 @@ NDBFORM my $newexuploadform=(< - $uploadtag + $pathitem $lt{'scuf'} $help{'Score_Upload_Form'} @@ -3793,7 +3859,7 @@ NEXUFORM my $newbulform=(< - $uploadtag + $pathitem $lt{'bull'} $help{'Bulletin Board'} @@ -3803,7 +3869,7 @@ NBFORM my $newaboutmeform=(< - $uploadtag + $pathitem $lt{'mypi'} @@ -3814,7 +3880,7 @@ NAMFORM my $newaboutsomeoneform=(< - $uploadtag + $pathitem $lt{'abou'} @@ -3824,7 +3890,7 @@ NASOFORM my $newrosterform=(< - $uploadtag + $pathitem $lt{'rost'} @@ -3856,7 +3922,7 @@ NPFORM $newfolderform=(< - + $pathitem $lt{'newf'}$help{'Adding_Folders'} @@ -3866,7 +3932,7 @@ NFFORM my $newsylform=(< - $uploadtag + $pathitem $lt{'syll'} @@ -3878,7 +3944,7 @@ NSYLFORM my $newgroupfileform=(< - $uploadtag + $pathitem $lt{'grpo'} @@ -3920,7 +3986,7 @@ NGFFORM my %orderhash = ( 'aa' => ['Import Content',$fileuploadform], - 'bb' => ['Published Content',$simpleeditdefaultform], + 'bb' => ['Published Content',$importpubform], 'cc' => ['Grading Resources',$gradingform], ); unless ($env{'form.pagepath'}) { @@ -3932,7 +3998,7 @@ unless ($env{'form.pagepath'}) { $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('

'.$error.'

'); } @@ -3957,12 +4023,11 @@ unless ($env{'form.pagepath'}) { $env{'form.folderpath'} = $savefolderpath; } $env{'form.pagepath'} = ''; + $pathitem = ''; if ($allowed) { my $folderseq= - '/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_'.time. - '.sequence'; - - my $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); + '/uploaded/'.$coursedom.'/'.$coursenum.'/supplemental_new.sequence'; my $supupdocform=(< @@ -3981,7 +4046,7 @@ unless ($env{'form.pagepath'}) { $lt{'comment'}:

- + $pathitem @@ -3990,7 +4055,7 @@ SUPDOCFORM my $supnewfolderform=(< - + $pathitem $lt{'newf'} $help{'Adding_Folders'} @@ -4008,8 +4073,8 @@ SNFFORM
$lt{'title'}:
- $uploadtag
+ $pathitem @@ -4019,7 +4084,7 @@ ERFORM my $supnewsylform=(< - + $pathitem $lt{'syll'} @@ -4030,7 +4095,7 @@ SNSFORM my $supnewaboutmeform=(< - + $pathitem $lt{'mypi'} @@ -4060,14 +4125,14 @@ my %suporderhash = ( ); if ($supplementalflag) { my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, - $supplementalflag,\%suporderhash,$iconpath,$uploadtag); + $supplementalflag,\%suporderhash,$iconpath,$pathitem); if ($error) { $r->print('

'.$error.'

'); } } } elsif ($supplementalflag) { my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype, - $supplementalflag,'',$iconpath,$uploadtag); + $supplementalflag,'',$iconpath,$pathitem); if ($error) { $r->print('

'.$error.'

'); } @@ -4562,10 +4627,22 @@ function toggleUpload(caller) { } document.getElementById('upload'+blocks[i]+'form').style.display=disp; } - resize_scrollbox('contentscroll','1','0'); + resize_scrollbox('contentscroll','1','1'); + return; +} + +function toggleMap() { + var disp = 'none'; + var curr = document.getElementById('importmapform').style.display; + if (curr == 'none') { + disp='block'; + } + document.getElementById('importmapform').style.display=disp; + resize_scrollbox('contentscroll','1','1'); return; } + function extUrlPreview(caller) { if (document.getElementById(caller)) { var url = document.getElementById(caller).value; @@ -4768,6 +4845,7 @@ function showPage(current, pageId, nav, currentData.style.display = 'block'; activeTab = pageId; toggleUpload(); + toggleMap(); if (nav == 'mainnav') { var storedpath = "$docs_folderpath"; if (storedpath == '') {