--- loncom/interface/groupsort.pm 2006/06/08 13:56:31 1.43 +++ loncom/interface/groupsort.pm 2006/06/19 09:40:17 1.44 @@ -2,7 +2,7 @@ # The LON-CAPA group sort handler # Allows for sorting prior to import into RAT. # -# $Id: groupsort.pm,v 1.43 2006/06/08 13:56:31 www Exp $ +# $Id: groupsort.pm,v 1.44 2006/06/19 09:40:17 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -191,12 +191,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 +229,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,13 +313,15 @@ 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', @@ -322,6 +344,7 @@ END + END @@ -342,7 +365,7 @@ END 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 +388,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 +411,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(<