--- loncom/interface/lonindexer.pm 2006/03/06 18:23:10 1.140 +++ loncom/interface/lonindexer.pm 2006/07/21 08:25:25 1.149 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Directory Indexer # -# $Id: lonindexer.pm,v 1.140 2006/03/06 18:23:10 www Exp $ +# $Id: lonindexer.pm,v 1.149 2006/07/21 08:25:25 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -116,14 +116,18 @@ sub handler { my $closebutton=''; my $groupimportbutton=''; my $colspan=''; - + $extrafield=''; my $diropendb = - "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_indexer.db"; + "/home/httpd/perl/tmp/$env{'user.domain'}_$env{'user.name'}_sel_res.db"; %hash = (); { my %dbfile; - if (tie(%dbfile,'GDBM_File',$diropendb,&GDBM_READER(),0640)) { + if (tie(%dbfile,'GDBM_File',$diropendb,&GDBM_WRITER(),0640)) { + if ($env{'form.launch'} eq '1') { + &start_fresh_session(\%dbfile); + } + while(my($key,$value)=each(%dbfile)) { $hash{$key}=$value; } @@ -131,9 +135,6 @@ sub handler { } } { - if ($env{'form.launch'} eq '1') { - &start_fresh_session(); - } #Hijack lonindexer to verify a title and be close down. if ($env{'form.launch'} eq '2') { &Apache::loncommon::content_type($r,'text/html'); @@ -145,11 +146,7 @@ sub handler { $verify_title=~s/'/\\'/g; $extra='window.opener.document.forms["'.$env{'form.form'}.'"].elements["'.$env{'form.titleelement'}.'"].value=\''.$verify_title.'\';'; } - my $html=&Apache::lonxml::xmlbegin(); - $r->print(< - + my $js = < function load() { window.opener.document.forms["$env{'form.form'}"] @@ -159,11 +156,13 @@ sub handler { window.close(); } - - - - ENDSUBM + $r->print(&Apache::loncommon::start_page(undef,$js, + {'only_body' =>1, + 'add_entries' => + {'onload' => "load();"},} + ). + &Apache::loncommon::end_page()); return OK; } @@ -181,7 +180,7 @@ ENDSUBM END } - elsif ($env{'form.catalogmode'} eq 'groupimport') { + elsif ($env{'form.catalogmode'} eq 'import') { $extrafield=''. ''; @@ -231,7 +230,7 @@ END # ------ set catalogmodefunctions to have extra needed javascript functionality my $catalogmodefunctions=''; if ($env{'form.catalogmode'} eq 'interactive' or - $env{'form.catalogmode'} eq 'groupimport') { + $env{'form.catalogmode'} eq 'import') { # The if statement below sets us up to use the old version # by default (ie. if $mode is undefined). This is the easy # way out. Hopefully in the future I'll find a way to get @@ -242,7 +241,7 @@ END # # if (!defined($mode) || ($mode ne 'edit' && $mode ne 'parmset')) { - my $location = "/adm/groupsort?catalogmode=groupimport&"; + my $location = "/adm/groupsort?catalogmode=import&"; $location .= "mode=".$mode."&"; $location .= "acts="; $catalogmodefunctions=<<"END"; @@ -329,7 +328,7 @@ function rep_dirpath(suffix,val) { eval("document.forms.dirpath"+suffix+".acts.value=val"); } END - if ($env{'form.catalogmode'} eq 'groupimport') { + if ($env{'form.catalogmode'} eq 'import') { $catalogmodefunctions.=<print(< -The LearningOnline Network With CAPA Directory Browser - - - + my $js = <<"ENDHEADER"; - - ENDHEADER -my ($headerdom)=($uri=~/^\/res\/(\w+)\//); -$r->print(&Apache::loncommon::bodytag('Browse Resources',undef,undef,undef, - $headerdom)); + + my ($headerdom)=($uri=~/^\/res\/(\w+)\//); + $r->print(&Apache::loncommon::start_page('Browse Resources',$js, + {'domain' => $headerdom,})); # - Evaluate actions from previous page (both cumulatively and chronologically) - if ($env{'form.catalogmode'} eq 'groupimport') { + if ($env{'form.catalogmode'} eq 'import') { my $acts=$env{'form.acts'}; my @Acts=split(/b/,$acts); my %ahash; @@ -488,7 +479,7 @@ END $storeuri=~s/\/+/\//g; # ---------------------------------------------------------------- Bread crumbs $r->print(&Apache::lonhtmlcommon::crumbs($storeuri,'','', - (($env{'form.catalogmode'} eq 'groupimport')? + (($env{'form.catalogmode'} eq 'import')? 'document.forms.fileattr':'')). &Apache::lonhtmlcommon::select_recent('residx','resrecent', 'window.status=this.form.resrecent.options[this.form.resrecent.selectedIndex].value;this.form.action=this.form.resrecent.options[this.form.resrecent.selectedIndex].value;this.form.submit();')); @@ -496,7 +487,7 @@ END my $reshome=$env{'course.'.$env{'request.course.id'}.'.reshome'}; if ($reshome) { $r->print("print('javascript:document.forms.fileattr.action="'.$reshome.'";document.forms.fileattr.submit();'); } else { $r->print($reshome); @@ -598,7 +589,7 @@ END $r->print(''); # --------------------------------------------------- end the output and return - $r->print(''."\n"); + $r->print(&Apache::loncommon::end_page()."\n"); } if(! $c->aborted()) { # write back into the temporary file @@ -714,16 +705,19 @@ sub dynmetaread { } # Actually get the data %dynhash= - (%dynhash,&Apache::lonmeta::get_dynamic_metadata_from_sql($uri)); + (%dynhash,&Apache::lonmeta::get_dynamic_metadata_from_sql($uri.'/')); # Remember that we got it $dynread{$uri}=1; } } sub initdebug { - my $html=&Apache::lonxml::xmlbegin(); + my $start_page= + &Apache::loncommon::start_page('Debug',undef, + {'only_body' => 1,}); + $start_page =~ s/\n/ /g; return < + ENDJS } sub writedebug { - my $text = shift; - return ""; + my ($text) = @_; + return ""; } # -------------------- filters out files based on extensions (returns an array) @@ -919,7 +913,7 @@ sub display_line { $r->print("". "\n"); $r->print(""); - } elsif ($env{'form.catalogmode'} eq 'groupimport') { + } elsif ($env{'form.catalogmode'} eq 'import') { $r->print("
\n"); $r->print("'); + &coursecontext($r,$filelink); &dynmetaprint($r,$filelink,'goto_list'); &dynmetaprint($r,$filelink,'comefrom_list'); &dynmetaprint($r,$filelink,'sequsage_list'); @@ -1155,6 +1150,17 @@ sub display_line { } +sub coursecontext { + my ($r,$filelink)=@_; + my $filesymb=&Apache::lonnet::symbread($filelink); + if ($filesymb) { + my ($map,$index,$resource)=&Apache::lonnet::decode_symb($filesymb); + $r->print(&mt('Already in this course:
[_1] in folder/map [_2].
', + &Apache::lonnet::gettitle($resource), + &Apache::lonnet::gettitle($map))); + } +} + sub showpreview { my ($filelink)=@_; my ($curfext)=($filelink=~/\.(\w+)$/); @@ -1169,10 +1175,17 @@ sub showpreview { $output=join("\n",); close(FH); } else { +# In update display mode, remove old cache. This is done to retroactively +# clean up course context renderings. + if (-e $cache) { + unlink($cache); + } $output=&Apache::lonnet::ssi_body($filelink); +# Is access denied? Don't render, don't store if ($output=~/LONCAPAACCESSCONTROLERRORSCREEN/s) { $output=''; - } else { +# Was this rendered in course content? Don't store + } elsif (!&Apache::lonnet::symbread($filelink)) { open(FH,">$cache"); print FH $output; close(FH); @@ -1195,9 +1208,9 @@ sub dynmetaprint { $r->print("\n
".$fieldnames{$item}.': '. &Apache::lonmeta::prettyprint($item, $dynhash{$filelink}->{$item}, - (($env{'form.catalogmode'} ne 'groupimport')?'preview':''), + (($env{'form.catalogmode'} ne 'import')?'preview':''), '', - (($env{'form.catalogmode'} eq 'groupimport')?'document.forms.fileattr':''),1)); + (($env{'form.catalogmode'} eq 'import')?'document.forms.fileattr':''),1)); } } @@ -1219,14 +1232,15 @@ sub begin_form { # --------- settings whenever the user causes the indexer window to be launched sub start_fresh_session { - delete $hash{'form.catalogmode'}; - delete $hash{'form.mode'}; - delete $hash{'form.form'}; - delete $hash{'form.element'}; - delete $hash{'form.omit'}; - delete $hash{'form.only'}; - foreach (keys %hash) { - delete $hash{$_} if (/^(pre_|store)/); + my ($hash) = @_; + delete $hash->{'form.catalogmode'}; + delete $hash->{'form.mode'}; + delete $hash->{'form.form'}; + delete $hash->{'form.element'}; + delete $hash->{'form.omit'}; + delete $hash->{'form.only'}; + foreach (keys %{$hash}) { + delete $hash->{$_} if (/^(pre_|store)/); } }