Diff for /loncom/interface/lonmenu.pm between versions 1.244 and 1.244.2.5

version 1.244, 2008/11/19 19:43:08 version 1.244.2.5, 2009/08/14 12:21:32
Line 170  sub initlittle { Line 170  sub initlittle {
     return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',      return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',
        'nav' => 'Navigate Contents',         'nav' => 'Navigate Contents',
        'main' => 'Main Menu',         'main' => 'Main Menu',
                                        'roles' => (&show_course()?                                         'roles' => (&Apache::loncommon::show_course()?
                                                     'Courses':'Roles'),                                                      'Courses':'Roles'),
                                        'other' => 'Other Roles',                                         'other' => 'Other Roles',
                                        'docs' => 'Edit Course',                                         'docs' => 'Edit Course',
                                        'exit' => 'Exit',                                         'exit' => 'Logout',
                                        'login' => 'Log In',                                         'login' => 'Log In',
        'launch' => 'Launch Remote Control',         'launch' => 'Launch Remote Control',
                                        'groups' => 'Groups',                                         'groups' => 'Groups',
Line 351  ENDCRELOAD Line 351  ENDCRELOAD
         my $helplink=&Apache::loncommon::top_nav_help('Help');          my $helplink=&Apache::loncommon::top_nav_help('Help');
  return (<<ENDINLINEMENU);   return (<<ENDINLINEMENU);
 <script type="text/javascript">  <script type="text/javascript">
 // BEGIN LON-CAPA Internal  
 // <![CDATA[  // <![CDATA[
   // BEGIN LON-CAPA Internal
 $utility  $utility
 // ]]>  // ]]>
 </script>  </script>
Line 409  sub registerurl { Line 409  sub registerurl {
    &unescape($env{'request.noversionuri'})))) &&     &unescape($env{'request.noversionuri'})))) &&
         (!$forcereg))) {          (!$forcereg))) {
   return $result.    return $result.
           '<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>'.$force_title;                 '<script type="text/javascript">'."\n".
                  'function LONCAPAreg(){;} function LONCAPAstale(){}'."\n".
                  '</script>'.$force_title;
     }      }
 # Graphical display after login only  # Graphical display after login only
     if ($env{'request.registered'} && !$forcereg) { return ''; }      if ($env{'request.registered'} && !$forcereg) { return ''; }
Line 493  sub innerregister { Line 495  sub innerregister {
         if ($env{'request.symb'} ne '' &&          if ($env{'request.symb'} ne '' &&
     $env{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form|task)$/) {      $env{'request.filename'}=~/\.(problem|exam|quiz|assess|survey|form|task)$/) {
     if (&Apache::lonnet::allowed('mgr',$crs)) {      if (&Apache::lonnet::allowed('mgr',$crs)) {
  $hwkadd.=&switch('','',7,2,'pgrd.gif','problem[_1]','grades[_3]',   $hwkadd.=&switch('','',7,2,'pgrd.gif','problem[_1]','grades[_4]',
                        "gocmd('/adm/grades','gradingmenu')",                         "gocmd('/adm/grades','gradingmenu')",
                        'Modify user grades for this assessment resource');                         'Modify user grades for this assessment resource');
             } elsif (&Apache::lonnet::allowed('vgr',$crs)) {              } elsif (&Apache::lonnet::allowed('vgr',$crs)) {
Line 514  sub innerregister { Line 516  sub innerregister {
         ### resource          ### resource
         ###          ###
         my $editbutton = '';          my $editbutton = '';
           my $noeditbutton = 1;
           my ($cnum,$cdom);
           if ($env{'request.course.id'}) {
               $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
               $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
           }
         if ($env{'user.author'}) {          if ($env{'user.author'}) {
             if ($env{'request.role'}=~/^(aa|ca|au)/) {              if ($env{'request.role'}=~/^(aa|ca|au)/) {
                 # Set defaults for authors                  # Set defaults for authors
Line 541  sub innerregister { Line 549  sub innerregister {
  foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }   foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } }
  if (!$allowed) {   if (!$allowed) {
     $editbutton=&switch('','',6,1,$top,,$bottom,$action,$desc);      $editbutton=&switch('','',6,1,$top,,$bottom,$action,$desc);
                       $noeditbutton = 0;
                 }                  }
             }              }
             ##              ##
Line 549  sub innerregister { Line 558  sub innerregister {
             my $cfile='';              my $cfile='';
             my $cfuname='';              my $cfuname='';
             my $cfudom='';              my $cfudom='';
               my $uploaded;
             if ($env{'request.filename'}) {              if ($env{'request.filename'}) {
                 my $file=&Apache::lonnet::declutter($env{'request.filename'});                  my $file=&Apache::lonnet::declutter($env{'request.filename'});
                 $file=~s/^($match_domain)\/($match_username)/\/priv\/$2/;                  $file=~s/^($match_domain)\/($match_username)/\/priv\/$2/;
Line 569  sub innerregister { Line 579  sub innerregister {
                 $editbutton=&switch                  $editbutton=&switch
                     ('','',6,1,'pcstr.gif','edit[_1]','resource[_2]',                      ('','',6,1,'pcstr.gif','edit[_1]','resource[_2]',
                      "go('".$cfile."');","Edit this resource");                       "go('".$cfile."');","Edit this resource");
                   $noeditbutton = 0;
             } elsif ($editbutton eq '') {              } elsif ($editbutton eq '') {
                 $editbutton=&clear(6,1);                  $editbutton=&clear(6,1);
             }              }
         }          }
           if (($noeditbutton) && ($env{'request.filename'})) {
               if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
                   my $file=&Apache::lonnet::declutter($env{'request.filename'});
                   if (defined($cnum) && defined($cdom)) {
                       if (&is_course_upload($file,$cnum,$cdom)) {
                           my $cfile = &edit_course_upload($file,$cnum,$cdom);
                           if ($cfile) {
                               $editbutton=&switch
                                           ('','',6,1,'pcstr.gif','edit[_1]',
                                            'resource[_2]',"go('".$cfile."');",
                                            'Edit this resource');
                           }
                       }
                   }
               }
           }
         ###          ###
         ###          ###
 # Prepare the rest of the buttons  # Prepare the rest of the buttons
Line 590  sub innerregister { Line 617  sub innerregister {
                 $menuitems=(<<ENDMENUITEMS);                  $menuitems=(<<ENDMENUITEMS);
 s&6&1&list.gif&list[_1]&dir[_1]&golist('$esc_currdir')&List current directory  s&6&1&list.gif&list[_1]&dir[_1]&golist('$esc_currdir')&List current directory
 s&6&2&rtrv.gif&retrieve[_1]&version[_1]&gocstr('/adm/retrieve','/~$uname/$cleandisfn')&Retrieve old version  s&6&2&rtrv.gif&retrieve[_1]&version[_1]&gocstr('/adm/retrieve','/~$uname/$cleandisfn')&Retrieve old version
 s&6&3&pub.gif&publish[_1]&resource[_1]&gocstr('/adm/publish','/~$uname/$cleandisfn')&Publish this resource  s&6&3&pub.gif&publish[_1]&resource[_3]&gocstr('/adm/publish','/~$uname/$cleandisfn')&Publish this resource
 s&7&1&del.gif&delete[_1]&resource[_2]&gocstr('/adm/cfile?action=delete','/~$uname/$cleandisfn')&Delete this resource  s&7&1&del.gif&delete[_1]&resource[_2]&gocstr('/adm/cfile?action=delete','/~$uname/$cleandisfn')&Delete this resource
 s&7&2&prt.gif&prepare[_1]&printout[_1]&gocstr('/adm/printout','/~$uname/$cleandisfn')&Prepare a printable document  s&7&2&prt.gif&prepare[_1]&printout[_1]&gocstr('/adm/printout','/~$uname/$cleandisfn')&Prepare a printable document
 ENDMENUITEMS  ENDMENUITEMS
Line 620  if(length($annotation) > 0){ Line 647  if(length($annotation) > 0){
 $menuitems.="&anno-[_1]&tations[_1]&annotate()&";  $menuitems.="&anno-[_1]&tations[_1]&annotate()&";
 $menuitems.="Make notes and annotations about this resource&&1\n";  $menuitems.="Make notes and annotations about this resource&&1\n";
   
               unless ($noremote) {
                   my $showreqcrs = &check_for_rcrs();
                   if ($showreqcrs) {
                       $menuitems.="s&8&1&rcrs.gif&request[_1]&course[_16]".
                                   "&go('/adm/requestcourse')&Course requests\n";
                   }
               }
             unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {              unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {
  if (!$env{'request.enc'}) {   if (!$env{'request.enc'}) {
     $menuitems.=(<<ENDREALRES);      $menuitems.=(<<ENDREALRES);
 s&6&3&catalog.gif&catalog[_1]&info[_1]&catalog_info()&Show catalog information  s&6&3&catalog.gif&catalog[_2]&info[_1]&catalog_info()&Show Metadata
 ENDREALRES  ENDREALRES
                 }                  }
         $menuitems.=(<<ENDREALRES);          $menuitems.=(<<ENDREALRES);
Line 725  ENDREGTEXT Line 759  ENDREGTEXT
     $result = (<<ENDREGTHIS);      $result = (<<ENDREGTHIS);
             
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 // BEGIN LON-CAPA Internal  // BEGIN LON-CAPA Internal
 var swmenu=null;  var swmenu=null;
   
Line 760  var swmenu=null; Line 795  var swmenu=null;
       }        }
   
 // END LON-CAPA Internal   // END LON-CAPA Internal 
   // ]]>
 </script>  </script>
 ENDREGTHIS  ENDREGTHIS
         }          }
Line 775  ENDDONOTREGTEXT Line 811  ENDDONOTREGTEXT
            $result = (<<ENDDONOTREGTHIS);             $result = (<<ENDDONOTREGTHIS);
   
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 // BEGIN LON-CAPA Internal  // BEGIN LON-CAPA Internal
 var swmenu=null;  var swmenu=null;
   
Line 799  var swmenu=null; Line 836  var swmenu=null;
     }      }
   
 // END LON-CAPA Internal  // END LON-CAPA Internal
   // ]]>
 </script>  </script>
 ENDDONOTREGTHIS  ENDDONOTREGTHIS
        }         }
Line 807  ENDDONOTREGTHIS Line 845  ENDDONOTREGTHIS
     return $result;      return $result;
 }  }
   
   sub is_course_upload {
       my ($file,$cnum,$cdom) = @_;
       my $uploadpath = &LONCAPA::propath($cdom,$cnum);
       $uploadpath =~ s{^\/}{};
       if (($file =~ m{^\Q$uploadpath\E/userfiles/docs/}) ||
           ($file =~ m{^userfiles/\Q$cdom\E/\Q$cnum\E/docs/})) {
           return 1;
       }
       return;
   }
   
   sub edit_course_upload {
       my ($file,$cnum,$cdom) = @_;
       my $cfile;
       if ($file =~/\.(htm|html|css|js|txt)$/) {
           my $ext = $1;
           my $url = &Apache::lonnet::hreflocation('',$file);
           my $home = &Apache::lonnet::homeserver($cnum,$cdom);
           my @ids=&Apache::lonnet::current_machine_ids();
           my $dest;
           if ($home && grep(/^\Q$home\E$/,@ids)) {
               $dest = $url.'?forceedit=1';
           } else {
               unless (&Apache::lonnet::get_locks()) {
                   $dest = '/adm/switchserver?otherserver='.
                           $home.'&role='.$env{'request.role'}.
                           '&url='.$url.'&forceedit=1';
               }
           }
           if ($dest) {
               $cfile = &HTML::Entities::encode($dest,'"<>&');
           }
       }
       return $cfile;
   }
   
 sub loadevents() {  sub loadevents() {
     if ($env{'request.state'} eq 'construct' ||      if ($env{'request.state'} eq 'construct' ||
  $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }   $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }
Line 834  sub startupremote { Line 908  sub startupremote {
     my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited');      my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited');
     return(<<ENDREMOTESTARTUP);      return(<<ENDREMOTESTARTUP);
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 var timestart;  var timestart;
 function wheelswitch() {  function wheelswitch() {
     if (typeof(document.wheel) != 'undefined') {      if (typeof(document.wheel) != 'undefined') {
Line 883  function main() { Line 958  function main() {
    timestart=date.getTime();     timestart=date.getTime();
    wait();     wait();
 }  }
   // ]]>
 </script>  </script>
 ENDREMOTESTARTUP  ENDREMOTESTARTUP
 }  }
Line 891  ENDREMOTESTARTUP Line 966  ENDREMOTESTARTUP
 sub setflags() {  sub setflags() {
     return(<<ENDSETFLAGS);      return(<<ENDSETFLAGS);
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
     menuloaded=0;      menuloaded=0;
     tim=0;      tim=0;
   // ]]>
 </script>  </script>
 ENDSETFLAGS  ENDSETFLAGS
 }  }
Line 902  sub maincall() { Line 979  sub maincall() {
         ($env{'environment.remote'} eq 'off')) { return ''; }          ($env{'environment.remote'} eq 'off')) { return ''; }
     return(<<ENDMAINCALL);      return(<<ENDMAINCALL);
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
     main();      main();
   // ]]>
 </script>  </script>
 ENDMAINCALL  ENDMAINCALL
 }  }
Line 914  sub load_remote_msg { Line 993  sub load_remote_msg {
         ($env{'environment.remote'} eq 'off')) { return ''; }          ($env{'environment.remote'} eq 'off')) { return ''; }
   
     my $esclowerurl=&escape($lowerurl);      my $esclowerurl=&escape($lowerurl);
     my $link=&mt('<a href="[_1]">Continue</a> on in Inline Menu mode',      my $link=&mt('[_1]Continue[_2] on in Inline Menu mode',
  "/adm/remote?action=collapse&amp;url=$esclowerurl");   '<a href="/adm/remote?action=collapse&amp;url='.$esclowerurl.'">',
                    '</a>');
     return(<<ENDREMOTEFORM);      return(<<ENDREMOTEFORM);
 <p>  <p>
 <form name="wheel">  <form name="wheel">
Line 946  sub open { Line 1026  sub open {
     my $returnval='';      my $returnval='';
     if (($env{'browser.interface'} eq 'textual') ||      if (($env{'browser.interface'} eq 'textual') ||
         ($env{'environment.remote'} eq 'off')) {           ($env{'environment.remote'} eq 'off')) { 
  return '<script type="text/javascript">self.name="loncapaclient";</script>';   return 
            '<script type="text/javascript">'."\n".
            '// <![CDATA['."\n".
            'self.name="loncapaclient";'."\n".
            '// ]]>'."\n".
            '</script>';
     }      }
     my $menuname = &get_menu_name();      my $menuname = &get_menu_name();
           
Line 959  sub open { Line 1044  sub open {
 #}  #}
 #ENDRESIZE  #ENDRESIZE
 #    }  #    }
     $returnval.=(<<ENDOPEN);      $returnval=(<<ENDOPEN);
   // <![CDATA[
 window.status='Opening LON-CAPA Remote Control';  window.status='Opening LON-CAPA Remote Control';
 var menu=window.open("/res/adm/pages/menu.html","$menuname",  var menu=window.open("/res/adm/pages/menu.html","$menuname",
 "height=375,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5");  "height=375,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5");
 self.name='loncapaclient';  self.name='loncapaclient';
   // ]]>
 ENDOPEN  ENDOPEN
     return '<script type="text/javascript">'.$returnval.'</script>';      return '<script type="text/javascript">'.$returnval.'</script>';
 }  }
Line 1132  sub rawconfig { Line 1219  sub rawconfig {
     my $uname=$env{'user.name'};      my $uname=$env{'user.name'};
     my $udom=$env{'user.domain'};      my $udom=$env{'user.domain'};
     my $adv=$env{'user.adv'};      my $adv=$env{'user.adv'};
     my $show_course=&show_course();      my $show_course=&Apache::loncommon::show_course();
     my $author=$env{'user.author'};      my $author=$env{'user.author'};
     my $crs='';      my $crs='';
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
Line 1226  sub rawconfig { Line 1313  sub rawconfig {
                     }                      }
                 }                  }
             }              }
           } elsif ($pro eq 'tools') {
               my @tools = ('aboutme','blog','portfolio');
               if (grep(/^\Q$prt\E$/,@tools)) {
                   if (!&Apache::lonnet::usertools_access($env{'user.name'},
                                                          $env{'user.domain'},
                                                          $prt,undef,'tools')) {
                       $output.=&clear($row,$col);
                       next;
                   }
               } elsif (($prt eq 'reqcrsnsc') || ($prt eq 'reqcrsshc')) {
                   if (($prt eq 'reqcrsnsc') && ($show_course))   {
                       next;
                   }
                   if (($prt eq 'reqcrsshc') && (!$show_course)) {
                       next;
                   }
                   my $showreqcrs = &check_for_rcrs();
                   if (!$showreqcrs) {
                       $output.=&clear($row,$col);
                       next;
                   }
               }
               $prt='any';
               $output.=&secondlevel(
             $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
   
         }          }
     }      }
     unless (($env{'browser.interface'} eq 'textual') ||      unless (($env{'browser.interface'} eq 'textual') ||
Line 1239  sub rawconfig { Line 1352  sub rawconfig {
     return $output;      return $output;
 }  }
   
   sub check_for_rcrs {
       my $showreqcrs = 0;
       foreach my $type ('official','unofficial','community') {
           if (&Apache::lonnet::usertools_access($env{'user.name'},
                                                 $env{'user.domain'},
                                                 $type,undef,'requestcourses')) {
               $showreqcrs = 1;
               last;
           }
       }
       return $showreqcrs;
   }
   
 # ======================================================================= Close  # ======================================================================= Close
   
 sub close {  sub close {
Line 1247  sub close { Line 1373  sub close {
     my $menuname = &get_menu_name();      my $menuname = &get_menu_name();
     return(<<ENDCLOSE);      return(<<ENDCLOSE);
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 window.status='Accessing Remote Control';  window.status='Accessing Remote Control';
 menu=window.open("/adm/rat/empty.html","$menuname",  menu=window.open("/adm/rat/empty.html","$menuname",
                  "height=350,width=150,scrollbars=no,menubar=no");                   "height=350,width=150,scrollbars=no,menubar=no");
Line 1256  menu.autologout=0; Line 1383  menu.autologout=0;
 window.status='Closing Remote Control';  window.status='Closing Remote Control';
 menu.close();  menu.close();
 window.status='Done.';  window.status='Done.';
   // ]]>
 </script>  </script>
 ENDCLOSE  ENDCLOSE
 }  }
Line 1442  function set_bookmark() { Line 1570  function set_bookmark() {
    bmquery=window.open('','bmquery','width=365,height=165,scrollbars=0');     bmquery=window.open('','bmquery','width=365,height=165,scrollbars=0');
    bmquery.document.write(     bmquery.document.write(
    '$start_page_bookmark'     '$start_page_bookmark'
    +"<center><form method='post'"     +'<center><form method="post"'
    +" name='newlink' action='/adm/bookmarks' target='bmquery' "     +' name="newlink" action="/adm/bookmarks" target="bmquery" '
    +">\\n <table width=340 height=150 "     +'> <table width="340" height="150" '
    +"bgcolor='ffffff' align=center><tr><td>Link Name:<br /><input "     +'bgcolor="ffffff" align="center"><tr><td>Link Name:<br /><input '
    +"type='text' name='title' size=45 value='"+clienttitle+"' />"     +'type="text" name="title" size="45" value="'+clienttitle+'" />'
    +"<br />Address:<br /><input type='text' name='address' size='45' "     +'<br />Address:<br /><input type="text" name="address" size="45" '
    +"value='"+clienthref+"' /><br /><center><input type='submit' "     +'value="'+clienthref+'" /><br /><center><input type="submit" '
    +"value='Save' /> <input type='button' value='Close (no save)' "     +'value="Save" /> <input type="button" value="Close" '
    +"onclick='javascript:window.close();' /><\\/center><\\/td>"     +'onclick="javascript:window.close();" /></center></td>'
    +"<\\/tr><\\/table><\\/form><\\/center>"     +'</tr></table></form></center>'
    +'$end_page_bookmark' );     +'$end_page_bookmark' );
    bmquery.document.close();     bmquery.document.close();
 }  }
Line 1527  sub hidden_button_check { Line 1655  sub hidden_button_check {
 sub roles_selector {  sub roles_selector {
     my ($cdom,$cnum) = @_;      my ($cdom,$cnum) = @_;
     my $now = time;      my $now = time;
     my (%courseroles,%seccount,%gotnosection);      my (%courseroles,%seccount);
     my $is_cc;      my $is_cc;
     my $role_selector;      my $role_selector;
     if ($env{'user.role.cc./'.$cdom.'/'.$cnum}) {      if ($env{'user.role.cc./'.$cdom.'/'.$cnum}) {
Line 1542  sub roles_selector { Line 1670  sub roles_selector {
         }          }
     }      }
     if ($is_cc) {      if ($is_cc) {
         my %adv_roles =          &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount);
              &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);  
         foreach my $role (keys(%adv_roles)) {  
             my ($urole,$usec) = split(/:/,$role);  
             if (!$gotnosection{$urole}) {  
                 $seccount{$urole} ++;  
                 $gotnosection{$urole} = 1;  
             }  
             if (ref($courseroles{$urole}) eq 'ARRAY') {  
                 if ($usec ne '') {  
                     if (!grep(/^Q$usec\E$/,@{$courseroles{$urole}})) {  
                         push(@{$courseroles{$urole}},$usec);  
                         $seccount{$urole} ++;  
                     }  
                 }  
             } else {  
                 @{$courseroles{$urole}} = ();  
                 if ($usec ne '') {  
                     $seccount{$urole} ++;  
                     push(@{$courseroles{$urole}},$usec);  
                 }  
             }  
         }  
         my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);  
         @{$courseroles{'st'}} = ();  
         if (keys(%sections_count) > 0) {  
             push(@{$courseroles{'st'}},keys(%sections_count));  
         }  
     } else {      } else {
           my %gotnosection;
         foreach my $item (keys(%env)) {          foreach my $item (keys(%env)) {
             if ($item =~ m-^user\.role\.([^.]+)\./\Q$cdom\E/\Q$cnum\E/?(\w*)$-) {              if ($item =~ m-^user\.role\.([^.]+)\./\Q$cdom\E/\Q$cnum\E/?(\w*)$-) {
                 my $role = $1;                  my $role = $1;
Line 1628  sub roles_selector { Line 1730  sub roles_selector {
     return $role_selector;      return $role_selector;
 }  }
   
   sub get_all_courseroles {
       my ($cdom,$cnum,$courseroles,$seccount) = @_;
       unless ((ref($courseroles) eq 'HASH') && (ref($seccount) eq 'HASH')) {
           return;
       }
       my ($result,$cached) =
           &Apache::lonnet::is_cached_new('getcourseroles',$cdom.'_'.$cnum);
       if (defined($cached)) {
           if (ref($result) eq 'HASH') {
               if ((ref($result->{'roles'}) eq 'HASH') &&
                   (ref($result->{'seccount'}) eq 'HASH')) {
                   %{$courseroles} = %{$result->{'roles'}};
                   %{$seccount} = %{$result->{'seccount'}};
                   return;
               }
           }
       }
       my %gotnosection;
       my %adv_roles =
            &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);
       foreach my $role (keys(%adv_roles)) {
           my ($urole,$usec) = split(/:/,$role);
           if (!$gotnosection{$urole}) {
               $seccount->{$urole} ++;
               $gotnosection{$urole} = 1;
           }
           if (ref($courseroles->{$urole}) eq 'ARRAY') {
               if ($usec ne '') {
                   if (!grep(/^\Q$usec\E$/,@{$courseroles->{$urole}})) {
                       push(@{$courseroles->{$urole}},$usec);
                       $seccount->{$urole} ++;
                   }
               }
           } else {
               @{$courseroles->{$urole}} = ();
               if ($usec ne '') {
                   $seccount->{$urole} ++;
                   push(@{$courseroles->{$urole}},$usec);
               }
           }
       }
       my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum,['st']);
       @{$courseroles->{'st'}} = ();
       if (keys(%sections_count) > 0) {
           push(@{$courseroles->{'st'}},keys(%sections_count));
           $seccount->{'st'} = scalar(keys(%sections_count));
       }
       my $rolehash = {
                        'roles'    => $courseroles,
                        'seccount' => $seccount,
                      };
       &Apache::lonnet::do_cache_new('getcourseroles',$cdom.'_'.$cnum,$rolehash);
       return;
   }
   
 sub jump_to_role {  sub jump_to_role {
     my ($cdom,$cnum,$seccount,$courseroles) = @_;      my ($cdom,$cnum,$seccount,$courseroles) = @_;
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
Line 1659  sub jump_to_role { Line 1816  sub jump_to_role {
                    '    numsec['.$i.'] = "'.$seccount->{$items[$i]}.'";'."\n";                     '    numsec['.$i.'] = "'.$seccount->{$items[$i]}.'";'."\n";
         }          }
     }      }
     my $output = <<"END";      return <<"END";
 <script type="text/javascript">  <script type="text/javascript">
   //<![CDATA[
 function adhocRole(roleitem) {  function adhocRole(roleitem) {
     $js      $js
     var newrole =  document.rolechooser.elements[roleitem].options[document.rolechooser.elements[roleitem].selectedIndex].value;      var newrole =  document.rolechooser.elements[roleitem].options[document.rolechooser.elements[roleitem].selectedIndex].value;
Line 1731  function retrieveIndex(item) { Line 1889  function retrieveIndex(item) {
     }      }
     return -1;      return -1;
 }  }
   // ]]>
   
 </script>  </script>
 END  END
     return $output;  
 }  }
   
   

Removed from v.1.244  
changed lines
  Added in v.1.244.2.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.