Diff for /rat/lonambiguous.pm between versions 1.6 and 1.11

version 1.6, 2002/09/14 18:57:59 version 1.11, 2004/12/17 22:40:24
Line 37  use strict; Line 37  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::Constants qw(:common REDIRECT);  use Apache::Constants qw(:common REDIRECT);
 use GDBM_File;  use GDBM_File;
   use Apache::loncommon;
   use Apache::lonlocal;
   
   my %bighash;
   
   sub cleanup {
       if (tied(%bighash)){
    &Apache::lonnet::logthis('Cleanup ambiguous: bighash');
           unless (untie(%bighash)) {
       &Apache::lonnet::logthis('Failed cleanup ambiguous: bighash');
           }
       }
   }
   
 # ----------------------------------------------------------- Could not resolve  # ----------------------------------------------------------- Could not resolve
   
 sub getlost {  sub getlost {
     my ($r,$errmsg)=@_;      my ($r,$errmsg)=@_;
       $errmsg=&mt($errmsg);
     $r->content_type('text/html');      $r->content_type('text/html');
     $r->send_http_header;      $r->send_http_header;
     $r->print(      $r->print(
  '<head><title>Unknown Error</title></head><body bgcolor="#FFFFFF"><h1>'.   '<head><title>Unknown Error</title></head>'.
  'LON-CAPA</h1>Could not handle ambiguous resource reference.<p>'.$errmsg.    &Apache::loncommon::bodytag('Could not handle ambiguous resource reference').
     $errmsg.
  '</body></html>');   '</body></html>');
 }  }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
   
   sub make_symb {
       my ($id)=@_;
       my ($mapid,$resid)=split(/\./,$id);
       my $map=$bighash{'map_id_'.$mapid};
       my $res=$bighash{'src_'.$id};
       my $symb=&Apache::lonnet::encode_symb($map,$resid,$res);
       return $symb;
   }
   
 sub handler {  sub handler {
    my $r=shift;     my $r=shift;
   
    if ($r->header_only) {     if ($r->header_only) {
       $r->content_type('text/html');        &Apache::loncommon::content_type($r,'text/html');
       $r->send_http_header;        $r->send_http_header;
       return OK;        return OK;
    }     }
   
 # ---------------------------------------------------------- Is this selecting?  # ---------------------------------------------------------- Is this selecting?
       
    my %bighash;  
   
    if ($ENV{'form.selecturl'}) {     if ($ENV{'form.selecturl'}) {
        my $envkey;         my $envkey;
        if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',         if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',
Line 134  sub handler { Line 155  sub handler {
    if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',     if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',
                     &GDBM_READER(),0640)) {                      &GDBM_READER(),0640)) {
 # ---------------------------------------------- Get ID(s) for current resource  # ---------------------------------------------- Get ID(s) for current resource
       my $ids=$bighash{'ids_'.&clutter($thisfn)};        my $ids=$bighash{'ids_'.&Apache::lonnet::clutter($thisfn)};
       if ($ids) {        if ($ids) {
 # ------------------------------------------------------------------- Has ID(s)  # ------------------------------------------------------------------- Has ID(s)
          my @possibilities=split(/\,/,$ids);           my @possibilities=split(/\,/,$ids);
          my $couldbe='';           my $couldbe='';
          map {           foreach (@possibilities) {
              if (&Apache::lonnet::allowed('bre',$bighash{'src_'.$_})) {               if ($bighash{'encrypted_'.$_}) { next; }
        my $symb=&make_symb($_);
                if (&Apache::lonnet::allowed('bre',$bighash{'src_'.$_},$symb)) {
          if ($couldbe) {           if ($couldbe) {
      $couldbe.=','.$_;       $couldbe.=','.$_;
                  } else {                   } else {
                      $couldbe=$_;                       $couldbe=$_;
                  }                   }
              }               }
  } @possibilities;   }
          if ($couldbe) {           if ($couldbe) {
             @possibilities=split(/\,/,$couldbe);              @possibilities=split(/\,/,$couldbe);
             if ($#possibilities>0) {              if ($#possibilities>0) {
 # ----------------------------------------------- Okay, really multiple choices  # ----------------------------------------------- Okay, really multiple choices
                $r->content_type('text/html');                 $r->content_type('text/html');
                $r->send_http_header;                 $r->send_http_header;
                  my $bodytag=
                         &Apache::loncommon::bodytag('Pick Instance of Resource');
                $r->print(<<ENDSTART);                 $r->print(<<ENDSTART);
 <head><title>Choose Location</title></head>  <head><title>Choose Location</title></head>
 <body bgcolor="#FFFFFF">  $bodytag
 <h1>LON-CAPA</h1>  
 The resource you had been accessing appears more than once in this course,  The resource you had been accessing appears more than once in this course,
 and LON-CAPA has insufficient session information to determine which instance  and LON-CAPA has insufficient session information to determine which instance
 of the resource you meant.  of the resource you meant.
 <p>  <p>
 Please click on the instance of the resource you intended to access:  Please click on the instance of the resource you intended to access:
 <p>  </p>
 <form action="/adm/ambiguous" method=post>  <table border="2">
 <input type=hidden name=orgurl value="$thisfn">  <tr><th>Title</th><th>Part of ...</th></tr>
 <input type=hidden name=selecturl value=1>  
 <table border=2>  
 <tr><th>&nbsp;</th><th>Title</th><th>Type</th><th>Part of ...</th></tr>  
 ENDSTART  ENDSTART
                map {                 map {
      my $resurl=$bighash{'src_'.$_};
                    my $mapurl=$bighash{'map_id_'.(split(/\./,$_))[0]};                     my $mapurl=$bighash{'map_id_'.(split(/\./,$_))[0]};
                    $r->print('<tr><td><input type=submit value=Select name="'.     my $symb=&make_symb($_);
                               $_.'"></td><td>'.$bighash{'title_'.$_}.     $r->print('<tr><td><a href="'.$resurl.'?symb='.$symb.'">'.
                               '</td><td>'.$bighash{'type_'.$_}.       &Apache::lonnet::gettitle($symb).
                               '</td><td><a href="'.$mapurl.'">'.$mapurl.       '</a></td><td>'.
       '</a></td></tr>');       &Apache::lonnet::gettitle($mapurl).'&nbsp;'.
        '</td></tr>');
                } @possibilities;                 } @possibilities;
                $r->print('</table></form></body></html>');                 $r->print('</table></body></html>');
        untie(%bighash);         untie(%bighash);
                return OK;                 return OK;
             }              }

Removed from v.1.6  
changed lines
  Added in v.1.11


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>