Diff for /loncom/xml/lonxml.pm between versions 1.170 and 1.180

version 1.170, 2002/05/16 17:05:02 version 1.180, 2002/07/12 16:37:38
Line 135  $prevent_entity_encode=0; Line 135  $prevent_entity_encode=0;
 # has the dynamic menu been updated to know about this resource  # has the dynamic menu been updated to know about this resource
 $Apache::lonxml::registered=0;  $Apache::lonxml::registered=0;
   
   # a pointer the the Apache request object
   $Apache::lonxml::request='';
   
 sub xmlbegin {  sub xmlbegin {
   my $output='';    my $output='';
   if ($ENV{'browser.mathml'}) {    if ($ENV{'browser.mathml'}) {
Line 328  sub registerurl { Line 331  sub registerurl {
     my $forcereg=shift;      my $forcereg=shift;
     my $target = shift;      my $target = shift;
     my $result = '';      my $result = '';
     if (($ENV{'request.publicaccess'}) ||       if ($target eq 'edit') {
        ($ENV{'REQUEST_URI'} eq '/res/adm/pages/menu.html')) {          $result .="<script>\n    menu.currentURL=null;\n".
  return               &Apache::loncommon::browser_and_searcher_javascript().
                   "\n</script>\n";
       }
       if ((($ENV{'request.publicaccess'}) || 
            (!&Apache::lonnet::is_on_map($ENV{'REQUEST_URI'}))) &&
           (!$forcereg)) {
    return $result.
          '<script>function LONCAPAreg(){} function LONCAPAstale(){}</script>';           '<script>function LONCAPAreg(){} function LONCAPAstale(){}</script>';
     }      }
     if ($Apache::lonxml::registered && !$forcereg) { return ''; }      if ($Apache::lonxml::registered && !$forcereg) { return ''; }
     $Apache::lonxml::registered=1;      $Apache::lonxml::registered=1;
     my $nothing='';      my $nothing='';
     if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; }      if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; }
       my $timesync='menu.clock.setTime(1000*'.time.');';
     if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) {      if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) {
         my $hwkadd='';          my $hwkadd='';
         if ($ENV{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form)$/) {          if ($ENV{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form)$/) {
Line 347  ENDSUBM Line 357  ENDSUBM
             }              }
     if (&Apache::lonnet::allowed('mgr',$ENV{'request.course.id'})) {      if (&Apache::lonnet::allowed('mgr',$ENV{'request.course.id'})) {
  $hwkadd.=(<<ENDGRDS);   $hwkadd.=(<<ENDGRDS);
                      menu.switchbutton(7,2,'pgrd.gif','problem','grades','gocmd("/adm/grades","viewgrades")');                       menu.switchbutton(7,2,'pgrd.gif','problem','grades','gocmd("/adm/grades","gradingmenu")');
 ENDGRDS  ENDGRDS
             }              }
     if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) {      if (&Apache::lonnet::allowed('opa',$ENV{'request.course.id'})) {
Line 364  ENDPARM Line 374  ENDPARM
     function LONCAPAreg() {      function LONCAPAreg() {
   menu=window.open("$nothing","LONCAPAmenu","",false);    menu=window.open("$nothing","LONCAPAmenu","",false);
           menu.clearTimeout(menu.menucltim);            menu.clearTimeout(menu.menucltim);
             $timesync
   menu.currentURL=window.location.pathname;    menu.currentURL=window.location.pathname;
             menu.reloadURL=window.location.pathname;
           menu.currentStale=0;            menu.currentStale=0;
           menu.clearbut(3,1);            menu.clearbut(3,1);
           menu.switchbutton            menu.switchbutton
Line 391  ENDPARM Line 403  ENDPARM
     function LONCAPAstale() {      function LONCAPAstale() {
   menu=window.open("$nothing","LONCAPAmenu","",false);    menu=window.open("$nothing","LONCAPAmenu","",false);
           menu.currentStale=1;            menu.currentStale=1;
           menu.switchbutton            if (menu.reloadURL!='' && menu.reloadURL!= null) { 
              (3,1,'reload.gif','return','location','go(currentURL)');               menu.switchbutton
                (3,1,'reload.gif','return','location','go(reloadURL)');
     }
           menu.clearbut(7,1);            menu.clearbut(7,1);
           menu.clearbut(7,2);            menu.clearbut(7,2);
           menu.clearbut(7,3);            menu.clearbut(7,3);
Line 415  ENDREGTHIS Line 429  ENDREGTHIS
   
     function LONCAPAreg() {      function LONCAPAreg() {
   menu=window.open("$nothing","LONCAPAmenu","",false);    menu=window.open("$nothing","LONCAPAmenu","",false);
             $timesync
           menu.currentStale=1;            menu.currentStale=1;
           menu.clearbut(2,1);            menu.clearbut(2,1);
           menu.clearbut(2,3);            menu.clearbut(2,3);
Line 436  ENDREGTHIS Line 451  ENDREGTHIS
 </script>  </script>
 ENDDONOTREGTHIS  ENDDONOTREGTHIS
     }      }
     if ($target eq 'edit') {  
  # Javascript routines for construction space:  
  # openbrowser and opensearcher will start the file browser  
  # (lonindexer) and searcher (lonsearchcat) respectively.  
  # Inputs are the name of the html form being used  
  # and the name of the element the selected URL should  
  # be placed in.  
         # openbrowser also takes arguments only and omit, which are  
         # comma deliminated lists of file extensions to (only) show   
         # or omit.  
         # Here we also set currentURL=null.  
         $result .=<<"ENDBROWSERSCRIPT";  
 <script>  
     menu.currentURL=null;  
     var editbrowser;  
     function openbrowser(formname,elementname,only,omit) {  
         var url = '/res/?';  
         if (editbrowser == null) {  
             url += 'launch=1&';  
         }  
         url += 'catalogmode=interactive&';  
         url += 'mode=edit&';  
         url += 'form=' + formname + '&';  
         if (only != null) {  
             url += 'only=' + only + '&';  
         }   
         if (omit != null) {  
             url += 'omit=' + omit + '&';  
         }  
         url += 'element=' + elementname + '';  
         var title = 'Browser';  
         var options = 'scrollbars=1,resizable=1,menubar=0';  
         options += ',width=700,height=600';  
         editbrowser = open(url,title,options,'1');  
         editbrowser.focus();  
     }  
     var editsearcher;  
     function opensearcher(formname,elementname) {  
         var url = '/adm/searchcat?';  
         if (editsearcher == null) {  
             url += 'launch=1&';  
         }  
         url += 'catalogmode=interactive&';  
         url += 'mode=edit&';  
         url += 'form=' + formname + '&';  
         url += 'element=' + elementname + '';  
         var title = 'Search';  
         var options = 'scrollbars=1,resizable=1,menubar=0';  
         options += ',width=700,height=600';  
         editsearcher = open(url,title,options,'1');  
         editsearcher.focus();  
     }  
 </script>  
 ENDBROWSERSCRIPT  
     }  
     return $result;      return $result;
 }  }
   
Line 511  sub printalltags { Line 471  sub printalltags {
 }  }
   
 sub xmlparse {  sub xmlparse {
  my ($target,$content_file_string,$safeinit,%style_for_target) = @_;   my ($request,$target,$content_file_string,$safeinit,%style_for_target) = @_;
   
    &setup_globals($request,$target);
   #
   # do we have a course style file?
   #
   
    if ($ENV{'request.course.id'}) {
        my $bodytext=
    $ENV{'course.'.$ENV{'request.course.id'}.'.default_xml_style'};
        if ($bodytext) {
          my $location=&Apache::lonnet::filelocation('',$bodytext);
          my $styletext=&Apache::lonnet::getfile($location);
          if ($styletext ne '-1') {
             %style_for_target = (%style_for_target,
                             &Apache::style::styleparser($target,$styletext));
          }
       }
    }
   
  &setup_globals($target);  
  #&printalltags();   #&printalltags();
  my @pars = ();   my @pars = ();
  my $pwd=$ENV{'request.filename'};   my $pwd=$ENV{'request.filename'};
Line 798  sub callsub { Line 775  sub callsub {
 }  }
   
 sub setup_globals {  sub setup_globals {
   my ($target)=@_;    my ($request,$target)=@_;
     $Apache::lonxml::request=$request;
   $Apache::lonxml::registered = 0;    $Apache::lonxml::registered = 0;
   @Apache::lonxml::pwd=();    @Apache::lonxml::pwd=();
   @Apache::lonxml::extlinks=();    @Apache::lonxml::extlinks=();
Line 955  sub decreasedepth { Line 933  sub decreasedepth {
 #print "<br />e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n";  #print "<br />e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n";
 }  }
   
 sub get_all_text {  sub get_all_text_unbalanced {
    my($tag,$pars)= @_;
    my $token;
    my $result='';
    $tag='<'.$tag.'>';
    while ($token = $$pars[-1]->get_token) {
      if (($token->[0] eq 'T')||($token->[0] eq 'C')||($token->[0] eq 'D')) {
        $result.=$token->[1];
      } elsif ($token->[0] eq 'PI') {
        $result.=$token->[2];
      } elsif ($token->[0] eq 'S') {
        $result.=$token->[4];
      } elsif ($token->[0] eq 'E')  {
        $result.=$token->[2];
      }
      if ($result =~ /(.*)$tag(.*)/) {
        &Apache::lonxml::debug('Got a winner with leftovers ::'.$2);
        &Apache::lonxml::debug('Result is :'.$1);
        $result=$1;
        my $redo=$tag.$2;
        &Apache::lonxml::newparser($pars,\$redo);
        last;
      }
    }
    return $result
   }
   
   sub get_all_text {
  my($tag,$pars)= @_;   my($tag,$pars)= @_;
  my $depth=0;   my $depth=0;
  my $token;   my $token;
Line 1219  ENDNOTFOUND Line 1223  ENDNOTFOUND
       }        }
     }      }
     if (!$ENV{'form.editmode'} || $ENV{'form.viewmode'}) {      if (!$ENV{'form.editmode'} || $ENV{'form.viewmode'}) {
       $result = &Apache::lonxml::xmlparse($target,$filecontents,'',%mystyle);        $result = &Apache::lonxml::xmlparse($request,$target,$filecontents,
     '',%mystyle);
     }      }
   }    }
   
Line 1228  ENDNOTFOUND Line 1233  ENDNOTFOUND
 #  #
   unless ($ENV{'request.state'} eq 'published') {    unless ($ENV{'request.state'} eq 'published') {
     if ($ENV{'form.editmode'} && (!($ENV{'form.viewmode'}))) {      if ($ENV{'form.editmode'} && (!($ENV{'form.viewmode'}))) {
       $result='<html><body bgcolor="#FFFFFF"></body></html>';   my $displayfile=$request->uri;
           $displayfile=~s/^\/[^\/]*//;
         $result='<html><body bgcolor="#FFFFFF"><h3>'.$displayfile.
                 '</h3></body></html>';
       $result=&inserteditinfo($result,$filecontents);        $result=&inserteditinfo($result,$filecontents);
     }      }
   }    }
Line 1243  ENDNOTFOUND Line 1251  ENDNOTFOUND
 sub debug {  sub debug {
   if ($Apache::lonxml::debug eq 1) {    if ($Apache::lonxml::debug eq 1) {
     $|=1;      $|=1;
     print("DEBUG:".join('<br />',@_)."<br />\n");      print("DEBUG:".&HTML::Entities::encode($_[0])."<br />\n");
   }    }
 }  }
   

Removed from v.1.170  
changed lines
  Added in v.1.180


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