--- loncom/interface/groupsort.pm 2006/06/08 07:20:41 1.42
+++ loncom/interface/groupsort.pm 2006/12/05 02:55:51 1.50
@@ -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.50 2006/12/05 02:55:51 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
@@ -174,7 +175,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 +192,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 +230,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 +314,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,16 +345,18 @@ END
+
END
# --- Continue Buttons
- my $resurl = &Apache::loncommon::lastresurl();
+ my $resurl =
+ &Apache::loncommon::escape_single(&Apache::loncommon::lastresurl());
$r->print(<
+ onClick="window.location='$resurl?catalogmode=import'" />
+ onClick="window.location='/adm/searchcat?catalogmode=import'" />
END
# ---
@@ -342,7 +367,7 @@ END
END
$r->print("
");
$r->print("
\n");
- if ($env{'form.readfile'}) {
+ if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
$r->print("
$lt{'in'}
\n");
} else {
$r->print("
$lt{'co'}
\n");
@@ -365,18 +390,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("
");
- 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("