--- loncom/interface/groupsort.pm 2006/06/08 07:20:41 1.42 +++ loncom/interface/groupsort.pm 2007/07/06 08:34:37 1.53 @@ -2,7 +2,7 @@ # The LON-CAPA group sort handler # Allows for sorting prior to import into RAT. # -# $Id: groupsort.pm,v 1.42 2006/06/08 07:20:41 www Exp $ +# $Id: groupsort.pm,v 1.53 2007/07/06 08:34:37 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,6 +37,7 @@ use GDBM_File; use Apache::loncommon; use Apache::lonlocal; use Apache::lonnet; +use LONCAPA(); my $iconpath; # variable to be accessible to multiple subroutines my %hash; # variable to tie to user specific database @@ -64,6 +65,9 @@ sub readfromdb { foreach (sort {$achash{$a} <=> $achash{$b}} (keys %ahash)) { my $key = $_; if ($ahash{$key} eq '1') { + if ($hash{'pre_'.$key.'_title'} eq 'Not_retrieved') { + $hash{'pre_'.$key.'_title'} = &Apache::lonnet::gettitle($hash{'pre_'.$key.'_link'}); + } $hash{'store_'.$hash{'pre_'.$key.'_link'}} = $hash{'pre_'.$key.'_title'}; $hash{'storectr_'.$hash{'pre_'.$key.'_link'}} = @@ -174,7 +178,7 @@ sub readfromfile { my $url=$token->[2]->{'src'}; my $name=$token->[2]->{'title'}; - $name=~s/ \[\((\d+)\,(\w+)\,(\w+)\)\]$//; + $name=~s/ \[\((\d+)\,($LONCAPA::username_re)\,($LONCAPA::domain_re)\)\]$//; if ($1) { $$nhash{$url}='
'.&mt('Removed by '). &Apache::loncommon::plainname($2,$3).', '. @@ -191,12 +195,32 @@ sub readfromfile { return ($shash,$thash); } +# --------------------------------------------------------- Read from bookmarks + +sub readfrombookmarks { + my ($r,$shash,$thash)=@_; + my %bookmarks=&Apache::lonnet::dump('bookmarks'); +# the bookmark "hash" is just one entry +# it's a javascript program code with arguments like ('title','url'); + my @bookmarks=($bookmarks{'bookmarks'}=~/\((?:\'([^\']+)\'\,\'([^\']+)\'|\"([^\"]+)\"\,\"([^\"]+)\")\)\;/g); + my $order=1; + for (my $index=0;$index<($#bookmarks+1)/2;$index++) { + if ($bookmarks[$index*2+1]) { + $$thash{$bookmarks[$index*2+1]}=$bookmarks[$index*2]; + $$thash{$bookmarks[$index*2+1]}=~s/^LON\-CAPA\s+//; + $$shash{$bookmarks[$index*2+1]}=$order; + $order++; + } + } + return ($shash,$thash); +} + # ---------------------------------------------------------------- Main Handler sub handler { my $r = shift; &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['acts','mode','readfile','recover']); + ['acts','mode','readfile','recover','bookmarks']); # color scheme my $fileclr = '#ffffe6'; my $titleclr = '#ddffff'; @@ -209,7 +233,7 @@ sub handler { my $finishimport=''; my $begincondition=''; my $endcondition=''; - if ($env{'form.readfile'}) { + if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) { $begincondition='if (eval("document.forms.groupsort.include"+num+".checked")) {'; $endcondition='}'; } @@ -293,18 +317,21 @@ END if ($env{'form.readfile'}) { &readfromfile($r,\%shash,\%thash,\%nhash); + } elsif ($env{'form.bookmarks'}) { + &readfrombookmarks($r,\%shash,\%thash); } else { &readfromdb($r,\%shash,\%thash); } my $ctr = 0; my $clen = scalar(keys %shash); - if (($clen > 1) || ($env{'form.readfile'})) { + if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) { my %lt=&Apache::lonlocal::texthash( 'fin'=> 'Finalize order of resources', 'ci' => 'Continue Import', 'cs' => 'Continue Search', 'fi' => 'Finish Import', + 're' => 'Recover Checked', 'ca' => 'Cancel', 'co' => 'Change Order', 'ti' => 'Title', @@ -322,27 +349,36 @@ END + END + + # --- + + if ($env{'form.recover'}) { + $r->print(<  + +END + } else { # --- Continue Buttons - my $resurl = &Apache::loncommon::lastresurl(); - $r->print(<print(<  + onClick="window.location='$resurl?catalogmode=import'" />    -END - # --- - - $r->print(<    END + } $r->print("
"); $r->print("\n"); - if ($env{'form.readfile'}) { + if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) { $r->print("\n"); } else { $r->print("\n"); @@ -365,18 +401,18 @@ END my $key=$_; $ctr++; my $iconname=&Apache::loncommon::icon($key); - if (($clen > 1) || ($env{'form.readfile'})) { + if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) { $r->print(""); - unless ($env{'form.readfile'}) { + unless (($env{'form.readfile'}) || ($env{'form.bookmarks'})) { $r->print(""); @@ -388,7 +424,7 @@ END $r->print("$key\n"); } } - if (($clen > 1) || ($env{'form.readfile'})) { + if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) { $r->print("
$lt{'in'}$lt{'co'}
"); - if ($env{'form.readfile'}) { + if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) { $r->print(&checkbox($ctr-1)); } else { $r->print(&movers($clen,$ctr)); } } $r->print(&hidden($ctr-1,$thash{$key},$key)); - if (($clen > 1) || ($env{'form.readfile'})) { + if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) { $r->print("". &select_box($clen,$ctr). "
"); } else { $r->print(<