--- loncom/interface/londocs.pm 2005/11/04 20:52:35 1.208 +++ loncom/interface/londocs.pm 2006/06/30 03:44:03 1.236 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.208 2005/11/04 20:52:35 albertel Exp $ +# $Id: londocs.pm,v 1.236 2006/06/30 03:44:03 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,6 +42,8 @@ use HTML::Entities; use GDBM_File; use Apache::lonlocal; use Cwd; +use lib '/home/httpd/lib/perl/'; +use LONCAPA; my $iconpath; @@ -119,16 +121,18 @@ sub authorhosts { sub dumpbutton { my ($home,$other,%outhash)=&authorhosts(); + my $type = &Apache::loncommon::course_type(); if ($home+$other==0) { return ''; } my $output='</td><td bgcolor="#DDDDCC">'; if ($home) { return '</td><td bgcolor="#DDDDCC">'. '<input type="submit" name="dumpcourse" value="'. - &mt('Dump Course DOCS to Construction Space').'" />'. + &mt('Dump '.$type.' DOCS to Construction Space').'" />'. &Apache::loncommon::help_open_topic('Docs_Dump_Course_Docs'); } else { return'</td><td bgcolor="#DDDDCC">'. - &mt('Dump Course DOCS to Construction Space: available on other servers'); + &mt('Dump '.$type. + ' DOCS to Construction Space: available on other servers'); } } @@ -140,10 +144,9 @@ sub clean { # -------------------------------------------------------- Actually dump course sub dumpcourse { - my $r=shift; - my $html=&Apache::lonxml::xmlbegin(); - $r->print($html.'<head><title>Dump DOCS</title></head>'. - &Apache::loncommon::bodytag('Dump Course DOCS to Construction Space'). + my ($r) = @_; + my $type = &Apache::loncommon::course_type(); + $r->print(&Apache::loncommon::start_page('Dump '.$type.' DOCS to Construction Space'). '<form name="dumpdoc" method="post">'); my ($home,$other,%outhash)=&authorhosts(); unless ($home) { return ''; } @@ -222,7 +225,7 @@ sub dumpcourse { $r->print('</select>'); } my $title=$origcrsdata{'description'}; - $title=~s/\s+/\_/gs; + $title=~s/[\/\s]+/\_/gs; $title=&clean($title); $r->print('<h3>'.&mt('Folder in Construction Space').'</h3><input type="text" size="50" name="authorfolder" value="'.$title.'" /><br />'); &tiehash(); @@ -234,8 +237,10 @@ sub dumpcourse { 'ids_/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'.$_}}; $title=~s/:/:/g; $r->print('<td>'.($title?$title:' ').'</td>'); - unless ($title) { + if (!$title) { $title=$_; + } else { + $title=~s|/|_|g; } $title=~s/\.(\w+)$//; $title=&clean($title); @@ -245,21 +250,23 @@ sub dumpcourse { $r->print("</table>\n"); &untiehash(); $r->print( - '<p><input type="submit" name="dumpcourse" value="'.&mt('Dump Course DOCS').'" /></p></form>'); + '<p><input type="submit" name="dumpcourse" value="'.&mt('Dump [_1] DOCS',$type).'" /></p></form>'); } } # ------------------------------------------------------ Generate "export" button sub exportbutton { + my $type = &Apache::loncommon::course_type(); return '</td><td bgcolor="#DDDDCC">'. '<input type="submit" name="exportcourse" value="'. - &mt('Export Course to IMS').'" />'. + &mt('Export '.$type.' to IMS').'" />'. &Apache::loncommon::help_open_topic('Docs_Export_Course_Docs'); } sub exportcourse { my $r=shift; + my $type = &Apache::loncommon::course_type(); my %discussiontime = &Apache::lonnet::dump('discussiontimes', $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); my $numdisc = keys %discussiontime; @@ -300,7 +307,7 @@ sub exportcourse { open(OUTPUT, "zip -r $imszip * 2> /dev/null |"); close(OUTPUT); chdir $cwd; - $outcome .= 'Download the zip file from <a href="'.$imszipfile.'">IMS course archive</a><br />'; + $outcome .= &mt('Download the zip file from <a href="[_1]">IMS '.lc($type).' archive</a><br />',$imszipfile,); if ($copyresult) { $outcome .= 'The following errors occurred during export - '.$copyresult; } @@ -308,15 +315,13 @@ sub exportcourse { $outcome = '<br />Unfortunately you will not be able to retrieve an IMS archive of this posts at this time, because there was a problem creating a manifest file.<br />'; } } - my $html=&Apache::lonxml::xmlbegin(); - $r->print($html.'<head><title>Export Course</title></head>'. - &Apache::loncommon::bodytag('Export course to IMS content package')); + $r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package')); $r->print($outcome); - $r->print('</body></html>'); + $r->print(&Apache::loncommon::end_page()); } else { my $display; $display = '<form name="exportdoc" method="post">'."\n"; - $display .= 'Choose which items you wish to export from your course.<br /><br />'; + $display .= &mt('Choose which items you wish to export from your '.$type.'.<br /><br />'); $display .= '<table border="0" cellspacing="0" cellpadding="3">'. '<tr><td><fieldset><legend> <b>Content items</b></legend>'. '<input type="button" value="check all" '. @@ -450,15 +455,13 @@ function containerCheck(item) { </script> |; - my $html=&Apache::lonxml::xmlbegin(); - $r->print($html.'<head><title>Export Course</title>'.$scripttag.'</head>'. - &Apache::loncommon::bodytag('Export course to IMS content package' -)); - - $r->print($display.'</table>'. + $r->print(&Apache::loncommon::start_page('Export '.lc($type).' to IMS content package', + $scripttag)); + $r->print($display.'</table>'. '<p><input type="hidden" name="finishexport" value="1">'. '<input type="submit" name="exportcourse" value="'. - &mt('Export Course DOCS').'" /></p></form></body></html>'); + &mt('Export '.$type.' DOCS').'" /></p></form>'. + &Apache::loncommon::end_page()); } } @@ -953,11 +956,10 @@ sub breadcrumbs { my $folderpath; my $cpinfo=''; if ($env{'form.markedcopy_url'}) { - &Apache::lonnet::logthis('Found '.$env{'form.markedcopy_url'}); $cpinfo='&markedcopy_url='. - &Apache::lonnet::escape($env{'form.markedcopy_url'}). + &escape($env{'form.markedcopy_url'}). '&markedcopy_title='. - &Apache::lonnet::escape($env{'form.markedcopy_title'}); + &escape($env{'form.markedcopy_title'}); } while (@folders) { my $folder=shift(@folders); @@ -965,18 +967,18 @@ sub breadcrumbs { if ($folderpath) {$folderpath.='&';} $folderpath.=$folder.'&'.$foldername; my $url='/adm/coursedocs?folderpath='. - &Apache::lonnet::escape($folderpath); + &escape($folderpath); &Apache::lonhtmlcommon::add_breadcrumb( {'href'=>$url.$cpinfo, - 'title'=>&Apache::lonnet::unescape($foldername), + 'title'=>&unescape($foldername), 'text'=>'<font size="+1">'. - &Apache::lonnet::unescape($foldername).'</font>' + &unescape($foldername).'</font>' }); } - return &Apache::lonhtmlcommon::breadcrumbs(undef,undef,undef,undef,undef, - 0,'nohelp'); + return &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp', + 'LC_docs_path'); } sub editor { @@ -1173,11 +1175,12 @@ sub editor { # Group import/search if ($env{'form.importdetail'}) { my @imports; + &Apache::lonnet::logthis("imp detail ".$env{'form.importdetail'}); foreach (split(/\&/,$env{'form.importdetail'})) { if (defined($_)) { my ($name,$url)=split(/\=/,$_); - $name=&Apache::lonnet::unescape($name); - $url=&Apache::lonnet::unescape($url); + $name=&unescape($name); + $url=&unescape($url); push @imports, $name, $url; } } @@ -1190,22 +1193,25 @@ sub editor { } } # Loading a complete map - if (($env{'form.importmap'}) && ($env{'form.loadmap'})) { - foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) { - my ($title,$url,$ext,$type)=split(/\:/,$_); - my $idx=&Apache::lonratedt::getresidx($url); - $Apache::lonratedt::resources[$idx]=$_; - $Apache::lonratedt::order - [$#Apache::lonratedt::order+1]=$idx; - } - + if ($env{'form.loadmap'}) { + if ($env{'form.importmap'}=~/\w/) { + foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) { + my ($title,$url,$ext,$type)=split(/\:/,$_); + my $idx=&Apache::lonratedt::getresidx($url); + $Apache::lonratedt::resources[$idx]=$_; + $Apache::lonratedt::order + [$#Apache::lonratedt::order+1]=$idx; + } # Store the changed version - ($errtext,$fatal)=&storemap($coursenum,$coursedom, + ($errtext,$fatal)=&storemap($coursenum,$coursedom, $folder.'.'.$container); - if ($fatal) { - $r->print('<p><font color="red">'.$errtext.'</font></p>'); - return; - } + if ($fatal) { + $r->print('<p><font color="red">'.$errtext.'</font></p>'); + return; + } + } else { + $r->print('<p><font color="red">'.&mt('No map selected.').'</font></p>'); + } } } # ---------------------------------------------------------------- End commands @@ -1327,14 +1333,14 @@ sub process_file_upload { method="post" enctype="multipart/form-data"> <input type="hidden" name="folderpath" value="'.$env{'form.folderpath'}.'" /> <input type="hidden" name="cmd" value="upload_embedded" /> <input type="hidden" name="newidx" value="'.$newidx.'" /> - <input type="hidden" name="primaryurl" value="'.&Apache::lonnet::escape($url).'" /> + <input type="hidden" name="primaryurl" value="'.&escape($url).'" /> <input type="hidden" name="phasetwo" value="'.$total_embedded.'" />'; $$upload_output .= '<b>Upload embedded files</b>:<br /> <table>'; foreach my $embed_file (keys(%{$allfiles})) { $$upload_output .= '<tr><td>'.$embed_file. '<input name="embedded_item_'.$num.'" type="file" /> - <input name="embedded_orig_'.$num.'" type="hidden" value="'.&Apache::lonnet::escape($embed_file).'" />'; + <input name="embedded_orig_'.$num.'" type="hidden" value="'.&escape($embed_file).'" />'; my $attrib; if (@{$$allfiles{$embed_file}} > 1) { $attrib = join(':',@{$$allfiles{$embed_file}}); @@ -1345,7 +1351,7 @@ sub process_file_upload { '<input name="embedded_attrib_'.$num.'" type="hidden" value="'.$attrib.'" />'; if (exists($$codebase{$embed_file})) { $$upload_output .= - '<input name="codebase_'.$num.'" type="hidden" value="'.&Apache::lonnet::escape($$codebase{$embed_file}).'" />'; + '<input name="codebase_'.$num.'" type="hidden" value="'.&escape($$codebase{$embed_file}).'" />'; } $$upload_output .= '</td></tr>'; $num ++; @@ -1373,7 +1379,7 @@ sub process_secondary_uploads { if (($folder eq 'default') || ($folder eq 'supplemental')) { $destination .= 'default/'; } elsif ($folder =~ /^(default|supplemental)_(\d+)$/) { - $destination .= $1.'/'; + $destination .= $2.'/'; } $destination .= $newidx; my ($url,$filename); @@ -1388,7 +1394,7 @@ sub entryline { my ($index,$title,$url,$folder,$allowed,$residx,$coursenum)=@_; $title=~s/\&colon\;/\:/g; $title=&HTML::Entities::encode(&HTML::Entities::decode( - &Apache::lonnet::unescape($title)),'"<>&\''); + &unescape($title)),'"<>&\''); my $renametitle=$title; my $foldertitle=$title; my $pagetitle=$title; @@ -1400,6 +1406,7 @@ sub entryline { &Apache::loncommon::plainname($2,$3).': <br />'. $foldertitle; } + $renametitle=~s/\\/\\\\/g; $renametitle=~s/\"\;/\\\"/g; my $line='<tr>'; # Edit commands @@ -1407,21 +1414,21 @@ sub entryline { my $folderpath; if ($env{'form.folderpath'}) { $container = 'sequence'; - $folderpath=&Apache::lonnet::escape($env{'form.folderpath'}); + $folderpath=&escape($env{'form.folderpath'}); # $htmlfoldername=&HTML::Entities::encode($env{'form.foldername'},'<>&"'); } my ($pagepath,$pagesymb); if ($env{'form.pagepath'}) { $container = 'page'; - $pagepath=&Apache::lonnet::escape($env{'form.pagepath'}); - $pagesymb=&Apache::lonnet::escape($env{'form.pagesymb'}); + $pagepath=&escape($env{'form.pagepath'}); + $pagesymb=&escape($env{'form.pagesymb'}); } my $cpinfo=''; if ($env{'form.markedcopy_url'}) { $cpinfo='&markedcopy_url='. - &Apache::lonnet::escape($env{'form.markedcopy_url'}). + &escape($env{'form.markedcopy_url'}). '&markedcopy_title='. - &Apache::lonnet::escape($env{'form.markedcopy_title'}); + &escape($env{'form.markedcopy_title'}); } if ($allowed) { my $incindex=$index+1; @@ -1453,7 +1460,24 @@ sub entryline { 'ct' => 'Cut', 'rn' => 'Rename', 'cp' => 'Copy'); + my $nocopy=0; + if ($url=~/\.(page|sequence)$/) { + foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$url))) { + my ($title,$url,$ext,$type)=split(/\:/,$_); + if (($url=~/\.(page|sequence)/) && ($type ne 'zombie')) { + $nocopy=1; + last; + } + } + } + my $copylink=' '; if ($env{'form.pagepath'}) { + unless ($nocopy) { + $copylink=(<<ENDCOPY); +<a href='javascript:markcopy("$pagepath","$index","$renametitle","page","$pagesymb");'> +<font size="-2" color="#000099">$lt{'cp'}</font></a></td> +ENDCOPY + } $line.=(<<END); <form name="entry_$index" action="/adm/coursedocs" method="post"> <input type="hidden" name="pagepath" value="$env{'form.pagepath'}" /> @@ -1477,10 +1501,15 @@ sub entryline { <font size="-2" color="#550044">$lt{'ct'}</font></a> <a href='javascript:changename("$pagepath","$index","$renametitle","page","$pagesymb");'> <font size="-2" color="#009900">$lt{'rn'}</font></a> -<a href='javascript:markcopy("$pagepath","$index","$renametitle","page","$pagesymb");'> -<font size="-2" color="#000099">$lt{'cp'}</font></a></td> +$copylink END } else { + unless ($nocopy) { + $copylink=(<<ENDCOPY); +<a href='javascript:markcopy("$folderpath","$index","$renametitle","sequence");'> +<font size="-2" color="#000099">$lt{'cp'}</font></a></td> +ENDCOPY + } $line.=(<<END); <form name="entry_$index" action="/adm/coursedocs" method="post"> <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" /> @@ -1503,8 +1532,7 @@ END <font size="-2" color="#550044">$lt{'ct'}</font></a> <a href='javascript:changename("$folderpath","$index","$renametitle","sequence");'> <font size="-2" color="#009900">$lt{'rn'}</font></a> -<a href='javascript:markcopy("$folderpath","$index","$renametitle","sequence");'> -<font size="-2" color="#000099">$lt{'cp'}</font></a></td> +$copylink END } } @@ -1534,7 +1562,7 @@ END &Apache::lonnet::allowuploaded('/adm/coursedoc',$url); } } - $url=~s/^http\&colon\;\/\//\/adm\/wrapper\/ext\//; + $url=~s-^http(\&colon\;|:)//-/adm/wrapper/ext/-; if ((!$isfolder) && ($residx) && ($folder!~/supplemental/) && (!$ispage)) { my $symb=&Apache::lonnet::symbclean( &Apache::lonnet::declutter('uploaded/'. @@ -1558,21 +1586,21 @@ END } elsif ($url=~m|^/ext/|) { $url='/adm/wrapper'.$url; } - $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb); + $url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb); if ($container eq 'page') { my $symb=$env{'form.pagesymb'}; $url=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($symb))[2]); - $url.=(($url=~/\?/)?'&':'?').'symb='.&Apache::lonnet::escape($symb); + $url.=(($url=~/\?/)?'&':'?').'symb='.&escape($symb); } } my $parameterset=' '; - if ($isfolder) { - my $foldername=&Apache::lonnet::escape($foldertitle); + if ($isfolder || $extension eq 'sequence') { + my $foldername=&escape($foldertitle); my $folderpath=$env{'form.folderpath'}; if ($folderpath) { $folderpath.='&' }; $folderpath.=$folderarg.'&'.$foldername; - $url.='folderpath='.&Apache::lonnet::escape($folderpath).$cpinfo; + $url.='folderpath='.&escape($folderpath).$cpinfo; $parameterset='<label>'.&mt('Randomly Pick: '). '<input type="text" size="4" onChange="this.form.submit()" name="randpick_'.$orderidx.'" value="'. (&Apache::lonratedt::getparameter($orderidx, @@ -1582,7 +1610,7 @@ END } if ($ispage) { - my $pagename=&Apache::lonnet::escape($pagetitle); + my $pagename=&escape($pagetitle); my $pagepath; my $folderpath=$env{'form.folderpath'}; if ($folderpath) { $pagepath = $folderpath.'&' }; @@ -1596,12 +1624,12 @@ END $residx, $path.$pagearg.'.page'); } - $url.='pagepath='.&Apache::lonnet::escape($pagepath). - '&pagesymb='.&Apache::lonnet::escape($symb).$cpinfo; + $url.='pagepath='.&escape($pagepath). + '&pagesymb='.&escape($symb).$cpinfo; } $line.='<td bgcolor="#FFFFBB"><a href="'.$url.'"><img src="'.$icon. '" border="0"></a></td>'. - "<td bgcolor='#FFFFBB'><a href='$url'>$title</a></td>"; + "<td bgcolor='#FFFFBB'><a href=\"$url\">$title</a></td>"; if (($allowed) && ($folder!~/^supplemental/)) { my %lt=&Apache::lonlocal::texthash( 'hd' => 'Hidden', @@ -1645,13 +1673,14 @@ sub tiehash { sub untiehash { if ($hashtied) { untie %hash; } $hashtied=0; + return OK; } # --------------------------------------------------------------- check on this sub checkonthis { my ($r,$url,$level,$title)=@_; - $url=&Apache::lonnet::unescape($url); + $url=&unescape($url); $alreadyseen{$url}=1; $r->rflush(); if (($url) && ($url!~/^\/uploaded\//) && ($url!~/\*$/)) { @@ -1724,17 +1753,16 @@ sub checkonthis { # ----------------------------------------------------------------- List Symbs # sub list_symbs { - my $r=shift; - my $html=&Apache::lonxml::xmlbegin(); - $r->print($html.'<head><title>Symb List</title></head>'. - &Apache::loncommon::bodytag('Symb List')); - my $navmap = Apache::lonnavmaps::navmap->new(); - $r->print("<pre>\n"); - foreach my $res ($navmap->retrieveResources()) { - $r->print($res->compTitle()."\t".$res->symb()."\n"); - } - $r->print("\n</pre>\n"); - $r->print('<a href="/adm/coursedocs">'.&mt('Return to DOCS').'</a>'); + my ($r) = @_; + + $r->print(&Apache::loncommon::start_page('Symb List')); + my $navmap = Apache::lonnavmaps::navmap->new(); + $r->print("<pre>\n"); + foreach my $res ($navmap->retrieveResources()) { + $r->print($res->compTitle()."\t".$res->symb()."\n"); + } + $r->print("\n</pre>\n"); + $r->print('<a href="/adm/coursedocs">'.&mt('Return to DOCS').'</a>'); } @@ -1742,26 +1770,25 @@ sub list_symbs { # -------------------------------------------------------------- Verify Content # sub verifycontent { - my $r=shift; + my ($r) = @_; + my $type = &Apache::loncommon::course_type(); my $loaderror=&Apache::lonnet::overloaderror($r); if ($loaderror) { return $loaderror; } - my $html=&Apache::lonxml::xmlbegin(); - $r->print($html.'<head><title>Verify Content</title></head>'. - &Apache::loncommon::bodytag('Verify Course Documents')); + $r->print(&Apache::loncommon::start_page('Verify '.$type.' Documents')); $hashtied=0; undef %alreadyseen; %alreadyseen=(); &tiehash(); foreach (keys %hash) { if ($hash{$_}=~/\.(page|sequence)$/) { - if (($_=~/^src_/) && ($alreadyseen{&Apache::lonnet::unescape($hash{$_})})) { + if (($_=~/^src_/) && ($alreadyseen{&unescape($hash{$_})})) { $r->print('<hr /><font color="red">'. - &mt('The following sequence or page is included more than once in your course: '). - &Apache::lonnet::unescape($hash{$_}).'</font><br />'. + &mt('The following sequence or page is included more than once in your '.$type.': '). + &unescape($hash{$_}).'</font><br />'. &mt('Note that grading records for problems included in this sequence or folder will overlap.<hr />')); } } - if (($_=~/^src\_(.+)$/) && (!$alreadyseen{&Apache::lonnet::unescape($hash{$_})})) { + if (($_=~/^src\_(.+)$/) && (!$alreadyseen{&unescape($hash{$_})})) { &checkonthis($r,$hash{$_},0,$hash{'title_'.$1}); } } @@ -1780,10 +1807,9 @@ sub devalidateversioncache { } sub checkversions { - my $r=shift; - my $html=&Apache::lonxml::xmlbegin(); - $r->print($html.'<head><title>Check Versions</title></head>'. - &Apache::loncommon::bodytag('Check Course Document Versions')); + my ($r) = @_; + my $type = &Apache::loncommon::course_type(); + $r->print(&Apache::loncommon::start_page("Check $type Document Versions")); my $header=''; my $startsel=''; my $monthsel=''; @@ -1844,7 +1870,7 @@ sub checkversions { &changewarning($r,''); if ($env{'form.timerange'} eq 'all') { # show all documents - $header=&mt('All Documents in Course'); + $header=&mt('All Documents in '.$type); $allsel=1; foreach (keys %hash) { if ($_=~/^ids\_(\/res\/.+)$/) { @@ -1889,7 +1915,7 @@ sub checkversions { $env{'course.'.$env{'request.course.id'}.'.domain'}, $env{'course.'.$env{'request.course.id'}.'.num'}); my %lt=&Apache::lonlocal::texthash - ('st' => 'Version changes since start of Course', + ('st' => 'Version changes since start of '.$type, 'lm' => 'Version changes since last Month', 'lw' => 'Version changes since last Week', 'sy' => 'Version changes since Yesterday', @@ -1898,9 +1924,9 @@ sub checkversions { 'fi' => 'File', 'md' => 'Modification Date', 'mr' => 'Most recently published Version', - 've' => 'Version used in Course', - 'vu' => 'Set Version to be used in Course', -'sv' => 'Set Versions to be used in Course according to Selections below', + 've' => 'Version used in '.$type, + 'vu' => 'Set Version to be used in '.$type, +'sv' => 'Set Versions to be used in '.$type.' according to Selections below', 'sm' => 'Keep all Resources up-to-date with most recent Versions (default)', 'sc' => 'Set all Resource Versions to current Version (Fix Versions)', 'di' => 'Differences'); @@ -1947,7 +1973,7 @@ ENDHEADERS '<td title="'.$lt{'mr'}.'"><nobr>Most Recent: '. '<font size="+1">'.$currentversion.'</font>'. '</nobr></td>'. - '<td title="'.$lt{'ve'}.'"><nobr>In Course: '. + '<td title="'.$lt{'ve'}.'"><nobr>In '.$type.': '. '<font size="+1">'); # Used in course my $usedversion=$hash{'version_'.$linkurl}; @@ -2051,15 +2077,16 @@ sub changewarning { my ($r,$postexec,$message,$url)=@_; if (!&is_hash_old()) { return; } my $pathvar='folderpath'; - my $path=&Apache::lonnet::escape($env{'form.folderpath'}); + my $path=&escape($env{'form.folderpath'}); if (!defined($url)) { if (defined($env{'form.pagepath'})) { $pathvar='pagepath'; - $path=&Apache::lonnet::escape($env{'form.pagepath'}); - $path.='&pagesymb='.&Apache::lonnet::escape($env{'form.pagesymb'}); + $path=&escape($env{'form.pagepath'}); + $path.='&pagesymb='.&escape($env{'form.pagesymb'}); } $url='/adm/coursedocs?'.$pathvar.'='.$path; } + my $course_type = &Apache::loncommon::course_type(); if (!defined($message)) { $message='Changes will become active for your current session after [_1], or the next time you log in.'; } @@ -2070,7 +2097,7 @@ sub changewarning { '" /><input type="hidden" name="selectrole" value="1" /><h3><font color="red">'. &mt($message,' <input type="hidden" name="'. $env{'request.role'}.'" value="1" /><input type="button" value="'. - &mt('re-initializing course').'" onClick="reinit(this.form)" />'). + &mt('re-initializing '.$course_type).'" onClick="reinit(this.form)" />'). $help{'Caching'}.'</font></h3></form>'."\n\n"); } @@ -2080,16 +2107,17 @@ sub handler { &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; return OK if $r->header_only; + my $type = &Apache::loncommon::course_type(); # --------------------------------------------- Initialize help topics for this - foreach ('Adding_Course_Doc','Main_Course_Documents', - 'Adding_External_Resource','Navigate_Content', - 'Adding_Folders','Docs_Overview', 'Load_Map', - '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_'.$_); - } + foreach ('Adding_Course_Doc','Main_Course_Documents', + 'Adding_External_Resource','Navigate_Content', + 'Adding_Folders','Docs_Overview', 'Load_Map', + '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_'.$_); + } # Composite help files $help{'Syllabus'} = &Apache::loncommon::help_open_topic( 'Docs_About_Syllabus,Docs_Editing_Templated_Pages'); @@ -2103,15 +2131,18 @@ sub handler { 'Docs_About_My_Personal_Info,Docs_Editing_Templated_Pages'); $help{'Caching'} = &Apache::loncommon::help_open_topic('Caching'); - if ($env{'form.verify'}) { +# does this user have privileges to modify docs + my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'}); + + if ($allowed && $env{'form.verify'}) { &verifycontent($r); - } elsif ($env{'form.listsymbs'}) { + } elsif ($allowed && $env{'form.listsymbs'}) { &list_symbs($r); - } elsif ($env{'form.versions'}) { + } elsif ($allowed && $env{'form.versions'}) { &checkversions($r); - } elsif ($env{'form.dumpcourse'}) { + } elsif ($allowed && $env{'form.dumpcourse'}) { &dumpcourse($r); - } elsif ($env{'form.exportcourse'}) { + } elsif ($allowed && $env{'form.exportcourse'}) { &exportcourse($r); } else { # is this a standard course? @@ -2120,21 +2151,21 @@ sub handler { my $forcestandard = 0; my $forcesupplement; my $script=''; - my $allowed; - my $events=''; my $showdoc=0; my $containertag; my $uploadtag; &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['folderpath','pagepath','pagesymb','markedcopy_url','markedcopy_title']); + ['folderpath','pagepath', + 'pagesymb','markedcopy_url', + 'markedcopy_title']); if ($env{'form.folderpath'}) { my (@folderpath)=split('&',$env{'form.folderpath'}); - $env{'form.foldername'}=&Apache::lonnet::unescape(pop(@folderpath)); + $env{'form.foldername'}=&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.pagename'}=&unescape(pop(@pagepath)); $env{'form.folder'}=pop(@pagepath); $containertag = '<input type="hidden" name="pagepath" value="" />'. '<input type="hidden" name="pagesymb" value="" />'; @@ -2146,213 +2177,42 @@ sub handler { } unless ($showdoc) { # got called from remote if (($env{'form.folder'}=~/^default_/) || - ($env{'form.folder'} =~ m#^\d+/(pages|sequences)/#)) { + ($env{'form.folder'} =~ m:^\d+/(pages|sequences)/:)) { $forcestandard = 1; } $forcesupplement=($env{'form.folder'}=~/^supplemental_/); -# does this user have privileges to post, etc? - $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'}); if ($allowed) { &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cmd']); $script=&Apache::lonratedt::editscript('simple'); } } else { # got called in sequence from course $allowed=0; - $script='</script>'.&Apache::lonmenu::registerurl(1,undef).'<script>'; - $events='onLoad="'.&Apache::lonmenu::loadevents. - '" onUnload="'.&Apache::lonmenu::unloadevents.'"'; } # get course data my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'}; my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'}; -# get personal data - +# get personal data my $uname=$env{'user.name'}; my $udom=$env{'user.domain'}; - my $plainname=&Apache::lonnet::escape( + my $plainname=&escape( &Apache::loncommon::plainname($uname,$udom)); # graphics settings $iconpath = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL') . "/"); - my $now=time; - -# print screen - my $html=&Apache::lonxml::xmlbegin(); - $r->print(<<ENDDOCUMENT); -$html -<head> -<title>The LearningOnline Network with CAPA</title> -<script> -$script -</script> -ENDDOCUMENT - if ($allowed) { - $r->print(<<ENDNEWSCRIPT); -<script> -function makenewfolder(targetform,folderseq) { - var foldername=prompt('Name of New Folder','New Folder'); - if (foldername) { - targetform.importdetail.value=foldername+"="+folderseq; - targetform.submit(); - } -} - -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'); -} - -function makeexamupload() { - var title=prompt('Listed Title for the Uploaded Score'); - if (title) { - this.document.forms.newexamupload.importdetail.value= - title+'=/res/lib/templates/examupload.problem'; - this.document.forms.newexamupload.submit(); - } -} - -function makesmppage() { - var title=prompt('Listed Title for the Page'); - if (title) { - this.document.forms.newsmppg.importdetail.value= - title+'=/adm/$udom/$uname/$now/smppg'; - this.document.forms.newsmppg.submit(); - } -} - -function makesmpproblem() { - var title=prompt('Listed Title for the Problem'); - if (title) { - this.document.forms.newsmpproblem.importdetail.value= - title+'=/res/lib/templates/simpleproblem.problem'; - this.document.forms.newsmpproblem.submit(); - } -} - -function makebulboard() { - var title=prompt('Listed Title for the Bulletin Board'); - if (title) { - this.document.forms.newbul.importdetail.value= - title+'=/adm/$udom/$uname/$now/bulletinboard'; - this.document.forms.newbul.submit(); - } -} - -function makeabout() { - var user=prompt("Enter user\@domain for User's 'About Me' Page"); - if (user) { - var comp=new Array(); - comp=user.split('\@'); - if ((typeof(comp[0])!=undefined) && (typeof(comp[1])!=undefined)) { - if ((comp[0]) && (comp[1])) { - this.document.forms.newaboutsomeone.importdetail.value= - 'About '+user+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; - this.document.forms.newaboutsomeone.submit(); - } else { - alert("Not a valid user\@domain"); - } - } else { - alert("Please enter both user and domain in the format user\@domain"); - } - } -} - -function makeims() { - var caller = document.forms.ims.folder.value; - var newlocation = "/adm/imsimportdocs?folder="+caller+"&phase=one"; - newWindow = window.open("","IMSimport","HEIGHT=700,WIDTH=750,scrollbars=yes"); - newWindow.location.href = newlocation; -} - - -function finishpick() { - var title=this.document.forms.extimport.title.value; - var url=this.document.forms.extimport.url.value; - var form=this.document.forms.extimport.useform.value; - eval - ('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+ - '";this.document.forms.'+form+'.submit();'); -} - -function changename(folderpath,index,oldtitle,container,pagesymb) { - var title=prompt('New Title',oldtitle); - if (title) { - 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.submit(); - } -} - -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.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.submit(); - } -} - -function cutres(folderpath,index,oldtitle,container,pagesymb) { - 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; - 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(); - } -} - -function markcopy(folderpath,index,oldtitle,container,pagesymb) { - this.document.forms.renameform.markcopy.value=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; + if ($allowed) { + $script .= &editing_js($udom,$uname); } - this.document.forms.renameform.submit(); -} - -</script> - -ENDNEWSCRIPT - } # -------------------------------------------------------------------- Body tag - $r->print('</head>'. - &Apache::loncommon::bodytag('Course Documents','',$events, - '','',$showdoc). - &Apache::loncommon::help_open_menu('','','','',273,'RAT')); + $script = '<script type="text/javascript">'."\n".$script."\n".'</script>'; + $r->print(&Apache::loncommon::start_page("$type Documents", $script, + {'force_register' => $showdoc,}). + &Apache::loncommon::help_open_menu('','',273,'RAT')); + my %allfiles = (); my %codebase = (); my ($upload_result,$upload_output); @@ -2371,15 +2231,15 @@ ENDNEWSCRIPT my %attribs = (); my $updateflag = 0; my $residx = $env{'form.newidx'}; - my $primary_url = &Apache::lonnet::unescape($env{'form.primaryurl'}); + my $primary_url = &unescape($env{'form.primaryurl'}); # Process file upload - phase two - gather secondary files. for (my $i=0; $i<$env{'form.phasetwo'}; $i++) { if ($env{'form.embedded_item_'.$i.'.filename'}) { my $javacodebase; $newname{$i} = &process_secondary_uploads(\$upload_output,$coursedom,$coursenum,'embedded_item_',$i,$residx); - $origname{$i} = &Apache::lonnet::unescape($env{'form.embedded_orig_'.$i}); + $origname{$i} = &unescape($env{'form.embedded_orig_'.$i}); if (exists($env{'form.embedded_codebase_'.$i})) { - $javacodebase = &Apache::lonnet::unescape($env{'form.embedded_codebase_'.$i}); + $javacodebase = &unescape($env{'form.embedded_codebase_'.$i}); $origname{$i} =~ s#^\Q$javacodebase\E/##; } my @attributes = (); @@ -2389,7 +2249,7 @@ ENDNEWSCRIPT @attributes = ($env{'form.embedded_attrib_'.$i}); } foreach (@attributes) { - push(@{$attribs{$i}},&Apache::lonnet::unescape($_)); + push(@{$attribs{$i}},&unescape($_)); } if ($javacodebase) { $codebase{$i} = $javacodebase; @@ -2420,7 +2280,7 @@ ENDNEWSCRIPT $content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi; } if (exists($codebase{$item})) { - $content =~ s/(codebase\s*=\s*["']?)\Q$codebase{$item}\E(["']?)/$1.$2/i; + $content =~ s/(codebase\s*=\s*["']?)\Q$codebase{$item}\E(["']?)/$1.$2/i; #' stupid emacs } } # Save edited file. @@ -2438,8 +2298,8 @@ ENDNEWSCRIPT unless ($showdoc || $upload_result eq 'phasetwo') { # ----------------------------------------------------------------------------- my %lt=&Apache::lonlocal::texthash( - 'uplm' => 'Upload a new main course document', - 'upls' => 'Upload a new supplemental course document', + 'uplm' => 'Upload a new main '.lc($type).' document', + 'upls' => 'Upload a new supplemental '.lc($type).' document', 'impp' => 'Import a document', 'pubd' => 'Published documents', 'copm' => 'All documents out of a published map into this folder', @@ -2447,6 +2307,7 @@ ENDNEWSCRIPT 'upld' => 'Upload Document', 'srch' => 'Search', 'impo' => 'Import', + 'book' => 'Import Bookmarks', 'selm' => 'Select Map', 'load' => 'Load Map', 'reco' => 'Recover Deleted Resources', @@ -2457,6 +2318,7 @@ ENDNEWSCRIPT 'navc' => 'Navigate Contents', 'sipa' => 'Simple Page', 'sipr' => 'Simple Problem', + 'drbx' => 'Drop Box', 'scuf' => 'Score Upload Form', 'bull' => 'Bulletin Board', 'mypi' => 'My Personal Info', @@ -2482,7 +2344,7 @@ ENDNEWSCRIPT if ($env{'form.folder'} eq '' || $env{'form.folder'} eq 'supplemental') { $folderpath='default&'. - &Apache::lonnet::escape(&mt('Main Course Documents')); + &escape(&mt('Main '.$type.' Documents')); } } unless ($env{'form.pagepath'}) { @@ -2509,13 +2371,13 @@ $uploadtag <input type="submit" name="versions" value="$lt{'cv'}" />$help{'Check_Resource_Versions'} $dumpbut $exportbut -</td><!-- <td bgcolor="#DDDDCC"> +</td><td bgcolor="#DDDDCC"> <input type="submit" name="listsymbs" value="$lt{'ls'}" /> -</td>--></tr></table> +</td></tr></table> </form> ENDCOURSEVERIFY $r->print(&Apache::loncommon::help_open_topic('Docs_Adding_Course_Doc', - &mt('Editing the Table of Contents for your Course'))); + &mt('Editing the Table of Contents for your '.$type))); } # --------------------------------------------------------- Standard documents $r->print('<table border=2 cellspacing=4 cellpadding=4>'); @@ -2526,7 +2388,7 @@ ENDCOURSEVERIFY my $folder=$env{'form.folder'}; if ($folder eq '' || $folder eq 'supplemental') { $folder='default'; - $env{'form.folderpath'}='default&'.&Apache::lonnet::escape(&mt('Main Course Documents')); + $env{'form.folderpath'}='default&'.&escape(&mt('Main '.$type.' Documents')); } my $postexec=''; if ($folder eq 'default') { @@ -2582,11 +2444,14 @@ $uploadtag <form action="/adm/coursedocs" method="post" name="simpleeditdefault"> $lt{'pubd'}<br /> $uploadtag -<input type=button onClick="javascript:groupsearch()" value="$lt{'srch'}"> +<input type=button onClick="javascript:groupsearch()" value="$lt{'srch'}" /> +<br /> <nobr> -<input type=button onClick="javascript:groupimport();" value="$lt{'impo'}"> +<input type=button onClick="javascript:groupimport();" value="$lt{'impo'}" /> $help{'Importing_LON-CAPA_Resource'} </nobr> +<br /> +<input type=button onClick="javascript:groupopen(0,1,1);" value="$lt{'book'}" /> <p> <hr /> $lt{'copm'}<br /> @@ -2599,7 +2464,7 @@ $help{'Load_Map'}</nobr> </form> <hr /> <form action="/adm/groupsort" method="post" name="recover"> -<input type="button" name="recovermap" onClick="javascript:groupopen('$readfile',1)" value="$lt{'reco'}" /> +<input type="button" name="recovermap" onClick="javascript:groupopen('$readfile',1,0)" value="$lt{'reco'}" /> </form> ENDFORM unless ($env{'form.pagepath'}) { @@ -2613,7 +2478,7 @@ $uploadtag value="$lt{'extr'}" /> $help{'Adding_External_Resource'} </nobr> </form> -<form action="/adm/imsimportdocs" method="post" name="ims"> +<br /><form action="/adm/imsimportdocs" method="post" name="ims"> <input type="hidden" name="folder" value="$folder" /> <input name="imsimport" type="button" value="$lt{'imsf'}" onClick="javascript:makeims();" /> </nobr> @@ -2623,7 +2488,7 @@ ENDFORM $r->print('</td><td bgcolor="#DDDDDD">'); unless ($env{'form.pagepath'}) { $r->print(<<ENDFORM); -<form action="/adm/coursedocs" method="post" name="newfolder"> +<br /><form action="/adm/coursedocs" method="post" name="newfolder"> <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" /> <input type=hidden name="importdetail" value=""> <nobr> @@ -2632,7 +2497,7 @@ onClick="javascript:makenewfolder(this.f value="$lt{'newf'}" />$help{'Adding_Folders'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newpage"> +<br /><form action="/adm/coursedocs" method="post" name="newpage"> <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" /> <input type=hidden name="importdetail" value=""> <nobr> @@ -2641,7 +2506,7 @@ onClick="javascript:makenewpage(this.for value="$lt{'newp'}" />$help{'Adding_Pages'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newsyl"> +<br /><form action="/adm/coursedocs" method="post" name="newsyl"> $uploadtag <input type=hidden name="importdetail" value="Syllabus=/public/$coursedom/$coursenum/syllabus"> @@ -2650,7 +2515,7 @@ value="Syllabus=/public/$coursedom/$cour $help{'Syllabus'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newnav"> +<br /><form action="/adm/coursedocs" method="post" name="newnav"> $uploadtag <input type=hidden name="importdetail" value="Navigate Content=/adm/navmaps"> @@ -2659,7 +2524,7 @@ value="Navigate Content=/adm/navmaps"> $help{'Navigate_Content'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newsmppg"> +<br /><form action="/adm/coursedocs" method="post" name="newsmppg"> $uploadtag <input type=hidden name="importdetail" value=""> <nobr> @@ -2667,7 +2532,7 @@ $uploadtag onClick="javascript:makesmppage();" /> $help{'Simple Page'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newsmpproblem"> +<br /><form action="/adm/coursedocs" method="post" name="newsmpproblem"> $uploadtag <input type=hidden name="importdetail" value=""> <nobr> @@ -2675,7 +2540,15 @@ $uploadtag onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newexamupload"> +<br /><form action="/adm/coursedocs" method="post" name="newdropbox"> +$uploadtag +<input type=hidden name="importdetail" value=""> +<nobr> +<input name="newdropbox" type="button" value="$lt{'drbx'}" +onClick="javascript:makedropbox();" /> +</nobr> +</form> +<br /><form action="/adm/coursedocs" method="post" name="newexamupload"> $uploadtag <input type=hidden name="importdetail" value=""> <nobr> @@ -2684,7 +2557,7 @@ onClick="javascript:makeexamupload();" / $help{'Score_Upload_Form'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newbul"> +<br /><form action="/adm/coursedocs" method="post" name="newbul"> $uploadtag <input type=hidden name="importdetail" value=""> <nobr> @@ -2693,7 +2566,7 @@ onClick="javascript:makebulboard();" /> $help{'Bulletin Board'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newaboutme"> +<br /><form action="/adm/coursedocs" method="post" name="newaboutme"> $uploadtag <input type=hidden name="importdetail" value="$plainname=/adm/$udom/$uname/aboutme"> @@ -2702,7 +2575,7 @@ value="$plainname=/adm/$udom/$uname/abou $help{'My Personal Info'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> +<br /><form action="/adm/coursedocs" method="post" name="newaboutsomeone"> $uploadtag <input type=hidden name="importdetail" value=""> <nobr> @@ -2722,7 +2595,7 @@ $uploadtag onClick="javascript:makesmpproblem();" />$help{'Simple Problem'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="newexamupload"> +<br /><form action="/adm/coursedocs" method="post" name="newexamupload"> $uploadtag <input type=hidden name="importdetail" value=""> <nobr> @@ -2749,7 +2622,7 @@ ENDBLOCK if ($folder =~ /^supplemental$/ && $env{'form.folderpath'} =~ /^default\&/) { $env{'form.folderpath'}='supplemental&'. - &Apache::lonnet::escape(&mt('Supplemental Course Documents')); + &escape(&mt('Supplemental '.$type.' Documents')); } &editor($r,$coursenum,$coursedom,$folder,$allowed); if ($allowed) { @@ -2795,7 +2668,7 @@ onClick="javascript:makenewfolder(this.f value="$lt{'newf'}" /> $help{'Adding_Folders'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="supnewext"> +<br /><form action="/adm/coursedocs" method="post" name="supnewext"> <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" /> <input type=hidden name="importdetail" value=""> <nobr> @@ -2804,7 +2677,7 @@ onClick="javascript:makenewext('supnewex value="$lt{'extr'}" /> $help{'Adding_External_Resource'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="supnewsyl"> +<br /><form action="/adm/coursedocs" method="post" name="supnewsyl"> <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" /> <input type=hidden name="importdetail" value="Syllabus=/public/$coursedom/$coursenum/syllabus"> @@ -2813,7 +2686,7 @@ value="Syllabus=/public/$coursedom/$cour $help{'Syllabus'} </nobr> </form> -<form action="/adm/coursedocs" method="post" name="subnewaboutme"> +<br /><form action="/adm/coursedocs" method="post" name="subnewaboutme"> <input type="hidden" name="folderpath" value="$env{'form.folderpath'}" /> <input type=hidden name="importdetail" value="$plainname=/adm/$udom/$uname/aboutme"> @@ -2841,9 +2714,176 @@ ENDSUPFORM } } } - $r->print('</body></html>'); + $r->print(&Apache::loncommon::end_page()); return OK; } + +sub editing_js { + my ($udom,$uname) = @_; + my $now = time(); + + return <<ENDNEWSCRIPT; +function makenewfolder(targetform,folderseq) { + var foldername=prompt('Name of New Folder','New Folder'); + if (foldername) { + targetform.importdetail.value=escape(foldername)+"="+folderseq; + targetform.submit(); + } +} + +function makenewpage(targetform,folderseq) { + var pagename=prompt('Name of New Page','New Page'); + if (pagename) { + targetform.importdetail.value=escape(pagename)+"="+folderseq; + targetform.submit(); + } +} + +function makenewext(targetname) { + this.document.forms.extimport.useform.value=targetname; + window.open('/adm/rat/extpickframe.html'); +} + +function makeexamupload() { + var title=prompt('Listed Title for the Uploaded Score'); + if (title) { + this.document.forms.newexamupload.importdetail.value= + escape(title)+'=/res/lib/templates/examupload.problem'; + this.document.forms.newexamupload.submit(); + } +} + +function makesmppage() { + var title=prompt('Listed Title for the Page'); + if (title) { + this.document.forms.newsmppg.importdetail.value= + escape(title)+'=/adm/$udom/$uname/$now/smppg'; + this.document.forms.newsmppg.submit(); + } +} + +function makesmpproblem() { + var title=prompt('Listed Title for the Problem'); + if (title) { + this.document.forms.newsmpproblem.importdetail.value= + escape(title)+'=/res/lib/templates/simpleproblem.problem'; + this.document.forms.newsmpproblem.submit(); + } +} + +function makedropbox() { + var title=prompt('Listed Title for the Drop Box'); + if (title) { + this.document.forms.newdropbox.importdetail.value= + escape(title)+'=/res/lib/templates/DropBox.problem'; + this.document.forms.newdropbox.submit(); + } +} + +function makebulboard() { + var title=prompt('Listed Title for the Bulletin Board'); + if (title) { + this.document.forms.newbul.importdetail.value= + escape(title)+'=/adm/$udom/$uname/$now/bulletinboard'; + this.document.forms.newbul.submit(); + } +} + +function makeabout() { + var user=prompt("Enter user:domain for User's 'About Me' Page"); + if (user) { + var comp=new Array(); + comp=user.split(':'); + if ((typeof(comp[0])!=undefined) && (typeof(comp[1])!=undefined)) { + if ((comp[0]) && (comp[1])) { + this.document.forms.newaboutsomeone.importdetail.value= + 'About '+escape(user)+'=/adm/'+comp[1]+'/'+comp[0]+'/aboutme'; + this.document.forms.newaboutsomeone.submit(); + } else { + alert("Not a valid user:domain"); + } + } else { + alert("Please enter both user and domain in the format user:domain"); + } + } +} + +function makeims() { + var caller = document.forms.ims.folder.value; + var newlocation = "/adm/imsimportdocs?folder="+caller+"&phase=one"; + newWindow = window.open("","IMSimport","HEIGHT=700,WIDTH=750,scrollbars=yes"); + newWindow.location.href = newlocation; +} + + +function finishpick() { + var title=this.document.forms.extimport.title.value; + var url=this.document.forms.extimport.url.value; + var form=this.document.forms.extimport.useform.value; + eval + ('this.document.forms.'+form+'.importdetail.value="'+title+'='+url+ + '";this.document.forms.'+form+'.submit();'); +} + +function changename(folderpath,index,oldtitle,container,pagesymb) { + var title=prompt('New Title',oldtitle); + if (title) { + 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.submit(); + } +} + +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.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.submit(); + } +} + +function cutres(folderpath,index,oldtitle,container,pagesymb) { + 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; + 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(); + } +} + +function markcopy(folderpath,index,oldtitle,container,pagesymb) { + this.document.forms.renameform.markcopy.value=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.submit(); +} + +ENDNEWSCRIPT +} 1; __END__