# The LearningOnline Network with CAPA # # The LON-CAPA group sort handler # # Allows for sorting prior to import into RAT. # # YEAR=2001 # 8/7 Scott Harrison package Apache::groupsort; use strict; use Apache::Constants qw(:common); use GDBM_File; my %hash; my $iconpath; sub handler { my $r = shift; my $fileclr='#ffffe6'; my $titleclr='#ddffff'; $r->content_type('text/html'); $r->send_http_header; return OK if $r->header_only; $r->print(< The LearningOnline Network With CAPA Group Sorter END my $domain = $r->dir_config('lonDefDomain'); $iconpath= $r->dir_config('lonIconsURL') . "/"; my $diropendb = "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db"; my %shash; my %thash; map { my ($name, $value) = split(/=/,$_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; if ($name eq 'acts') { $ENV{'form.'.$name}=$value; } } (split(/&/,$ENV{'QUERY_STRING'})); if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) { my $acts=$ENV{'form.acts'}; my @Acts=split(/b/,$acts); my %ahash; my %achash; my $ac=0; map { my ($state,$ref)=split(/a/); $ahash{$ref}=$state; $achash{$ref}=$ac; $ac++; } (@Acts); map { my $key=$_; if ($ahash{$key} eq '1') { # $r->print("NEW: "); # $r->print($hash{'pre_'.$key.'_title'}); # $r->print(" : "); # $r->print($hash{'pre_'.$key.'_link'}); # $r->print("
"); $hash{'store_'.$hash{'pre_'.$key.'_link'}}= $hash{'pre_'.$key.'_title'}; $hash{'storectr_'.$hash{'pre_'.$key.'_link'}}= $hash{'storectr'}+0; $hash{'storectr'}++; } if ($ahash{$key} eq '0') { if ($hash{'store_'.$hash{'pre_'.$key.'_link'}}) { delete $hash{'store_'.$hash{'pre_'.$key.'_link'}}; } } } sort {$achash{$a}<=>$achash{$b}} (keys %ahash); map { if ($_ =~ /^store_/) { my $key=$_; $key=~s/^store_//; # $r->print("STORE: "); # $r->print($hash{'storectr_'.$key}); # $r->print(':'); # $r->print($hash{'store_'.$key}); # $r->print(':'); # $r->print($key); $shash{$key}=$hash{'storectr_'.$key}; $thash{$key}=$hash{'store_'.$key}; # $r->print("
"); } } keys %hash; if ($ENV{'form.oldval'}) { # $r->print('TEST TEST'); my $newctr=0; my %chash; map { my $key=$_; $newctr++; $shash{$key}=$newctr; $hash{'storectr_'.$key}=$newctr; $chash{$newctr}=$key; } sort {$shash{$a}<=>$shash{$b}} (keys %shash); my $oldval=$ENV{'form.oldval'}; my $newval=$ENV{'form.newval'}; if ($oldval!=$newval) { $shash{$chash{$oldval}}=$newval; $hash{'storectr_'.$chash{$oldval}}=$newval; if ($oldval<$newval) { # push down for my $idx ($oldval..($newval-1)) { $shash{$chash{$idx+1}}=$idx; $hash{'storectr_'.$chash{$idx+1}}=$idx; } } elsif ($oldval>$newval) { # push up for my $idx (reverse($newval..($oldval-1))) { $shash{$chash{$idx}}=$idx+1; $hash{'storectr_'.$chash{$idx}}=$idx+1; } } } } } else { $r->print('Unable to tie hash to db file'); return OK; } untie %hash; # $r->print($ENV{'form.acts'}); 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(<     END $r->print("
"); $r->print("\n"); $r->print("\n"); $r->print("\n"); $r->print("\n"); map { my $key=$_; $ctr++; my @file_ext = split(/\./,$key); my $curfext = $file_ext[scalar(@file_ext)-1]; $r->print("\n"); } sort {$shash{$a}<=>$shash{$b}} (keys %shash); $r->print("
Change orderTitlePath
"); $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
"); $r->print(< END return OK; } sub hidden { my ($sel,$title,$filelink)=@_; my $string=''; $string.=''; return $string; } sub movers { my ($total,$sel)=@_; my $dsel=$sel-1; my $usel=$sel+1; $usel=1 if $usel>$total; $dsel=$total if $dsel<1; my $string; $string=< UP DOWN END return $string; } 1; sub select_box { my ($total,$sel)=@_; my $string; $string='