--- loncom/interface/londocs.pm 2004/09/09 18:56:01 1.141 +++ loncom/interface/londocs.pm 2004/09/14 01:21:49 1.142 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.141 2004/09/09 18:56:01 albertel Exp $ +# $Id: londocs.pm,v 1.142 2004/09/14 01:21:49 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -440,9 +440,31 @@ sub group_import { my $coursenum = shift; my $coursedom = shift; my $folder = shift; + my $container = shift; + my $caller = shift; while (@_) { my $name = shift; my $url = shift; + if (($url =~ m#^/uploaded/$coursedom/$coursenum/(default_\d+\.)(page|sequence)$#) && ($caller eq 'londocs')) { + my $errtext = ''; + my $fatal = 0; + my $newmapstr = ''."\n". + ''."\n". + ''."\n". + ''."\n". + ''; + $ENV{'form.output'}=$newmapstr; + my $home=&Apache::lonnet::homeserver($coursenum,$coursedom); + my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom,$home, + 'output',$1.$2); + if ($result != m|^/uploaded/|) { + $errtext.='Map not saved: A network error occured when trying to save the new map. '; + $fatal = 2; + } + if ($fatal) { + return ($errtext,$fatal); + } + } if ($url) { my $idx = $#Apache::lonratedt::resources + 1; $Apache::lonratedt::order[$#Apache::lonratedt::order+1]=$idx; @@ -454,13 +476,18 @@ sub group_import { join ':', ($name, $url, $ext, 'normal', 'res'); } } - return &storemap($coursenum, $coursedom, $folder.'.sequence'); + return &storemap($coursenum, $coursedom, $folder.'.'.$container); } sub breadcrumbs { my ($where)=@_; &Apache::lonhtmlcommon::clear_breadcrumbs(); - my (@folders)=split('&',$ENV{'form.folderpath'}); + my (@folders); + if ($ENV{'form.pagepath'}) { + @folders = split('&',$ENV{'form.pagepath'}); + } else { + @folders=split('&',$ENV{'form.folderpath'}); + } my $folderpath; while (@folders) { my $folder=shift(@folders); @@ -488,8 +515,12 @@ sub editor { $r->print(&breadcrumbs($folder)); my $errtext=''; my $fatal=0; + my $container='sequence'; + if ($ENV{'form.pagepath'}) { + $container='page'; + } ($errtext,$fatal)= - &mapread($coursenum,$coursedom,$folder.'.sequence'); + &mapread($coursenum,$coursedom,$folder.'.'.$container); if ($#Apache::lonratedt::order<1) { $Apache::lonratedt::order[0]=1; $Apache::lonratedt::resources[1]=''; @@ -557,7 +588,7 @@ sub editor { } # store the changed version - ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.sequence'); + ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container); if ($fatal) { $r->print('

'.$errtext.'

'); return; @@ -589,7 +620,7 @@ sub editor { $Apache::lonratedt::order[$#Apache::lonratedt::order+1]= $newidx; - ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.sequence'); + ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container); if ($fatal) { $r->print('

'.$errtext.'

'); return; @@ -623,6 +654,7 @@ sub editor { $Apache::lonratedt::order[$idx]=$i; } } elsif ($cmd eq 'rename') { + my $ratstr = $Apache::lonratedt::resources[$Apache::lonratedt::order[$idx]]; my ($rtitle,@rrest)=split(/\:/, $Apache::lonratedt::resources[ $Apache::lonratedt::order[$idx]]); @@ -638,7 +670,7 @@ sub editor { } # Store the changed version ($errtext,$fatal)=&storemap($coursenum,$coursedom, - $folder.'.sequence'); + $folder.'.'.$container); if ($fatal) { $r->print('

'.$errtext.'

'); return; @@ -657,7 +689,7 @@ sub editor { } # Store the changed version ($errtext,$fatal)=group_import($coursenum, $coursedom, $folder, - @imports); + $container,'londocs',@imports); if ($fatal) { $r->print('

'.$errtext.'

'); return; @@ -675,7 +707,7 @@ sub editor { # Store the changed version ($errtext,$fatal)=&storemap($coursenum,$coursedom, - $folder.'.sequence'); + $folder.'.'.$container); if ($fatal) { $r->print('

'.$errtext.'

'); return; @@ -709,6 +741,7 @@ sub entryline { &Apache::lonnet::unescape($title)),'"<>&\''); my $renametitle=$title; my $foldertitle=$title; + my $pagetitle=$title; my $orderidx=$Apache::lonratedt::order[$index]; if ($title=~ /^(\d+)___&&&___(\w+)___&&&___(\w+)___&&&___(.*)$/ ) { $foldertitle=&Apache::lontexconvert::msgtexconverted($4); @@ -720,11 +753,18 @@ sub entryline { $renametitle=~s/\"\;/\\\"/g; my $line=''; # Edit commands + my $container; my $folderpath; if ($ENV{'form.folderpath'}) { + $container = 'sequence'; $folderpath=&Apache::lonnet::escape($ENV{'form.folderpath'}); # $htmlfoldername=&HTML::Entities::encode($ENV{'form.foldername'},'<>&"'); } + my $pagepath; + if ($ENV{'form.pagepath'}) { + $container = 'page'; + $pagepath=&Apache::lonnet::escape($ENV{'form.pagepath'}); + } if ($allowed) { my $incindex=$index+1; my $selectbox=''; @@ -746,7 +786,28 @@ sub entryline { 'dw' => 'Move Down', 'rm' => 'Remove', 'rn' => 'Rename'); - $line.=(< + + + + + +
+ +$lt{
+ +$lt{
+$selectbox + + +$lt{'rm'} + +$lt{'rn'} +END + } else { + $line.=(< @@ -760,18 +821,22 @@ sub entryline { $selectbox - + $lt{'rm'} - + $lt{'rn'} END + } } # Figure out what kind of a resource this is 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; if ($uploaded) { if ($extension eq 'sequence') { $icon=$iconpath.'/folder_closed.gif'; @@ -779,12 +844,18 @@ END $url='/adm/coursedocs?'; $folderarg=$1; $isfolder=1; + } elsif ($extension eq 'page') { + $icon=$iconpath.'/page.gif'; + $url=~/$coursenum\/([\/\w]+)\.page$/; + $pagearg=$1; + $url='/adm/coursedocs?'; + $ispage=1; } else { &Apache::lonnet::allowuploaded('/adm/coursedoc',$url); } } $url=~s/^http\&colon\;\/\//\/adm\/wrapper\/ext\//; - if ((!$isfolder) && ($residx) && ($folder!~/supplemental/)) { + if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) { my $symb=&Apache::lonnet::symbclean( &Apache::lonnet::declutter('uploaded/'. $ENV{'course.'.$ENV{'request.course.id'}.'.domain'}.'/'. @@ -805,7 +876,9 @@ END $url='/adm/coursedocs/showdoc'.$url; } } - $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb); + unless ($container eq 'page') { + $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb); + } } my $parameterset=' '; if ($isfolder) { @@ -818,6 +891,14 @@ END ''; } + if ($ispage) { + my $pagename=&Apache::lonnet::escape($pagetitle); + my $pagepath; + my $folderpath=$ENV{'form.folderpath'}; + if ($folderpath) { $pagepath = $folderpath.'&' }; + $pagepath.=$pagearg.'&'.$pagename; + $url.='pagepath='.&Apache::lonnet::escape($pagepath); + } $line.=''. "$title"; @@ -1271,7 +1352,7 @@ sub handler { foreach ('Adding_Course_Doc','Main_Course_Documents', 'Adding_External_Resource','Navigate_Content', 'Adding_Folders','Docs_Overview', 'Load_Map', - 'Supplemental', 'Score_Upload_Form', + 'Supplemental','Score_Upload_Form','Adding_Pages', 'Importing_LON-CAPA_Resource','Uploading_From_Harddrive', 'Check_Resource_Versions','Verify_Content') { $help{$_}=&Apache::loncommon::help_open_topic('Docs_'.$_); @@ -1288,7 +1369,7 @@ sub handler { $help{'My Personal Info'} = &Apache::loncommon::help_open_topic( 'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); $help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); - + if ($ENV{'form.verify'}) { &verifycontent($r); } elsif ($ENV{'form.versions'}) { @@ -1307,13 +1388,22 @@ sub handler { my $allowed; my $events=''; my $showdoc=0; + my $containertag; + my $uploadtag; &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['folderpath']); + ['folderpath','pagepath']); if ($ENV{'form.folderpath'}) { my (@folderpath)=split('&',$ENV{'form.folderpath'}); $ENV{'form.foldername'}=&Apache::lonnet::unescape(pop(@folderpath)); $ENV{'form.folder'}=pop(@folderpath); - } + } + if ($ENV{'form.pagepath'}) { + my (@pagepath)=split('&',$ENV{'form.pagepath'}); + $ENV{'form.pagename'}=&Apache::lonnet::unescape(pop(@pagepath)); + $ENV{'form.folder'}=pop(@pagepath); + $containertag = ''; + $uploadtag = ''; + } if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) { $showdoc='/'.$1; } @@ -1371,6 +1461,14 @@ function makenewfolder(targetform,folder } } +function makenewpage(targetform,folderseq) { + var pagename=prompt('Name of New Page','New Page'); + if (pagename) { + targetform.importdetail.value=pagename+"="+folderseq; + targetform.submit(); + } +} + function makenewext(targetname) { this.document.forms.extimport.useform.value=targetname; window.open('/adm/rat/extpickframe.html'); @@ -1444,20 +1542,30 @@ function finishpick() { '";this.document.forms.'+form+'.submit();'); } -function changename(folderpath,index,oldtitle) { +function changename(folderpath,index,oldtitle,container) { var title=prompt('New Title',oldtitle); if (title) { this.document.forms.renameform.title.value=title; this.document.forms.renameform.cmd.value='rename_'+index; - this.document.forms.renameform.folderpath.value=folderpath; + if (container == 'sequence') { + this.document.forms.renameform.folderpath.value=folderpath; + } + if (container == 'page') { + this.document.forms.renameform.pagepath.value=folderpath; + } this.document.forms.renameform.submit(); } } -function removeres(folderpath,index,oldtitle) { +function removeres(folderpath,index,oldtitle,container) { if (confirm('Remove "'+oldtitle+'"?')) { this.document.forms.renameform.cmd.value='del_'+index; - this.document.forms.renameform.folderpath.value=folderpath; + if (container == 'sequence') { + this.document.forms.renameform.folderpath.value=folderpath; + } + if (container == 'page') { + this.document.forms.renameform.pagepath.value=folderpath; + } this.document.forms.renameform.submit(); } } @@ -1484,6 +1592,7 @@ ENDNEWSCRIPT 'selm' => 'Select Map', 'load' => 'Load Map', 'newf' => 'New Folder', + 'newp' => 'New Composite Page', 'extr' => 'External Resource', 'syll' => 'Syllabus', 'navc' => 'Navigate Contents', @@ -1515,15 +1624,20 @@ ENDNEWSCRIPT &Apache::lonnet::escape(&mt('Main Course Documents')); } } + unless ($ENV{'form.pagepath'}) { + $containertag = ''; + $uploadtag = ''; + } + $r->print(< - +$containertag
- +$uploadtag
@@ -1564,6 +1678,9 @@ ENDCOURSEVERIFY &changewarning($r,$postexec); my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. '.sequence'; + my $pageseq = '/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time. + '.page'; + $r->print(< @@ -1577,7 +1694,7 @@ $lt{'file'}:

$lt{'title'}:
- +$uploadtag @@ -1587,7 +1704,7 @@ $lt{'title'}:
+ -
$lt{'uplm'} - +$uploadtag @@ -1602,7 +1719,11 @@ value="$lt{'selm'}"> + +ENDFORM + unless ($ENV{'form.pagepath'}) { + $r->print(< @@ -1612,16 +1733,25 @@ onClick="javascript:makenewfolder(this.f value="$lt{'newf'}" />$help{'Adding_Folders'} -
+ +$help{'Adding_Pages'} + +
+
+$uploadtag + + $help{'Adding_External_Resource'}
- +$uploadtag @@ -1630,7 +1760,7 @@ value="Syllabus=/public/$coursedom/$cour
- +$uploadtag @@ -1639,7 +1769,7 @@ $help{'Navigate_Content'}
- +$uploadtag $
- +$uploadtag
- +$uploadtag
- +$uploadtag
- +$uploadtag @@ -1682,21 +1812,46 @@ $help{'My Personal Info'}
- +$uploadtag +ENDFORM + } + if ($ENV{'form.pagepath'}) { + $r->print(< +$uploadtag + + +$help{'Simple Problem'} + + +
+$uploadtag + + + +$help{'Score_Upload_Form'} + +
+ENDBLOCK + } else { + $r->print(<
-
ENDFORM + } + $r->print(''."\n". +''); $r->print(''); } # ----------------------------------------------------- Supplemental documents