--- loncom/interface/groupsort.pm 2010/08/24 09:11:37 1.67
+++ loncom/interface/groupsort.pm 2012/05/02 19:10:13 1.68.6.1
@@ -2,7 +2,7 @@
# The LON-CAPA group sort handler
# Allows for sorting prior to import into RAT.
#
-# $Id: groupsort.pm,v 1.67 2010/08/24 09:11:37 wenzelju Exp $
+# $Id: groupsort.pm,v 1.68.6.1 2012/05/02 19:10:13 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -86,8 +86,8 @@ sub update_actions_hash {
sub readfromdb {
my ($r,$resources)=@_;
- my $diropendb =
- "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_sel_res.db";
+ my $diropendb = LONCAPA::tempdir() .
+ "$env{'user.domain'}_$env{'user.name'}_sel_res.db";
# ----------------------------- diropendb is now the filename of the db to open
if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) {
@@ -181,13 +181,31 @@ sub readfromfile {
}
}
+# --------------------------------------------------------- Read from bookmarks
+
+sub readfrombookmarks {
+ my ($r,$resources)=@_;
+ 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);
+ for (my $index=0;$index<($#bookmarks+1)/2;$index++) {
+ if ($bookmarks[$index*2+1]) {
+ my $url = $bookmarks[$index*2+1];
+ my $name = $bookmarks[$index*2];
+ $name =~ s/^LON\-CAPA\s+//;
+
+ push(@{$resources},{'url' => $url, 'title' => $name});
+ }
+ }
+}
# ---------------------------------------------------------------- Main Handler
sub handler {
my $r = shift;
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['acts','mode','readfile','recover']);
+ ['acts','mode','readfile','recover','bookmarks']);
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
@@ -197,7 +215,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='}';
}
@@ -281,6 +299,8 @@ END
if ($env{'form.readfile'}) {
&readfromfile($r,\@resources);
+ } elsif ($env{'form.bookmarks'}) {
+ &readfrombookmarks($r,\@resources);
} else {
&readfromdb($r,\@resources);
}
@@ -293,7 +313,10 @@ END
} else {
$title = 'Sort Imported Resources';
}
- if (($clen > 1) || ($env{'form.readfile'})) {
+ if ($env{'form.bookmarks'}) {
+ $title = 'Import Resources from Bookmarks';
+ }
+ if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
my %lt=&Apache::lonlocal::texthash(
'fin'=> 'Finalize order of resources',
'ci' => 'Continue Import',
@@ -319,6 +342,7 @@ END
+
END
@@ -326,7 +350,10 @@ END
# ---
my $buttontext = $lt{'re'};
- if ($env{'form.recover'}) {
+ if ($env{'form.bookmarks'}) {
+ $buttontext = $lt{'ip'}
+ }
+ if ($env{'form.recover'} || $env{'form.bookmarks'}) {
$r->print(<
'.&mt($errtxt).'
'); } } else { @@ -390,10 +420,10 @@ END foreach my $resource (@resources) { $ctr++; my $iconname=&Apache::loncommon::icon($resource->{'url'}); - if (($clen > 1) || ($env{'form.readfile'})) { + if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) { $r->print(&Apache::loncommon::start_data_table_row() ."