--- loncom/interface/groupsort.pm 2007/11/02 21:08:45 1.61
+++ loncom/interface/groupsort.pm 2013/08/08 12:08:01 1.68.6.6
@@ -2,7 +2,7 @@
# The LON-CAPA group sort handler
# Allows for sorting prior to import into RAT.
#
-# $Id: groupsort.pm,v 1.61 2007/11/02 21:08:45 albertel Exp $
+# $Id: groupsort.pm,v 1.68.6.6 2013/08/08 12:08:01 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -37,7 +37,7 @@ use GDBM_File;
use Apache::loncommon;
use Apache::lonlocal;
use Apache::lonnet;
-use LONCAPA;
+use LONCAPA qw(:DEFAULT :match);
my $iconpath; # variable to be accessible to multiple subroutines
my %hash; # variable to tie to user specific database
@@ -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)) {
@@ -152,12 +152,23 @@ sub readfromfile {
&Apache::lonnet::filelocation('',$env{'form.readfile'}));
} else {
my $parser = HTML::TokeParser->new(\$cont);
- my $token;
+ my ($token,$donechk,$allmaps);
+ $allmaps = {};
while ($token = $parser->get_token) {
if ($token->[0] eq 'S') {
if ($token->[1] eq 'resource') {
if ($env{'form.recover'}) {
if ($token->[2]->{'type'} ne 'zombie') { next; }
+ if ($token->[2]->{'src'} =~ /\.(page|sequence)$/) {
+ if (($env{'request.course.id'}) &&
+ ($env{'form.readfile'} =~ m{/default(|_\d+)\.(page|sequence)$})) {
+ unless ($donechk) {
+ $allmaps = &Apache::loncommon::allmaps_incourse();
+ $donechk = 1;
+ }
+ }
+ if ($allmaps->{$token->[2]->{'src'}}) { next; }
+ }
} else {
if ($token->[2]->{'type'} eq 'zombie') { next; }
}
@@ -181,34 +192,12 @@ 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','bookmarks']);
- # color scheme
- my $fileclr = '#ffffe6';
- my $titleclr = '#ddffff';
+ ['acts','mode','readfile','recover']);
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
@@ -218,7 +207,7 @@ sub handler {
my $finishimport='';
my $begincondition='';
my $endcondition='';
- if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
+ if (($env{'form.readfile'})) {
$begincondition='if (eval("document.forms.groupsort.include"+num+".checked")) {';
$endcondition='}';
}
@@ -302,30 +291,35 @@ END
if ($env{'form.readfile'}) {
&readfromfile($r,\@resources);
- } elsif ($env{'form.bookmarks'}) {
- &readfrombookmarks($r,\@resources);
} else {
&readfromdb($r,\@resources);
}
my $ctr = 0;
my $clen = scalar(@resources);
- if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
+ my $title = '';
+ if ($env{'form.recover'}) {
+ $title = 'Recover Removed Resources';
+ } else {
+ $title = 'Sort Imported Resources';
+ }
+ if (($clen > 1) || ($env{'form.readfile'})) {
my %lt=&Apache::lonlocal::texthash(
'fin'=> 'Finalize order of resources',
'ci' => 'Continue Import',
'cs' => 'Continue Search',
'fi' => 'Finish Import',
're' => 'Recover Checked',
+ 'ip' => 'Import Checked',
'ca' => 'Cancel',
'co' => 'Change Order',
'ti' => 'Title',
'pa' => 'Path',
'in' => 'Include'
);
- my $title = ($env{'form.recover'}) ? 'Recover Removed Resources'
- : 'Sort Imported Resources';
+
$r->print(&Apache::loncommon::start_page($title, $js));
+ $r->print('
'.&mt($title).'
');
$r->print(<
-
END
$r->print(&Apache::loncommon::inhibit_menu_check('input'));
# ---
-
+
+ my $buttontext = $lt{'re'};
if ($env{'form.recover'}) {
$r->print(<
-
+
+
END
} else {
# --- Continue Buttons
my $resurl =
&Apache::loncommon::escape_single(&Apache::loncommon::lastresurl());
$r->print(<$lt{'fin'}
+$lt{'fin'}
+
+ onclick="window.location='$resurl?inhibitmenu=yes&catalogmode=import'" />
+ onclick="window.location='/adm/searchcat?inhibitmenu=yes&catalogmode=import'" />
-
+ onclick="finish_import()" />
+
+
+
END
}
- $r->print("");
- $r->print("\n");
- if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
- $r->print("$lt{'in'} | \n");
- } else {
- $r->print("$lt{'co'} | \n");
- }
- $r->print("$lt{'ti'} | \n");
- $r->print("$lt{'pa'} | \n");
+
+ # Only display header if content exists
+ if ($clen > 0) {
+ $r->print(&Apache::loncommon::start_data_table()
+ .&Apache::loncommon::start_data_table_header_row());
+ if (($env{'form.readfile'})) {
+ $r->print("$lt{'in'} | \n");
+ } else {
+ $r->print(''.$lt{'co'}.' | '."\n");
+ }
+ $r->print(''.$lt{'ti'}.' | '."\n");
+ $r->print("$lt{'pa'} | ");
+ $r->print(&Apache::loncommon::end_data_table_header_row()."\n");
+ } else {
+ my $errtxt = '';
+ if ($env{'form.recover'}) {
+ $errtxt = 'There are no resources to recover.';
+ } else {
+ $errtxt = 'There are no resources to import.';
+ }
+ $r->print(''.&mt($errtxt).' ');
+ }
} else {
$r->print(&Apache::loncommon::start_page(undef,$js,
{'only_body' => 1}));
+# $r->print(''.&mt($title).'');
$r->print(<
@@ -389,9 +400,10 @@ END
foreach my $resource (@resources) {
$ctr++;
my $iconname=&Apache::loncommon::icon($resource->{'url'});
- if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
- $r->print("");
- if (($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
+ if (($clen > 1) || ($env{'form.readfile'})) {
+ $r->print(&Apache::loncommon::start_data_table_row()
+ ." | ");
+ if (($env{'form.readfile'})) {
$r->print(&checkbox($ctr-1));
} else {
$r->print(&movers($clen,$ctr));
@@ -399,22 +411,34 @@ END
}
$r->print(&hidden($ctr-1,$resource->{'title'},$resource->{'url'},
$resource->{'id'}));
- if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
+ if (($clen > 1) || ($env{'form.readfile'})) {
$r->print(" | ");
- unless (($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
- $r->print("".
+ unless (($env{'form.readfile'})) {
+ $r->print(" | ".
&select_box($clen,$ctr).
" | ");
}
- $r->print("");
+ $r->print(" | ");
$r->print("");
- $r->print(" | ");
- $r->print($resource->{'title'}.$resource->{'notes'}." | \n");
- $r->print($resource->{'url'}." | \n");
+ $r->print("");
+ if (($env{'form.recover'}) &&
+ ($resource->{'url'} =~ m{/uploaded/$match_domain/$match_courseid/supplemental/})) {
+ my $title = &Apache::loncommon::parse_supplemental_title($resource->{'title'});
+ $r->print($title);
+ } else {
+ $r->print($resource->{'title'});
+ }
+ $r->print($resource->{'notes'}." | \n");
+ $r->print($resource->{'url'}." | "
+ .&Apache::loncommon::end_data_table_row()
+ ."\n");
}
}
- if (($clen > 1) || ($env{'form.readfile'}) || ($env{'form.bookmarks'})) {
- $r->print("
|
");
+ if (($clen > 1) || ($env{'form.readfile'})) {
+ if ($clen > 0) {
+ $r->print(&Apache::loncommon::end_data_table());
+ }
+ $r->print('');
} else {
$r->print(<
@@ -464,7 +488,7 @@ sub select_box {
my ($total,$sel) = @_;
my $string;
$string = '