--- loncom/interface/londocs.pm 2013/03/11 01:46:47 1.533 +++ loncom/interface/londocs.pm 2013/03/11 22:16:11 1.534 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.533 2013/03/11 01:46:47 raeburn Exp $ +# $Id: londocs.pm,v 1.534 2013/03/11 22:16:11 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -289,7 +289,7 @@ sub group_import { $env{'form.output'}=$newmapstr; my $result=&Apache::lonnet::finishuserfileupload($coursenum,$coursedom, 'output',$1.$2); - if ($result != m|^/uploaded/|) { + if ($result !~ m{^/uploaded/}) { $errtext.='Map not saved: A network error occurred when trying to save the new map. '; $fatal = 2; } @@ -300,7 +300,7 @@ sub group_import { if ($url) { if (($caller eq 'londocs') && ($folder =~ /^default/)) { - unless ($donechk) { + if (($url =~ /\.(page|sequence)$/) && (!$donechk)) { my $chome = &Apache::lonnet::homeserver($coursenum,$coursedom); my $cid = $coursedom.'_'.$coursenum; $allmaps = @@ -325,6 +325,48 @@ sub group_import { if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; } $url = &LONCAPA::map::qtunescape($url); $name = &LONCAPA::map::qtunescape($name); + if ($name eq '') { + $name = &mt('Web Page'); + } + if ($url =~ m{^/uploaded/$coursedom/$coursenum/((?:docs|supplemental)/(?:default|\d+))/new\.html$}) { + my $filepath = $1; + my $fname = $name; + if ($fname =~ /^\W+$/) { + $fname = 'web'; + } else { + $fname =~ s/\W/_/g; + } + if (length($fname > 15)) { + $fname = substr($fname,0,14); + } + my $initialtext = &mt('Replace with your own content.'); + my $newhtml = < + + + +$name + + +$initialtext + + +END + $env{'form.output'}=$newhtml; + my $result = + &Apache::lonnet::finishuserfileupload($coursenum,$coursedom, + 'output', + "$filepath/$residx/$fname.html"); + if ($result =~ m{^/uploaded/}) { + $url = $result; + if ($filepath =~ /^supplemental/) { + $name = time.'___&&&___'.$env{'user.name'}.'___&&&___'. + $env{'user.domain'}.'___&&&___'.$name; + } + } else { + return (&mt('Failed to save new web page.'),1); + } + } $LONCAPA::map::resources[$residx] = join(':', ($name, $url, $ext, 'normal', 'res')); } @@ -2043,6 +2085,22 @@ sub editor { } else { return $errortxt; } + } elsif ($url =~ m{^/uploaded/$coursedom/$coursenum/(docs|supplemental)/(default|\d+)/new.html$}) { + if ($supplementalflag) { + next unless ($1 eq 'supplemental'); + if ($folder eq 'supplemental') { + next unless ($2 eq 'default'); + } else { + next unless ($folder eq 'supplemental_'.$2); + } + } else { + next unless ($1 eq 'docs'); + if ($folder eq 'default') { + next unless ($2 eq 'default'); + } else { + next unless ($folder eq 'default_'.$2); + } + } } push(@imports, [$name, $url, $residx]); } @@ -2216,15 +2274,11 @@ sub process_file_upload { $container='page'; } ($errtext,$fatal)= - &mapread($coursenum,$coursedom,$folder.'.'.$container); + &mapread($coursenum,$coursedom,$folder.'.'.$container); if ($#LONCAPA::map::order<1) { $LONCAPA::map::order[0]=1; $LONCAPA::map::resources[1]=''; } - if ($fatal) { - $$upload_output = '
'.&mt('The uploaded file has not been stored as an error occurred reading the contents of the current folder.').'
'; - return; - } my $destination = 'docs/'; if ($folder =~ /^supplemental/) { $destination = 'supplemental/'; @@ -2234,6 +2288,10 @@ sub process_file_upload { } elsif ($folder =~ /^(default|supplemental)_(\d+)$/) { $destination .= $2.'/'; } + if ($fatal) { + $$upload_output = '
'.&mt('The uploaded file has not been stored as an error occurred reading the contents of the current folder.').'
'; + return; + } # this is for a course, not a user, so set context to coursedoc. my $newidx=&LONCAPA::map::getresidx(); $destination .= $newidx; @@ -3424,8 +3482,9 @@ sub handler { 'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); $help{'Group Portfolio'} = &Apache::loncommon::help_open_topic('Docs_About_Group_Files'); $help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); - - + $help{'Course Roster'} = &Apache::loncommon::help_open_topic('Docs_Course_Roster'); + $help{'Web Page'} = &Apache::loncommon::help_open_topic('Docs_Web_Page'); + my $allowed; # URI is /adm/supplemental when viewing supplemental docs in non-edit mode. unless ($r->uri eq '/adm/supplemental') { @@ -3759,6 +3818,7 @@ sub handler { 'navc' => 'Table of Contents', 'sipa' => 'Simple Course Page', 'sipr' => 'Simple Problem', + 'webp' => 'Blank Web Page (editable)', 'drbx' => 'Drop Box', 'scuf' => 'External Scores (handgrade, upload, clicker)', 'bull' => 'Discussion Board', @@ -4011,7 +4071,6 @@ NAMFORM NASOFORM - my $newrosterform=(< @@ -4023,6 +4082,27 @@ NASOFORM NROSTFORM + my $newwebpage; + if ($folder =~ /^default_?(\d*)$/) { + $newwebpage = "/uploaded/$coursedom/$coursenum/docs/"; + if ($1) { + $newwebpage .= $1; + } else { + $newwebpage .= 'default'; + } + $newwebpage .= '/new.html'; + } + my $newwebpageform =(< + + $pathitem + + $lt{'webp'} + $help{'Web Page'} + +NWEBFORM + + my $specialdocumentsform; my @specialdocumentsforma; my $gradingform; @@ -4081,6 +4161,7 @@ NGFFORM {''.$lt{syll}.''=>$newsylform}, {''.$lt{navc}.''=>$newnavform}, {''.$lt{sipa}.''=>$newsmppageform}, + {''.$lt{webp}.''=>$newwebpageform}, ); $specialdocumentsform = &create_form_ul(&create_list_elements(@specialdocumentsforma)); @@ -4218,12 +4299,34 @@ SNSFORM SNAMFORM + my $supwebpage; + if ($folder =~ /^supplemental_?(\d*)$/) { + $supwebpage = "/uploaded/$coursedom/$coursenum/supplemental/"; + if ($1) { + $supwebpage .= $1; + } else { + $supwebpage .= 'default'; + } + $supwebpage .= '/new.html'; + } + my $supwebpageform =(< + + $pathitem + + $lt{'webp'} + $help{'Web Page'} + +SWEBFORM + my @specialdocs = ( {''.$lt{syll}.'' =>$supnewsylform}, {''.$lt{mypi}.'' =>$supnewaboutmeform}, + {''.$lt{webp}.''=>$supwebpageform}, + ); my @supimportdoc = ( {''.$lt{extr}.'' @@ -4588,6 +4691,7 @@ sub editing_js { p_msb => 'Title for the Problem', p_mdb => 'Title for the Drop Box', p_mbb => 'Title for the Discussion Board', + p_mwp => 'Title for Web Page', p_mab => "Enter user:domain for User's Personal Information Page", p_mab2 => 'Personal Information Page of ', p_mab_alrt1 => 'Not a valid user:domain', @@ -4680,6 +4784,21 @@ function makesmppage() { } } +function makewebpage(type) { + var title=prompt('$lt{"p_mwp"}'); + var formname; + if (type == 'supp') { + formname = this.document.forms.supwebpage; + } else { + formname = this.document.forms.newwebpage; + } + if (title) { + var webpage = formname.importdetail.value; + formname.importdetail.value = escape(title)+'='+webpage; + formname.submit(); + } +} + function makesmpproblem() { var title=prompt('$lt{"p_msb"}'); if (title) {