--- loncom/interface/londocs.pm 2007/06/29 21:08:07 1.280 +++ loncom/interface/londocs.pm 2007/06/29 23:25:30 1.281 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.280 2007/06/29 21:08:07 albertel Exp $ +# $Id: londocs.pm,v 1.281 2007/06/29 23:25:30 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -958,12 +958,6 @@ sub breadcrumbs { my $folderpath; my $cpinfo=''; my $plain=''; - if ($env{'form.markedcopy_url'}) { - $cpinfo='&markedcopy_url='. - &escape($env{'form.markedcopy_url'}). - '&markedcopy_title='. - &escape($env{'form.markedcopy_title'}); - } my $randompick=-1; my $isencrypted=0; my $ishidden=0; @@ -1187,28 +1181,77 @@ sub docs_change_log { $r->print(&Apache::loncommon::end_data_table()); } +sub update_paste_buffer { + my ($coursenum,$coursedom) = @_; + + return if (!defined($env{'form.markcopy'})); + return if (!defined($env{'form.copyfolder'})); + return if ($env{'form.markcopy'} < 0); + + my ($errtext,$fatal) = &mapread($coursenum,$coursedom, + $env{'form.copyfolder'}); + + return if ($fatal); + +# Mark for copying + my ($title,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$env{'form.markcopy'}]]); + if (&is_supplemental_title($title)) { + ($title) = &parse_supplemental_title($title); + } + &Apache::lonnet::appenv('docs.markedcopy_title' => $title, + 'docs.markedcopy_url' => $url); + delete($env{'form.markcopy'}); +} + +sub print_paste_buffer { + my ($r,$container) = @_; + return if (!defined($env{'docs.markedcopy_url'})); + + $r->print(<
+ENDPASTE + $r->print(' '); + + my $type; + if ($env{'docs.markedcopy_url'} =~ m{^/adm/wrapper/ext}) { + $type = &mt('External Resource'); + $r->print($type.': '.&Apache::map::qtescape($env{'docs.markedcopy_title'})); + } else { + my $extension = (split(/\./,$env{'docs.markedcopy_url'}))[-1]; + my $type = &Apache::loncommon::filedescription($extension); + my $icon = ''; + $r->print($icon.$type.': '. &parse_supplemental_title($env{'docs.markedcopy_title'})); + } + if ($container eq 'page') { + $r->print(< + +PAGEINFO + } else { + $r->print(< +FOLDERINFO + } + $r->print('

'); +} + sub editor { - my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output)=@_; + my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$which)=@_; my $errtext=''; my $fatal=0; my $container='sequence'; if ($env{'form.pagepath'}) { $container='page'; } - ($errtext,$fatal)= - &mapread($coursenum,$coursedom,$folder.'.'.$container); + ($errtext,$fatal) = &mapread($coursenum,$coursedom,$folder.'.'.$container); if ($#LONCAPA::map::order<1) { my $idx=&LONCAPA::map::getresidx(); if ($idx<=0) { $idx=1; } $LONCAPA::map::order[0]=$idx; $LONCAPA::map::resources[$idx]=''; } - if (defined($env{'form.markcopy'})) { -# Mark for copying - my ($title,$url)=split(':',$LONCAPA::map::resources[$LONCAPA::map::order[$env{'form.markcopy'}]]); - $env{'form.markedcopy_title'}=$title; - $env{'form.markedcopy_url'}=$url; - } + my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain)=&breadcrumbs($folder); $r->print($breadcrumbtrail); if ($fatal) { @@ -1297,11 +1340,11 @@ sub editor { return; } } - + if ($env{'form.pastemarked'}) { # paste resource to end of list - my $url=$env{'form.markedcopy_url'}; - my $title=$env{'form.markedcopy_title'}; + my $url=$env{'docs.markedcopy_url'}; + my $title=$env{'docs.markedcopy_title'}; # Maps need to be copied first if (($url=~/\.(page|sequence)$/) || ($url=~/^\/uploaded\//)) { $title=&mt('Copy of').' '.$title; @@ -1429,7 +1472,7 @@ sub editor { } } &log_differences($plain); - } + } # ---------------------------------------------------------------- End commands # ---------------------------------------------------------------- Print screen my $idx=0; @@ -1460,37 +1503,9 @@ sub editor { $r->print(''.&mt('Currently no documents.').''); } $r->print("\n\n"); - if ($env{'form.markedcopy_url'}) { - $r->print(<
- - -ENDPASTE - $r->print(' '); - my $type; - if ($env{'form.markedcopy_url'} =~ m{^/adm/wrapper/ext}) { - $type = &mt('External Resource'); - $r->print($type.': '. $env{'form.markedcopy_title'}); - } else { - my $extension = (split(/\./,$env{'form.markedcopy_url'}))[-1]; - my $type = &Apache::loncommon::filedescription($extension); - my $icon = ''; - $r->print($icon.$type.': '. $env{'form.markedcopy_title'}); - } - if ($container eq 'page') { - $r->print(< - -PAGEINFO - } else { - $r->print(< -FOLDERINFO - } - $r->print('

'); - } + &print_paste_buffer($r,$container); + } } @@ -1650,22 +1665,52 @@ sub process_secondary_uploads { return $filename; } +sub is_supplemental_title { + my ($title) = @_; + return scalar($title =~ m/^(\d+)___&&&___($match_username)___&&&___($match_domain)___&&&___(.*)$/); +} + +sub parse_supplemental_title { + my ($title) = @_; + + my ($foldertitle,$renametitle); + if ($title =~ /&&&/) { + $title = &HTML::Entites::decode($title); + } + if ($title =~ m/^(\d+)___&&&___($match_username)___&&&___($match_domain)___&&&___(.*)$/) { + $renametitle=$4; + my ($time,$uname,$udom) = ($1,$2,$3); + $foldertitle=&Apache::lontexconvert::msgtexconverted($4); + my $name = &Apache::loncommon::plainname($uname,$udom); + $name = &HTML::Entities::encode($name,'"<>&\''); + $title=''.&Apache::lonlocal::locallocaltime($time).' '. + $name.':
'.$foldertitle; + } + if (wantarray) { + return ($title,$foldertitle,$renametitle); + } + return $title; +} + # --------------------------------------------------------------- An entry line sub entryline { my ($index,$title,$url,$folder,$allowed,$residx,$coursenum)=@_; - $title=&HTML::Entities::encode($title,'"<>&\''); - my $renametitle=$title; - my $foldertitle=$title; - my $pagetitle=$title; - my $orderidx=$LONCAPA::map::order[$index]; - if ($title=~ /^(\d+)___&&&___($match_username)___&&&___($match_domain)___&&&___(.*)$/ ) { - $foldertitle=&Apache::lontexconvert::msgtexconverted($4); - $renametitle=$4; - $title=''.&Apache::lonlocal::locallocaltime($1).' '. - &Apache::loncommon::plainname($2,$3).':
'. - $foldertitle; + + my ($foldertitle,$pagetitle,$renametitle); + if (&is_supplemental_title($title)) { + ($title,$foldertitle,$renametitle) = &parse_supplemental_title($title); + $pagetitle = $foldertitle; + } else { + $title=&HTML::Entities::encode($title,'"<>&\''); + $renametitle=$title; + $foldertitle=$title; + $pagetitle=$title; } + + my $orderidx=$LONCAPA::map::order[$index]; + + $renametitle=~s/\\/\\\\/g; $renametitle=~s/\"\;/\\\"/g; my $line=''; @@ -1684,12 +1729,6 @@ sub entryline { $symb=&escape($env{'form.pagesymb'}); } my $cpinfo=''; - if ($env{'form.markedcopy_url'}) { - $cpinfo='&markedcopy_url='. - &escape($env{'form.markedcopy_url'}). - '&markedcopy_title='. - &escape($env{'form.markedcopy_title'}); - } if ($allowed) { my $incindex=$index+1; my $selectbox=''; @@ -1740,13 +1779,13 @@ sub entryline { if (!$nocopy) { $copylink=(< + $lt{'cp'} ENDCOPY } if (!$nocut) { $cutlink=(< + $lt{'ct'} ENDCUT } @@ -1754,8 +1793,6 @@ ENDCUT
- - @@ -2443,8 +2480,7 @@ sub handler { my $uploadtag; &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['folderpath','pagepath', - 'pagesymb','markedcopy_url', - 'markedcopy_title']); + 'pagesymb']); if ($env{'form.folderpath'}) { my (@folderpath)=split('&',$env{'form.folderpath'}); $env{'form.foldername'}=&unescape(pop(@folderpath)); @@ -2619,6 +2655,7 @@ sub handler { ); # ----------------------------------------------------------------------------- if ($allowed) { + &update_paste_buffer($coursenum,$coursedom); my $dumpbut=&dumpbutton(); my $exportbut=&exportbutton(); my %lt=&Apache::lonlocal::texthash( @@ -2646,6 +2683,7 @@ sub handler { + $containertag
@@ -3130,6 +3168,7 @@ function finishpick() { function changename(folderpath,index,oldtitle,container,pagesymb) { var title=prompt('New Title',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') { @@ -3145,6 +3184,7 @@ function changename(folderpath,index,old function removeres(folderpath,index,oldtitle,container,pagesymb) { if (confirm('WARNING: Removing a resource makes associated grades and scores inaccessible!\\nRemove "'+oldtitle+'"?')) { + 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; @@ -3157,10 +3197,11 @@ function removeres(folderpath,index,oldt } } -function cutres(folderpath,index,oldtitle,container,pagesymb) { +function cutres(folderpath,index,oldtitle,container,pagesymb,folder) { if (confirm('WARNING: Cutting a resource makes associated grades and scores inaccessible!\\nGrades remain inaccessible if resource is pasted into another folder.\\nCut "'+oldtitle+'"?')) { 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; } @@ -3172,8 +3213,9 @@ function cutres(folderpath,index,oldtitl } } -function markcopy(folderpath,index,oldtitle,container,pagesymb) { +function markcopy(folderpath,index,oldtitle,container,pagesymb,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; }