--- loncom/interface/groupsort.pm 2002/05/24 13:53:43 1.11 +++ loncom/interface/groupsort.pm 2003/10/07 20:30:13 1.24 @@ -2,7 +2,7 @@ # The LON-CAPA group sort handler # Allows for sorting prior to import into RAT. # -# $Id: groupsort.pm,v 1.11 2002/05/24 13:53:43 www Exp $ +# $Id: groupsort.pm,v 1.24 2003/10/07 20:30:13 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,9 +27,7 @@ # http://www.lon-capa.org/ # # YEAR=2001 -# 8/7,8/8,10/14,10/15,12/10 Scott Harrison # YEAR=2002 -# 1/17 Scott Harrison # ### @@ -39,28 +37,38 @@ use strict; use Apache::Constants qw(:common); use GDBM_File; +use Apache::loncommon; +use Apache::lonlocal; my %hash; # variable to tie to user specific database my $iconpath; # variable to be accessible to multiple subroutines +sub cleanup { + if (tied(%hash)){ + &Apache::lonnet::logthis('Cleanup groupsort: hash'); + unless (untie(%hash)) { + &Apache::lonnet::logthis('Failed cleanup groupsort: hash'); + } + } +} + # ---------------------------------------------------------------- Main Handler sub handler { my $r = shift; &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['acts','catalogmode','mode']); - # color scheme 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=(< - END - # read pertinent machine configuration my $domain = $r->dir_config('lonDefDomain'); $iconpath = $r->dir_config('lonIconsURL') . "/"; @@ -145,15 +151,15 @@ END # ------------------------------ which file do we open? Easy if explictly given 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') { $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') { $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 @@ -161,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]; @@ -184,7 +190,7 @@ END # Okay, find most recent existing my $newest=0; - my $diropendb=''; + $diropendb=''; for (my $i=0; $i<=$#dbfn; $i++) { if ($dbst[$i]>$newest) { $newest=$dbst[$i]; @@ -194,7 +200,7 @@ END } # ----------------------------- diropendb is now the filename of the db to open - if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) { + if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) { my $acts = $ENV{'form.acts'}; my @Acts = split(/b/,$acts); my %ahash; @@ -284,65 +290,103 @@ END untie %hash; my $ctr = 0; my $clen = scalar(keys %shash); - $r->print('

The LearningOnline With CAPA '. - 'Group Sorter

'."\n"); - $r->print('Finalize order of resources'. - ''."\n"); - $r->print("
"); - $r->print(< 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(<$lt{'fin'} + + END -# --- Expand here if "GO BACK" button desired - if ($ENV{'form.catalogmode'} eq 'groupimport') { - $r->print(<print(<  END - } - if ($ENV{'form.catalogmode'} eq 'groupsearch') { - $r->print(<  + } + if ($ENV{'form.catalogmode'} eq 'groupsearch') { + $r->print(<  END -} -# --- + } + # --- - $r->print(<print(<  - + +END + $r->print("\n"); + } + } + if ($clen > 1) { + $r->print("
"); + $r->print("\n"); + $r->print("\n"); + $r->print("\n"); + $r->print("\n"); + } else { + $r->print(< + + + + + END - $r->print("
$lt{'co'}$lt{'ti'}$lt{'pa'}
"); - $r->print("\n"); - $r->print("". - "\n"); - $r->print("\n"); - $r->print("\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]; - $r->print("\n"); - } - $r->print("
Change orderTitlePath
"); - $r->print(&movers($clen,$ctr)); + 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'); + if ($clen > 1) { + $r->print("
"); + $r->print(&movers($clen,$ctr)); + } $r->print(&hidden($ctr-1,$thash{$key},$key)); - $r->print(""); - $r->print(&select_box($clen,$ctr)); - $r->print(""); - $r->print(""); - $r->print(""); - $r->print("$thash{$key}\n"); - $r->print("$key
"); + if ($clen > 1) { + $r->print("
"); + $r->print(&select_box($clen,$ctr)); + $r->print(""); + $r->print(""); + $r->print(""); + $r->print("$thash{$key}\n"); + $r->print("$key
"); + } else { + $r->print(< + finish_import(); + +END + } $r->print(< END + return OK; } 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.