--- loncom/interface/groupsort.pm	2003/06/13 23:33:38	1.20
+++ loncom/interface/groupsort.pm	2005/06/08 21:13:05	1.32
@@ -2,7 +2,7 @@
 # The LON-CAPA group sort handler
 # Allows for sorting prior to import into RAT.
 #
-# $Id: groupsort.pm,v 1.20 2003/06/13 23:33:38 albertel Exp $
+# $Id: groupsort.pm,v 1.32 2005/06/08 21:13:05 www Exp $
 # 
 # Copyright Michigan State University Board of Trustees
 #
@@ -38,6 +38,8 @@ use strict;
 use Apache::Constants qw(:common);
 use GDBM_File;
 use Apache::loncommon;
+use Apache::lonlocal;
+use Apache::lonnet;
 
 my %hash; # variable to tie to user specific database
 my $iconpath; # variable to be accessible to multiple subroutines
@@ -61,13 +63,13 @@ sub handler {
     my $fileclr = '#ffffe6';
     my $titleclr = '#ddffff';
 
-    $r->content_type('text/html');
+    &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;
     return OK if $r->header_only;
 
 # finish_import looks different for graphical or "simple" RAT
     my $finishimport='';
-    if ($ENV{'form.mode'} eq 'simple') {
+    if ($env{'form.mode'} eq 'simple' || $env{'form.mode'} eq '') {
         $finishimport=(<<ENDSMP);
 function finish_import() {
     opener.document.forms.simpleedit.importdetail.value='';
@@ -103,9 +105,9 @@ ENDADV
     }
 
 # output start of web page
-
+    my $html=&Apache::lonxml::xmlbegin();
     $r->print(<<END);
-<html>
+$html
 <head>
 <title>The LearningOnline Network With CAPA Group Sorter</title>
 <script language='javascript'>
@@ -114,10 +116,9 @@ function insertRowInLastRow() {
     opener.addobj(opener.maxrow,'e&2');
 }
 function placeResourceInLastRow (title,url,linkflag) {
-    opener.newresource(opener.maxrow,2,opener.escape(title),
+    opener.mostrecent=opener.newresource(opener.maxrow,2,opener.escape(title),
 		       opener.escape(url),'false','normal');
     opener.save();
-    opener.mostrecent=opener.obj.length-1;
     if (linkflag) {
 	opener.joinres(opener.linkmode,opener.mostrecent,0);
     }
@@ -139,7 +140,6 @@ function orderchange(val,newval) {
 </script>
 </head>
 END
-    $r->print(&Apache::loncommon::bodytag('Sort Imported Resources'));
     # read pertinent machine configuration
     my $domain  = $r->dir_config('lonDefDomain');
     $iconpath = $r->dir_config('lonIconsURL') . "/";
@@ -149,17 +149,17 @@ END
 
     my $diropendb;
 # ------------------------------ which file do we open? Easy if explictly given
-    if ($ENV{'form.catalogmode'} eq 'groupsearch') {
+    if ($env{'form.catalogmode'} eq 'groupsearch') {
 	$diropendb = 
-	    "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db";
+	    "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_searchcat.db";
     }
-    elsif ($ENV{'form.catalogmode'} eq 'groupimport') {
+    elsif ($env{'form.catalogmode'} eq 'groupimport') {
 	$diropendb = 
-	    "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db";
+	    "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_indexer.db";
     }
-    elsif ($ENV{'form.catalogmode'} eq 'groupsec') {
+    elsif ($env{'form.catalogmode'} eq 'groupsec') {
 	$diropendb = 
-	    "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_groupsec.db";
+	    "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_groupsec.db";
     }
 # --------------------- not explicitly given, choose the one most recently used
     else { # choose last accessed
@@ -167,19 +167,19 @@ END
         my @dbst;
 
 	$dbfn[0] =
-	    "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db";
+	    "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_searchcat.db";
         $dbst[0]=-1;
 	if (-e $dbfn[0]) {
 	    $dbst[0]=(stat($dbfn[0]))[9];
 	}
 	$dbfn[1] =
-            "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db";
+            "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_indexer.db";
         $dbst[1]=-1;
 	if (-e $dbfn[1]) {
             $dbst[1]=(stat($dbfn[1]))[9];
         }
 	$dbfn[2] =
-            "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_groupsec.db";
+            "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_groupsec.db";
         $dbst[2]=-1;
 	if (-e $dbfn[2]) {
             $dbst[2]=(stat($dbfn[2]))[9];
@@ -201,7 +201,7 @@ END
     }
 # ----------------------------- diropendb is now the filename of the db to open
     if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) {
-	my $acts = $ENV{'form.acts'};
+	my $acts = $env{'form.acts'};
 	my @Acts = split(/b/,$acts);
 	my %ahash;
 	my %achash;
@@ -234,10 +234,14 @@ END
 		my $key = $_;
 		$key =~ s/^store_//;
 		$shash{$key} = $hash{'storectr_'.$key};
-		$thash{$key} = $hash{'store_'.$key};
+		if (&Apache::lonnet::gettitle($key) eq '') {
+		    $thash{$key} = $hash{'store_'.$key};
+		} else {
+		    $thash{$key} = &Apache::lonnet::gettitle($key);
+		}
 	    }
 	}
-	if ($ENV{'form.oldval'}) {
+	if ($env{'form.oldval'}) {
 	    my $newctr = 0;
 	    my %chash;
 	    foreach (sort {$shash{$a} <=> $shash{$b}} (keys %shash)) {
@@ -247,8 +251,8 @@ END
 		$hash{'storectr_'.$key} = $newctr;
 		$chash{$newctr} = $key;
 	    }
-	    my $oldval = $ENV{'form.oldval'};
-	    my $newval = $ENV{'form.newval'};
+	    my $oldval = $env{'form.oldval'};
+	    my $newval = $env{'form.newval'};
 	    if ($oldval != $newval) {
 		# when newval==0, then push down and delete
 		if ($newval!=0) {
@@ -290,68 +294,98 @@ END
     untie %hash;
     my $ctr = 0;
     my $clen = scalar(keys %shash);
-   $r->print(<<END);
-<b><font color="#888888">Finalize order of resources</font></b>
+    if ($clen > 1) {
+	my %lt=&Apache::lonlocal::texthash(
+		'fin'=> 'Finalize order of resources',
+		'gb' => 'Go Back',
+		'ns' => 'New Search',
+		'fi' => 'Finish Import',
+		'ca' => 'Cancel',
+		'co' => 'Change Order',
+		'ti' => 'Title',
+		'pa' => 'Path'
+		);
+	$r->print(&Apache::loncommon::bodytag('Sort Imported Resources'));
+	$r->print(<<END);
+<b><font color="#888888">$lt{'fin'}</font></b>
 <form method='post' action='/adm/groupsort' name='groupsort'
       enctype='application/x-www-form-urlencoded'>
 <input type="hidden" name="fnum" value="$clen" />
 <input type="hidden" name="oldval" value="" />
 <input type="hidden" name="newval" value="" />
-<input type="hidden" name="mode" value="$ENV{'form.mode'}" />
+<input type="hidden" name="mode" value="$env{'form.mode'}" />
 END
 
-# --- Expand here if "GO BACK" button desired
-    if ($ENV{'form.catalogmode'} eq 'groupimport') {
-	$r->print(<<END);
-<input type="button" name="alter" value="GO BACK"
- onClick="window.location='/res/?catalogmode=groupimport'" />&nbsp;
+        # --- Expand here if "GO BACK" button desired
+        if ($env{'form.catalogmode'} eq 'groupimport') {
+            my $resurl = &Apache::loncommon::lastresurl();
+	    $r->print(<<END);
+<input type="button" name="alter" value="$lt{'gb'}"
+ onClick="window.location='$resurl?catalogmode=groupimport'" />&nbsp;
 END
-    }
-    if ($ENV{'form.catalogmode'} eq 'groupsearch') {
-	$r->print(<<END);
-<input type="button" name="alter" value="New Search"
+        }
+	if ($env{'form.catalogmode'} eq 'groupsearch') {
+	    $r->print(<<END);
+<input type="button" name="alter" value="$lt{'ns'}"
  onClick="window.location='/adm/searchcat?catalogmode=groupsearch&cleargroupsort=1'" />&nbsp;
 END
-    }
-# ---
+        }
+        # ---
 
-    $r->print(<<END);
-<input type="button" name="alter" value="FINISH IMPORT"
+	$r->print(<<END);
+<input type="button" name="alter" value="$lt{'fi'}"
  onClick="finish_import()" />&nbsp;
-<input type="button" name="alter" value="CANCEL" onClick="self.close()" />
+<input type="button" name="alter" value="$lt{'ca'}" onClick="self.close()" />
+END
+        $r->print("<table border='0'><tr><td bgcolor='#eeeeee'>");
+	$r->print("<table border=0><tr>\n");
+	$r->print("<td colspan='2' bgcolor='$titleclr'><b>$lt{'co'}</b></td>\n");
+	$r->print("<td colspan='2' bgcolor='$titleclr'><b>$lt{'ti'}</b></td>\n");
+	$r->print("<td bgcolor='$titleclr'><b>$lt{'pa'}</b></td></tr>\n");
+    } else {
+	$r->print(<<END);
+<body>
+<form method='post' action='/adm/groupsort' name='groupsort'
+      enctype='application/x-www-form-urlencoded'>
+<input type="hidden" name="fnum" value="$clen" />
+<input type="hidden" name="oldval" value="" />
+<input type="hidden" name="newval" value="" />
+<input type="hidden" name="mode" value="$env{'form.mode'}" />
 END
-    $r->print("<table border='0'><tr><td bgcolor='#eeeeee'>");
-    $r->print("<table border=0><tr>\n");
-    $r->print("<td colspan='2' bgcolor='$titleclr'><b>Change order</b></td>".
-	      "\n");
-    $r->print("<td colspan='2' bgcolor='$titleclr'><b>Title</b></td>\n");
-    $r->print("<td bgcolor='$titleclr'><b>Path</b></td></tr>\n");
+    }
     foreach (sort {$shash{$a}<=>$shash{$b}} (keys %shash)) {
 	my $key=$_;
 	$ctr++;
-	my @file_ext = split(/\./,$key);
-	my $curfext = $file_ext[scalar(@file_ext)-1];
-	my $iconname="unknown.gif";
-	my $embstyle = &Apache::loncommon::fileembstyle($curfext);
-	# The unless conditional that follows is a bit of overkill
-	$iconname = $curfext.".gif" unless
-	    (!defined($embstyle) || $embstyle eq 'unk' || $embstyle eq 'hdn');
-	$r->print("<tr><td bgcolor='$fileclr'>");
-	$r->print(&movers($clen,$ctr));
+	my $iconname=&Apache::loncommon::icon($key);
+	if ($clen > 1) {
+	    $r->print("<tr><td bgcolor='$fileclr'>");
+	    $r->print(&movers($clen,$ctr));
+	}
 	$r->print(&hidden($ctr-1,$thash{$key},$key));
-	$r->print("</td><td bgcolor='$fileclr'>");
-	$r->print(&select_box($clen,$ctr));
-	$r->print("</td><td bgcolor='$fileclr'>");
-	$r->print("<img src='$iconpath$iconname'>");
-	$r->print("</td><td bgcolor='$fileclr'>");
-	$r->print("$thash{$key}</td><td bgcolor='$fileclr'>\n");
-	$r->print("$key</td></tr>\n");
-    } 
-    $r->print("</table></td></tr></table></form>");
+	if ($clen > 1) {
+	    $r->print("</td><td bgcolor='$fileclr'>");
+	    $r->print(&select_box($clen,$ctr));
+	    $r->print("</td><td bgcolor='$fileclr'>");
+	    $r->print("<img src='$iconname' />");
+	    $r->print("</td><td bgcolor='$fileclr'>");
+	    $r->print("$thash{$key}</td><td bgcolor='$fileclr'>\n");
+	    $r->print("$key</td></tr>\n");
+	} 
+    }
+    if ($clen > 1) {
+	$r->print("</table></td></tr></table></form>");
+    } else {
+	$r->print(<<END);
+<script type="text/javascript">
+    finish_import();
+</script>
+END
+    }
     $r->print(<<END);
 </body>
 </html>
 END
+
     return OK;
 }