--- loncom/interface/londocs.pm 2012/12/02 22:40:09 1.518 +++ loncom/interface/londocs.pm 2012/12/03 14:47:30 1.519 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.518 2012/12/02 22:40:09 raeburn Exp $ +# $Id: londocs.pm,v 1.519 2012/12/03 14:47:30 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -391,18 +391,15 @@ sub docs_change_log { my %orderhash; my $container='sequence'; my $pathitem; - if ($env{'form.pagepath'}) { + if ($env{'form.folderpath'} =~ /\:1$/) { $container='page'; - $pathitem = ''; - } else { - my $folderpath=$env{'form.folderpath'}; - if ($folderpath eq '') { - $folderpath = 'default&'.&escape(&mt('Main '.$crstype.' Documents')); - } - $pathitem = ''; } + my $folderpath=$env{'form.folderpath'}; + if ($folderpath eq '') { + $folderpath = 'default&'.&escape(&mt('Main '.$crstype.' Documents').':::::'); + } + $pathitem = ''; my $readfile="/uploaded/$coursedom/$coursenum/$folder.$container"; my $jumpto = $readfile; $jumpto =~ s{^/}{}; @@ -761,16 +758,9 @@ sub print_paste_buffer { } } $r->print('
'.$othercrs); - if ($container eq 'page') { - $r->print(' - - -'); - } else { - $r->print(' + $r->print(' '); - } $r->print(''); } else { $r->print(&mt('Paste buffer contains:').' '.$buffer. @@ -1692,13 +1682,16 @@ sub handle_edit_cmd { sub editor { my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$crstype, $supplementalflag,$orderhash,$iconpath,$pathitem)=@_; - my $container= ($env{'form.pagepath'}) ? 'page' - : 'sequence'; - my ($randompick,$ishidden,$isencrypted,$plain,$is_random_order); + my ($randompick,$ishidden,$isencrypted,$plain,$is_random_order,$container); if ($allowed) { - (my $breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order) = + (my $breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain, + $is_random_order,$container) = &Apache::lonhtmlcommon::docs_breadcrumbs($allowed,$crstype,1); $r->print($breadcrumbtrail); + } elsif ($env{'form.folderpath'} =~ /\:1$/) { + $container = 'page'; + } else { + $container = 'sequence'; } my $jumpto = "uploaded/$coursedom/$coursenum/$folder.$container"; @@ -1862,7 +1855,7 @@ sub editor { unless ($name) { $idx++; next; } $output .= &entryline($idx,$name,$url,$folder,$allowed,$res, $coursenum,$coursedom,$crstype, - $pathitem,$supplementalflag); + $pathitem,$supplementalflag,$container); $idx++; $shown++; } @@ -1948,7 +1941,7 @@ sub process_file_upload { my $errtext=''; my $fatal=0; my $container='sequence'; - if ($env{'form.pagepath'}) { + if ($env{'form.folderpath'} =~ /:1$/) { $container='page'; } ($errtext,$fatal)= @@ -2038,7 +2031,6 @@ sub process_file_upload { my $archiveurl = &HTML::Entities::encode($url,'<>&"'); my %archiveitems = ( folderpath => $env{'form.folderpath'}, - pagepath => $env{'form.pagepath'}, cmd => $nextphase, newidx => $newidx, position => $position, @@ -2093,16 +2085,14 @@ sub is_supplemental_title { sub entryline { my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom, - $crstype,$pathitem,$supplementalflag)=@_; - my ($foldertitle,$pagetitle,$renametitle); + $crstype,$pathitem,$supplementalflag,$container)=@_; + my ($foldertitle,$renametitle); if (&is_supplemental_title($title)) { ($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title); - $pagetitle = $foldertitle; } else { $title=&HTML::Entities::encode($title,'"<>&\''); $renametitle=$title; $foldertitle=$title; - $pagetitle=$title; } my $orderidx=$LONCAPA::map::order[$index]; @@ -2113,19 +2103,17 @@ sub entryline { my $line=&Apache::loncommon::start_data_table_row(); my ($form_start,$form_end,$form_common); # Edit commands - my ($container, $type, $esc_path, $path, $symb); + my ($type, $esc_path, $path, $symb); + if ($container eq 'page') { + $type = 'page'; + } else { + $type = 'folder'; + } if ($env{'form.folderpath'}) { - $type = 'folder'; - $container = 'sequence'; $esc_path=&escape($env{'form.folderpath'}); $path = &HTML::Entities::encode($env{'form.folderpath'},'<>&"'); # $htmlfoldername=&HTML::Entities::encode($env{'form.foldername'},'<>&"'); } - if ($env{'form.pagepath'}) { - $type = $container = 'page'; - $esc_path=&escape($env{'form.pagepath'}); - $path = &HTML::Entities::encode($env{'form.pagepath'},'<>&"'); - } my $isexternal; if ($residx) { my $currurl = $url; @@ -2258,7 +2246,7 @@ sub entryline { ENDCOPY } else { $copylink=(<$lt{'cp'} +$lt{'cp'} ENDCOPY } if ($nocut) { @@ -2267,7 +2255,7 @@ ENDCOPY ENDCUT } else { $cutlink=(<$lt{'ct'} +$lt{'ct'} ENDCUT } if ($noremove) { @@ -2276,12 +2264,12 @@ ENDCUT ENDREM } else { $removelink=(<$lt{'rm'} +$lt{'rm'} ENDREM } unless ($isexternal) { $renamelink=(<$lt{'rn'} +$lt{'rn'} ENDREN } $form_start = ' @@ -2326,22 +2314,18 @@ END my ($extension)=($url=~/\.(\w+)$/); my $uploaded=($url=~/^\/*uploaded\//); my $icon=&Apache::loncommon::icon($url); - my $isfolder=0; - my $ispage=0; - my $folderarg; - my $pagearg; - my $pagefile; + my $isfolder; + my $ispage; + my $containerarg; if ($uploaded) { if (($extension eq 'sequence') || ($extension eq 'page')) { $url=~/\Q$coursenum\E\/([\/\w]+)\.\Q$extension\E$/; - my $containerarg = $1; + $containerarg = $1; if ($extension eq 'sequence') { $icon=$iconpath.'navmap.folder.closed.gif'; - $folderarg=$containerarg; $isfolder=1; } else { $icon=$iconpath.'page.gif'; - $pagearg=$containerarg; $ispage=1; } if ($allowed) { @@ -2359,10 +2343,6 @@ END $orig_url=~s{http(:|:)//https(:|:)//}{https$2//}; $url=~s{^http(|s)(:|:)//}{/adm/wrapper/ext/}; if (!$supplementalflag && $residx && $symb) { - if ($container eq 'page') { - $url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]); - $url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb); - } if ((!$isfolder) && (!$ispage)) { (undef,undef,$url)=&Apache::lonnet::decode_symb($symb); $url=&Apache::lonnet::clutter($url); @@ -2387,17 +2367,17 @@ END } } my ($rand_pick_text,$rand_order_text); - if ($isfolder || $extension eq 'sequence') { + if ($isfolder || $ispage || $extension eq 'sequence' || $extension eq 'page') { my $foldername=&escape($foldertitle); my $folderpath=$env{'form.folderpath'}; if ($folderpath) { $folderpath.='&' }; if (!$allowed && $supplementalflag) { - $folderpath.=$folderarg.'&'.$foldername; + $folderpath.=$containerarg.'&'.$foldername; $url.='folderpath='.&escape($folderpath); } else { # Append randompick number, hidden, and encrypted with ":" to foldername, # so it gets transferred between levels - $folderpath.=$folderarg.'&'.$foldername. + $folderpath.=$containerarg.'&'.$foldername. ':'.(&LONCAPA::map::getparameter($orderidx, 'parameter_randompick'))[0] .':'.((&LONCAPA::map::getparameter($orderidx, @@ -2405,7 +2385,8 @@ END .':'.((&LONCAPA::map::getparameter($orderidx, 'parameter_encrypturl'))[0]=~/^yes$/i) .':'.((&LONCAPA::map::getparameter($orderidx, - 'parameter_randomorder'))[0]=~/^yes$/i); + 'parameter_randomorder'))[0]=~/^yes$/i) + .':'.$ispage; $url.='folderpath='.&escape($folderpath); my $rpicknum = (&LONCAPA::map::getparameter($orderidx, 'parameter_randompick'))[0]; @@ -2439,15 +2420,7 @@ $form_common.' $url .= '&idx='.$orderidx; } } - if ($ispage) { - my $pagename=&escape($pagetitle); - my $pagepath; - my $folderpath=$env{'form.folderpath'}; - if ($folderpath) { $pagepath = $folderpath.'&' }; - $pagepath.=$pagearg.'&'.$pagename; - $url.='pagepath='.&escape($pagepath). - '&pagesymb='.&escape($symb); - } + my ($tdalign,$tdwidth); if ($allowed) { my $fileloc = &Apache::lonnet::declutter(&Apache::lonnet::filelocation('',$orig_url)); @@ -2471,14 +2444,16 @@ $form_common.' } } } + $tdalign = ' align="right" valign="top"'; + $tdwidth = ' width="80%"'; } my $reinit; if ($crstype eq 'Community') { $reinit = &mt('(re-initialize community to access)'); } else { $reinit = &mt('(re-initialize course to access)'); - } - $line.=''.$editlink.$renamelink; + } + $line.=''.$editlink.$renamelink; if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) { $line.=''; } elsif ($url) { @@ -2487,7 +2462,7 @@ $form_common.' } else { $line.=''; } - $line.=''; + $line.=''; if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) { $line.=''.$title.''; } elsif ($url) { @@ -3038,11 +3013,6 @@ sub changewarning { my $pathvar='folderpath'; my $path=&escape($env{'form.folderpath'}); if (!defined($url)) { - if (defined($env{'form.pagepath'})) { - $pathvar='pagepath'; - $path=&escape($env{'form.pagepath'}); - $path.='&pagesymb='.&escape($env{'form.pagesymb'}); - } $url='/adm/coursedocs?'.$pathvar.'='.$path; } my $course_type = &Apache::loncommon::course_type(); @@ -3216,8 +3186,8 @@ sub handler { # Get the parameters that may be needed # &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['folderpath','pagepath', - 'pagesymb','forcesupplement','forcestandard', + ['folderpath', + 'forcesupplement','forcestandard', 'tools','symb','command','supppath']); # standard=1: this is a "new-style" course with an uploaded map as top level @@ -3232,7 +3202,7 @@ sub handler { my $supplementalflag=($env{'form.folderpath'}=~/^supplemental/); - if (($env{'form.folderpath'}=~/^default/) || $env{'form.folderpath'} eq "" || ($env{'form.pagepath'})) { + if (($env{'form.folderpath'}=~/^default/) || ($env{'form.folderpath'} eq "")) { $supplementalflag=0; } if ($env{'form.forcesupplement'}) { $supplementalflag=1; } @@ -3284,7 +3254,8 @@ sub handler { ':'.$res->randompick(). ':'.$res->randomout(). ':'.$res->encrypted(). - ':'.$res->randomorder(); + ':'.$res->randomorder(). + ':'.$res->is_page(); } } } @@ -3299,38 +3270,33 @@ sub handler { ':'.$mapresobj->randompick(). ':'.$mapresobj->randomout(). ':'.$mapresobj->encrypted(). - ':'.$mapresobj->randomorder(); + ':'.$mapresobj->randomorder(). + ':'.$mapresobj->is_page(); } else { my $maptitle = &Apache::lonnet::gettitle($mapurl); + my $ispage = (($type eq 'page')? 1 : ''); if ($mapurl eq 'default') { $maptitle = 'Main Course Documents'; } $path = &Apache::lonhtmlcommon::entity_encode($mapurl).'&'. - &Apache::lonhtmlcommon::entity_encode($maptitle).'::::'; + &Apache::lonhtmlcommon::entity_encode($maptitle).':::::'.$ispage; } unless ($mapurl eq 'default') { $path = 'default&'. &Apache::lonhtmlcommon::entity_encode('Main Course Documents'). - '::::&'.$path; - } - if ($type eq 'sequence') { - $env{'form.folderpath'}=$path; - $env{'form.pagepath'}=''; - } else { - $env{'form.pagepath'}=$path; - $env{'form.folderpath'}=''; + ':::::&'.$path; } + $env{'form.folderpath'}=$path; } elsif ($env{'form.supppath'} ne '') { $env{'form.folderpath'}=$env{'form.supppath'}; } } elsif ($env{'form.command'} eq 'editdocs') { $env{'form.folderpath'} = 'default&'. - &Apache::lonhtmlcommon::entity_encode('Main Course Content'); - $env{'form.pagepath'}=''; + &Apache::lonhtmlcommon::entity_encode('Main Course Content'). + ':::::'; } elsif ($env{'form.command'} eq 'editsupp') { $env{'form.folderpath'} = 'default&'. &Apache::lonhtmlcommon::entity_encode('Supplemental Content'); - $env{'form.pagepath'}=''; } # Where do we store these for when we come back? @@ -3339,24 +3305,18 @@ sub handler { $stored_folderpath='docs_sup_folderpath'; } -# No folderpath, no pagepath, and in edit mode, see if we have something stored - if ((!$env{'form.folderpath'}) && (!$env{'form.pagepath'}) && $allowed) { +# No folderpath, and in edit mode, see if we have something stored + if ((!$env{'form.folderpath'}) && $allowed) { &Apache::loncommon::restore_course_settings($stored_folderpath, {'folderpath' => 'scalar'}); } # If we are not allowed to make changes, all we can see are supplemental docs if (!$allowed) { - $env{'form.pagepath'}=''; unless ($env{'form.folderpath'} =~ /^supplemental/) { $env{'form.folderpath'} = &supplemental_base(); } } -# If we still not have a folderpath, see if we can resurrect at pagepath - if (!$env{'form.folderpath'} && $allowed) { - &Apache::loncommon::restore_course_settings($stored_folderpath, - {'pagepath' => 'scalar'}); - } # Make the zeroth entry in supplemental docs page paths, so we can get to top level if ($env{'form.folderpath'} =~ /^supplemental_\d+/) { $env{'form.folderpath'} = &supplemental_base() @@ -3364,11 +3324,12 @@ sub handler { $env{'form.folderpath'}; } # If after all of this, we still don't have any paths, make them - unless (($env{'form.pagepath'}) || ($env{'form.folderpath'})) { + unless ($env{'form.folderpath'}) { if ($supplementalflag) { $env{'form.folderpath'}=&supplemental_base(); } else { - $env{'form.folderpath'}='default'; + $env{'form.folderpath'}='default'.&escape(&mt('Main '.$crstype.' Documents')). + ':::::'; } } @@ -3376,38 +3337,29 @@ sub handler { unless ($toolsflag) { if ($allowed) { &Apache::loncommon::store_course_settings($stored_folderpath, - {'pagepath' => 'scalar', - 'folderpath' => 'scalar'}); + {'folderpath' => 'scalar'}); } + my $folderpath; if ($env{'form.folderpath'}) { - my (@folderpath)=split('&',$env{'form.folderpath'}); - $env{'form.foldername'}=&unescape(pop(@folderpath)); - $env{'form.folder'}=pop(@folderpath); - $container='sequence'; - } - if ($env{'form.pagepath'}) { - my (@pagepath)=split('&',$env{'form.pagepath'}); - $env{'form.pagename'}=&unescape(pop(@pagepath)); - $env{'form.folder'}=pop(@pagepath); - $container='page'; - $containertag = ''. - ''; - $pathitem = - ''. - ''. - ''; + $folderpath = $env{'form.folderpath'}; + my (@folders)=split('&',$env{'form.folderpath'}); + $env{'form.foldername'}=&unescape(pop(@folders)); + if ($env{'form.foldername'} =~ /\:1$/) { + $container = 'page'; + } else { + $container = 'sequence'; + } + $env{'form.folder'}=pop(@folders); } else { - my $folderpath=$env{'form.folderpath'}; - if (!$folderpath) { - if ($env{'form.folder'} eq '' || - $env{'form.folder'} eq 'supplemental') { - $folderpath='default&'. - &escape(&mt('Main '.$crstype.' Documents')); - } + if ($env{'form.folder'} eq '' || + $env{'form.folder'} eq 'supplemental') { + $folderpath='default&'. + &escape(&mt('Main '.$crstype.' Documents')). + ':::::'; } - $containertag = ''; - $pathitem = ''; } + $containertag = ''; + $pathitem = ''; if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { $showdoc='/'.$1; } @@ -3445,7 +3397,7 @@ sub handler { @tabids = ('002','ee2','ff2'); } else { @tabids = ('aa1','bb1','cc1','ff1'); - unless ($env{'form.pagepath'}) { + unless ($env{'form.folderpath'} =~ /\:1$/) { unshift(@tabids,'001'); push(@tabids,('dd1','ee1')); } @@ -3752,10 +3704,6 @@ HIDDENFORM } 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'; - } my $readfile='/uploaded/'.$coursedom.'/'.$coursenum.'/'.$folder.'.'.$container; my $newnavform=(<'=>$extresourcesform}, - {''.$lt{imsf}.''=>$imspform}, - {''.$lt{upl}.''=>$fileuploadform, - }); + {''.$lt{extr}.''=>$extresourcesform} + ); + unless ($container eq 'page') { + push(@importdoc, + {''.$lt{imsf}.''=>$imspform} + ); + } + push(@importdoc, + {''.$lt{upl}.''=>$fileuploadform} + ); $fileuploadform = &create_form_ul(&create_list_elements(@importdoc)); @gradingforma=( @@ -3941,7 +3895,7 @@ my %orderhash = ( 'bb' => ['Published Content',$importpubform], 'cc' => ['Grading Resources',$gradingform], ); -unless ($env{'form.pagepath'}) { +unless ($container eq 'page') { $orderhash{'00'} = ['Newfolder',$newfolderform]; $orderhash{'dd'} = ['Collaboration',$communityform]; $orderhash{'ee'} = ['Special Pages',$specialdocumentsform]; @@ -3974,7 +3928,6 @@ unless ($env{'form.pagepath'}) { } elsif ($allowed) { $env{'form.folderpath'} = $savefolderpath; } - $env{'form.pagepath'} = ''; $pathitem = ''; if ($allowed) { @@ -4143,12 +4096,9 @@ sub decompression_info { my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'}; my $container='sequence'; my ($pathitem,$hiddenelem); - my @hiddens = ('newidx','comment','position'); - if ($env{'form.pagepath'}) { + my @hiddens = ('newidx','comment','position','folderpath'); + if ($env{'form.folderpath'} =~ /\:1$/) { $container='page'; - $pathitem = 'pagepath'; - } else { - $pathitem = 'folderpath'; } unshift(@hiddens,$pathitem); foreach my $item (@hiddens) { @@ -4435,14 +4385,11 @@ sub editing_js { my $crstype = &Apache::loncommon::course_type(); my $docs_folderpath = &HTML::Entities::encode($env{'environment.internal.'.$env{'request.course.id'}.'.docs_folderpath.folderpath'},'<>&"'); - my $docs_pagepath = &HTML::Entities::encode($env{'environment.internal.'.$env{'request.course.id'}.'.docs_folderpath.pagepath'},'<>&"'); my $main_container_page; - if ($docs_folderpath eq '') { - if ($docs_pagepath ne '') { - $main_container_page = 1; - } + if (&HTML::Entities::decode($env{'environment.internal.'.$env{'request.course.id'}.'.docs_folderpath.folderpath'}) =~ /\:1$/) { + $main_container_page = 1; } - my $toplevelmain = 'default&Main%20'.$crstype.'%20Documents'; + my $toplevelmain = 'default&Main%20'.$crstype.'%20Documents%3A%3A%3A%3A%3A'; my $toplevelsupp = &supplemental_base(); my $backtourl = '/adm/navmaps'; @@ -4450,7 +4397,10 @@ sub editing_js { $backtourl = '/adm/supplemental'; } - my $fieldsets = "'ext','doc','ims'"; + my $fieldsets = "'ext','doc'"; + unless ($main_container_page) { + $fieldsets .=",'ims'"; + } if ($supplementalflag) { $fieldsets = "'suppext','suppdoc'"; } @@ -4580,64 +4530,40 @@ function makeims(imsform) { imsform.submit(); } -function changename(folderpath,index,oldtitle,container,pagesymb) { +function changename(folderpath,index,oldtitle) { var title=prompt('$lt{"p_chn"}',oldtitle); if (title) { this.document.forms.renameform.markcopy.value=-1; this.document.forms.renameform.title.value=title; this.document.forms.renameform.cmd.value='rename_'+index; -if (container == 'sequence') { - this.document.forms.renameform.folderpath.value=folderpath; -} -if (container == 'page') { - this.document.forms.renameform.pagepath.value=folderpath; - this.document.forms.renameform.pagesymb.value=pagesymb; -} +this.document.forms.renameform.folderpath.value=folderpath; this.document.forms.renameform.submit(); } } -function removeres(folderpath,index,oldtitle,container,pagesymb,skip_confirm) { +function removeres(folderpath,index,oldtitle,skip_confirm) { if (skip_confirm || confirm('$lt{"p_rmr1"}\\n\\n$lt{"p_rmr2a"} "'+oldtitle+'" $lt{"p_rmr2b"}')) { this.document.forms.renameform.markcopy.value=-1; this.document.forms.renameform.cmd.value='del_'+index; -if (container == 'sequence') { - this.document.forms.renameform.folderpath.value=folderpath; -} -if (container == 'page') { - this.document.forms.renameform.pagepath.value=folderpath; - this.document.forms.renameform.pagesymb.value=pagesymb; -} +this.document.forms.renameform.folderpath.value=folderpath; this.document.forms.renameform.submit(); } } -function cutres(folderpath,index,oldtitle,container,pagesymb,folder,skip_confirm) { +function cutres(folderpath,index,oldtitle,container,folder,skip_confirm) { if (skip_confirm || confirm('$lt{"p_ctr1a"}\\n$lt{"p_ctr1b"}\\n\\n$lt{"p_ctr2a"} "'+oldtitle+'" $lt{"p_ctr2b"}')) { this.document.forms.renameform.cmd.value='cut_'+index; this.document.forms.renameform.markcopy.value=index; this.document.forms.renameform.copyfolder.value=folder+'.'+container; -if (container == 'sequence') { - this.document.forms.renameform.folderpath.value=folderpath; -} -if (container == 'page') { - this.document.forms.renameform.pagepath.value=folderpath; - this.document.forms.renameform.pagesymb.value=pagesymb; -} +this.document.forms.renameform.folderpath.value=folderpath; this.document.forms.renameform.submit(); } } -function markcopy(folderpath,index,oldtitle,container,pagesymb,folder) { +function markcopy(folderpath,index,oldtitle,container,folder) { this.document.forms.renameform.markcopy.value=index; this.document.forms.renameform.copyfolder.value=folder+'.'+container; -if (container == 'sequence') { this.document.forms.renameform.folderpath.value=folderpath; -} -if (container == 'page') { -this.document.forms.renameform.pagepath.value=folderpath; -this.document.forms.renameform.pagesymb.value=pagesymb; -} this.document.forms.renameform.submit(); } @@ -4735,9 +4661,6 @@ function showPage(current, pageId, nav, toggleMap(); if (nav == 'mainnav') { var storedpath = "$docs_folderpath"; - if (storedpath == '') { - storedpath = "$docs_pagepath"; - } var storedpage = "$main_container_page"; var reg = new RegExp("^supplemental"); if (pageId == 'mainCourseDocuments') {