--- loncom/interface/londocs.pm	2004/01/29 00:50:44	1.100
+++ loncom/interface/londocs.pm	2004/02/19 21:51:11	1.107
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: londocs.pm,v 1.100 2004/01/29 00:50:44 www Exp $
+# $Id: londocs.pm,v 1.107 2004/02/19 21:51:11 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++;
         }
@@ -709,10 +733,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) {
@@ -723,13 +744,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>&nbsp;&nbsp;&nbsp;</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')) {
@@ -737,14 +770,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;
@@ -753,11 +787,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='.
@@ -765,9 +815,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>');
@@ -933,6 +993,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;
@@ -953,7 +1028,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();
@@ -990,6 +1065,7 @@ ENDNEWSCRIPT
                 'scuf' => 'Score Upload Form',
                 'bull' => 'Bulletin Board',
                 'mypi' => 'My Personal Info',
+		'abou' => 'About User',
                 'file' =>  'File',
                 'title' => 'Title',
                 'comment' => 'Comment' 
@@ -1174,6 +1250,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
@@ -1195,7 +1280,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">
@@ -1214,23 +1298,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'}">