--- loncom/interface/londocs.pm 2004/01/13 01:55:22 1.98 +++ loncom/interface/londocs.pm 2004/02/27 18:16:54 1.108 @@ -1,7 +1,7 @@ # The LearningOnline Network # Documents # -# $Id: londocs.pm,v 1.98 2004/01/13 01:55:22 www Exp $ +# $Id: londocs.pm,v 1.108 2004/02/27 18:16:54 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -68,10 +68,13 @@ sub mapread { sub storemap { my ($coursenum,$coursedom,$map)=@_; - $hadchanges=1; - return + my ($outtext,$errtext)= &Apache::lonratedt::storemap('/uploaded/'.$coursedom.'/'.$coursenum.'/'. $map,1); + if ($errtext) { return ($errtext,2); } + + $hadchanges=1; + return ($errtext,0); } # ----------------------------------------- Return hash with valid author names @@ -94,13 +97,15 @@ sub authorhosts { } else { ($cd,$ca)=($realm=~/^\/(\w+)\/(\w+)$/); } - if (&Apache::lonnet::homeserver($ca,$cd) eq - $Apache::lonnet::perlvar{'lonHostID'}) { + my $allowed=0; + my $myhome=&Apache::lonnet::homeserver($ca,$cd); + my @ids=&Apache::lonnet::current_machine_ids(); + foreach my $id (@ids) { if ($id eq $myhome) { $allowed=1; } } + if ($allowed) { $home++; $outhash{'home_'.$ca.'@'.$cd}=1; } else { - $outhash{'otherhome_'.$ca.'@'.$cd}= - &Apache::lonnet::homeserver($ca,$cd); + $outhash{'otherhome_'.$ca.'@'.$cd}=$myhome; $other++; } } @@ -250,7 +255,7 @@ sub group_import { join ':', ($name, $url, $ext, 'normal', 'res'); } } - &storemap($coursenum, $coursedom, $folder.'.sequence'); + return &storemap($coursenum, $coursedom, $folder.'.sequence'); } sub editor { @@ -295,7 +300,12 @@ sub editor { $comment.':'.$url.':'.$ext.':normal:res'; $Apache::lonratedt::order[$#Apache::lonratedt::order+1]= $newidx; - &storemap($coursenum,$coursedom,$folder.'.sequence'); + + ($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.sequence'); + if ($fatal) { + $r->print('<p><font color="red">'.$errtext.'</font></p>'); + return; + } } } if ($ENV{'form.cmd'}) { @@ -335,7 +345,12 @@ sub editor { } # Store the changed version - &storemap($coursenum,$coursedom,$folder.'.sequence'); + ($errtext,$fatal)=&storemap($coursenum,$coursedom, + $folder.'.sequence'); + if ($fatal) { + $r->print('<p><font color="red">'.$errtext.'</font></p>'); + return; + } } # Group import/search if ($ENV{'form.importdetail'}) { @@ -349,21 +364,30 @@ sub editor { } } # Store the changed version - group_import($coursenum, $coursedom, $folder, @imports); + ($errtext,$fatal)=group_import($coursenum, $coursedom, $folder, + @imports); + if ($fatal) { + $r->print('<p><font color="red">'.$errtext.'</font></p>'); + return; + } } # Loading a complete map if (($ENV{'form.importmap'}) && ($ENV{'form.loadmap'})) { - foreach -(&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$ENV{'form.importmap'}))) { + foreach (&Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$ENV{'form.importmap'}))) { my $idx=$#Apache::lonratedt::resources; $idx++; $Apache::lonratedt::resources[$idx]=$_; $Apache::lonratedt::order - [$#Apache::lonratedt::order+1]=$idx; - } + [$#Apache::lonratedt::order+1]=$idx; + } # Store the changed version - &storemap($coursenum,$coursedom,$folder.'.sequence'); + ($errtext,$fatal)=&storemap($coursenum,$coursedom, + $folder.'.sequence'); + if ($fatal) { + $r->print('<p><font color="red">'.$errtext.'</font></p>'); + return; + } } } # ---------------------------------------------------------------- End commands @@ -373,7 +397,7 @@ sub editor { foreach (@Apache::lonratedt::order) { my ($name,$url)=split(/\:/,$Apache::lonratedt::resources[$_]); unless ($name) { $name=(split(/\//,$url))[-1]; } - unless ($name) { $name='NO RESOURCE'; $url='/adm/notfound.html'; } + unless ($name) { next; } $r->print(&entryline($idx,$name,$url,$folder,$allowed,$_)); $idx++; } @@ -480,7 +504,7 @@ sub checkonthis { $alreadyseen{$url}=1; $r->rflush(); if (($url) && ($url!~/^\/uploaded\//) && ($url!~/\*$/)) { - $r->print('<br />'); + $r->print("\n<br />"); for (my $i=0;$i<=$level*5;$i++) { $r->print(' '); } @@ -535,7 +559,11 @@ sub checkonthis { } elsif ($result==HTTP_SERVICE_UNAVAILABLE) { $r->print('<font color="red"><b>'.&mt('connection down').'</b></font>'); } elsif ($result==HTTP_NOT_FOUND) { - $r->print('<font color="red"><b>'.&mt('not found').'</b></font>'); + unless ($url=~/\$/) { + $r->print('<font color="red"><b>'.&mt('not found').'</b></font>'); + } else { + $r->print('<font color="yellow"><b>'.&mt('unable to verify variable URL').'</b></font>'); + } } else { $r->print('<font color="red"><b>'.&mt('access denied').'</b></font>'); } @@ -564,7 +592,8 @@ sub verifycontent { } } &untiehash(); - $r->print('<h1>'.&mt('Done').'.</h1>'); + $r->print('<h1>'.&mt('Done').'.</h1>'.'<a href="/adm/coursedocs">'. + &mt('Return to DOCS').'</a>'); } # -------------------------------------------------------------- Check Versions @@ -705,10 +734,7 @@ sub checkversions { <input type="submit" name="display" value="$lt{'sd'}" /> <h3>$header</h3> <input type="submit" name="setversions" value="$lt{'sv'}" /> -<table border="2"> -<tr> -<th>$lt{'fi'}</th><th>$lt{'md'}</th><th>$lt{'mr'}</th> -<th>$lt{'ve'}</th><th>$lt{'vu'}</th><th>$lt{'di'}</th></tr> +<table border="0"> ENDHEADERS foreach (sort keys %changes) { if ($changes{$_}>$starttime) { @@ -719,13 +745,25 @@ ENDHEADERS } my $linkurl=&Apache::lonnet::clutter($_); $r->print( - '<tr><td><b>'. + '<tr><td colspan="5"><br /><br /><font size="+1"><b>'. &Apache::lonnet::gettitle($linkurl). - '</b><br /><a href="'.$linkurl.'" target="cat">'.$linkurl. - '</a></td><td>'. - &Apache::lonlocal::locallocaltime($changes{$_}). - '</td><td><font size="+2">'. - $currentversion.'</font></td><td><font size="+2">'); + '</b></font></td></tr>'. + '<tr><td> </td>'. + '<td colspan="4">'. + '<a href="'.$linkurl.'" target="cat">'.$linkurl. + '</a></td></tr>'. + '<tr><td></td>'. + '<td title="'.$lt{'md'}.'">'. + &Apache::lonlocal::locallocaltime( + &Apache::lonnet::metadata($root.'.'.$extension, + 'lastrevisiondate') + ). + '</td>'. + '<td title="'.$lt{'mr'}.'"><nobr>Most Recent: '. + '<font size="+1">'.$currentversion.'</font>'. + '</nobr></td>'. + '<td title="'.$lt{'ve'}.'"><nobr>In Course: '. + '<font size="+1">'); # Used in course my $usedversion=$hash{'version_'.$linkurl}; if (($usedversion) && ($usedversion ne 'mostrecent')) { @@ -733,14 +771,15 @@ ENDHEADERS } else { $r->print($currentversion); } - $r->print('</font></td><td>'); + $r->print('</font></nobr></td><td title="'.$lt{'vu'}.'">'. + '<nobr>Use: '); # Set version $r->print(&Apache::loncommon::select_form($setversions{$linkurl}, 'set_version_'.$linkurl, ('' => '', 'mostrecent' => 'most recent', map {$_,$_} (1..$currentversion)))); - $r->print('</td><td><font size="1"><ul>'); + $r->print('</nobr></td></tr><tr><td></td>'); my $lastold=1; for (my $prevvers=1;$prevvers<$currentversion;$prevvers++) { my $url=$root.'.'.$prevvers.'.'.$extension; @@ -749,11 +788,27 @@ ENDHEADERS $lastold=$prevvers; } } + # + # Code to figure out how many version entries should go in + # each of the four columns + my $entries_per_col = 0; + my $num_entries = ($currentversion-$lastold); + if ($num_entries % 4 == 0) { + $entries_per_col = $num_entries/4; + } else { + $entries_per_col = $num_entries/4 + 1; + } + my $entries_count = 0; + $r->print('<td valign="top"><font size="-2">'); + my $cols_output = 1; for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) { my $url=$root.'.'.$prevvers.'.'.$extension; - $r->print('<li><a href="'.&Apache::lonnet::clutter($url). + $r->print('<nobr><a href="'.&Apache::lonnet::clutter($url). '">'.&mt('Version').' '.$prevvers.'</a> ('. - &Apache::lonlocal::locallocaltime(&Apache::lonnet::metadata($url,'lastrevisiondate')). + &Apache::lonlocal::locallocaltime( + &Apache::lonnet::metadata($url, + 'lastrevisiondate') + ). ')'); if (&Apache::loncommon::fileembstyle($extension) eq 'ssi') { $r->print(' <a href="/adm/diff?filename='. @@ -761,9 +816,19 @@ ENDHEADERS '&versionone='.$prevvers. '">'.&mt('Diffs').'</a>'); } - $r->print('</li>'); + $r->print('</nobr><br />'); + if (++$entries_count % $entries_per_col == 0) { + $r->print('</font></td>'); + if ($cols_output != 4) { + $r->print('<td valign="top"><font size="-2">'); + $cols_output++; + } + } } - $r->print('</ul></font></td></tr>'); + while($cols_output++ < 4) { + $r->print('</font></td><td><font>') + } + $r->print('</font></td></tr>'."\n"); } } $r->print('</table></form>'); @@ -929,6 +994,21 @@ function makebulboard() { } } +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(); + } + } + } +} + function finishpick() { var title=this.document.forms.extimport.title.value; var url=this.document.forms.extimport.url.value; @@ -949,7 +1029,7 @@ function changename(folder,index,oldtitl } function removeres(folder,index,oldtitle) { - if ((oldtitle=='NO RESOURCE') || (confirm('Remove "'+oldtitle+'"?'))) { + if (confirm('Remove "'+oldtitle+'"?')) { this.document.forms.renameform.cmd.value='del_'+index; this.document.forms.renameform.folder.value=folder; this.document.forms.renameform.submit(); @@ -962,7 +1042,9 @@ ENDNEWSCRIPT # -------------------------------------------------------------------- Body tag $r->print('</head>'. &Apache::loncommon::bodytag('Course Documents','',$events, - '','',$showdoc)); + '','',$showdoc). + &Apache::loncommon::help_open_faq(273). + &Apache::loncommon::help_open_bug('RAT')); unless ($showdoc) { # ----------------------------------------------------------------------------- my %lt=&Apache::lonlocal::texthash( @@ -984,6 +1066,7 @@ ENDNEWSCRIPT 'scuf' => 'Score Upload Form', 'bull' => 'Bulletin Board', 'mypi' => 'My Personal Info', + 'abou' => 'About User', 'file' => 'File', 'title' => 'Title', 'comment' => 'Comment' @@ -1168,6 +1251,15 @@ value="$plainname=/adm/$udom/$uname/abou $help{'My Personal Info'} </nobr> </form> +<form action="/adm/coursedocs" method="post" name="newaboutsomeone"> +<input type="hidden" name="folder" value="$folder"> +<input type="hidden" name="foldername" value="$ENV{'form.foldername'}"> +<input type=hidden name="importdetail" value=""> +<nobr> +<input name="newaboutsomeone" type="button" value="$lt{'abou'}" +onClick="javascript:makeabout();" /> +</nobr> +</form> </td></tr> </table> ENDFORM @@ -1189,7 +1281,6 @@ ENDFORM $r->print(<<ENDSUPFORM); <table cellspacing=4 cellpadding=4><tr> <th bgcolor="#DDDDDD">$lt{'upls'}</th> -<th bgcolor="#DDDDDD">$lt{'impp'}</th> <th bgcolor="#DDDDDD">$lt{'spec'}</th> </tr> <tr><td bgcolor="#DDDDDD"> @@ -1208,23 +1299,6 @@ ENDFORM </form> </td> <td bgcolor="#DDDDDD"> -<form action="/adm/coursedocs" method="post" name="simpleeditsupplement"> -<input type="hidden" name="folder" value="$folder"> -<input type="hidden" name="foldername" value="$ENV{'form.foldername'}"> -<input type=hidden name="importdetail" value=""> -<input type=button onClick= -"javascript:document.forms.simpleedit.folder.value='$folder';groupsearch()" value="$lt{'srch'}"> -<input type=button onClick= -"javascript:document.forms.simpleedit.folder.value='$folder';groupimport();" value="$lt{'impo'}">$help{'Importing_LON-CAPA_Resource'} -<p> -<hr /> -<input type="text" size="20" name="importmap"> -<input type=button -onClick="javascript:openbrowser('simpleeditsupplement','importmap','sequence,page','')" -value="$lt{'selm'}"><input type="submit" name="loadmap" value="$lt{'load'}">$help{'Load_Map'} -</p> -</form> -</td><td bgcolor="#DDDDDD"> <form action="/adm/coursedocs" method="post" name="supnewfolder"> <input type="hidden" name="folder" value="$folder"> <input type="hidden" name="foldername" value="$ENV{'form.foldername'}">