Diff for /loncom/interface/lonmenu.pm between versions 1.282 and 1.309.2.7

version 1.282, 2009/09/27 11:05:06 version 1.309.2.7, 2010/01/05 15:27:31
Line 113  The javascript is usually similar to "go Line 113  The javascript is usually similar to "go
   
 =item get_nav_status()  =item get_nav_status()
   
 =item convert_menu_function()  
   
 FIXME this needs to move into mydesktab and the other locations   
 the text is generated  
   
 =item hidden_button_check()  =item hidden_button_check()
   
 =item roles_selector()  =item roles_selector()
Line 139  use Apache::lonlocal; Line 134  use Apache::lonlocal;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
 use HTML::Entities();  use HTML::Entities();
   
 use vars qw(@desklines %category_names %category_members %category_positions $readdesk);  use vars qw(@desklines %category_names %category_members %category_positions 
               $readdesk @primary_menu @secondary_menu);
   
 my @inlineremote;  my @inlineremote;
   
   sub prep_menuitem {
       my ($menuitem) = @_;
       return '' unless(ref($menuitem) eq 'ARRAY');
       my $link;
       if ($$menuitem[1]) { # graphical Link
           $link = "<img class=\"LC_noBorder\""
                 . " src=\"" . &Apache::loncommon::lonhttpdurl($$menuitem[1]) . "\"" 
                 . " alt=\"" . &mt($$menuitem[2]) . "\" />";
       } else {             # textual Link
           $link = &mt($$menuitem[3]);
       }
       return '<li><a href="'.$$menuitem[0].'">'.$link.'</a></li>';
   }
   
   # primary_menu() evaluates @primary_menu and returns XHTML for the menu
   # that contains following links:
   # About, Message, Roles, Help, Logout
   # @primary_menu is filled within the BEGIN block of this module with 
   # entries from mydesk.tab
   sub primary_menu {
       my $menu;
       my $custommenu = &Apache::loncommon::needs_gci_custom();
       # each element of @primary contains following array:
       # (link url, icon path, alt text, link text, condition)
       foreach my $menuitem (@primary_menu) {
           # evaluate conditions 
           next if    ref($menuitem)       ne 'ARRAY';    #
           next if    $$menuitem[4]        eq 'nonewmsg'  # show links depending on
                   && &Apache::lonmsg::mynewmail();       # whether a new msg 
           next if    $$menuitem[4]        eq 'newmsg'    # arrived or not
                   && !&Apache::lonmsg::mynewmail();      # 
           next if    $$menuitem[4]        !~ /public/    ##we've a public user, 
                   && $env{'user.name'}    eq 'public'    ##who should not see all 
                   && $env{'user.domain'}  eq 'public';   ##links
           next if    $$menuitem[4]        eq 'onlypublic'# hide links which are 
                   && $env{'user.name'}    ne 'public'    # only visible to public
                   && $env{'user.domain'}  ne 'public';   # users
           next if    $$menuitem[4]        eq 'roles'     # hide links which are
                   && $custommenu;                        # not visible when GCI
           next if    $$menuitem[4]        eq 'courses'   # tabbed interface in use
                   && $custommenu;                        # 
           next if    $$menuitem[4]        eq 'roles'     ##show links depending on
                   && &Apache::loncommon::show_course();  ##term 'Courses' or 
           next if    $$menuitem[4]        eq 'courses'   ##'Roles' wanted
                   && !&Apache::loncommon::show_course(); ##
           
               
           if ($$menuitem[3] eq 'Help') { # special treatment for helplink
               $menu .= '<li>'.&Apache::loncommon::top_nav_help('Help').'</li>';
           } else {
               my @items = @{$menuitem};
               $items[0] = 'javascript:'.$menuitem->[0].';';
               $menu .= &prep_menuitem(\@items);
           }
       }
   
       return "<ol class=\"LC_primary_menu LC_right\">$menu</ol>";
   }
   
   
   sub secondary_menu {
       my $menu;
   
       my $crstype = &Apache::loncommon::course_type();
       my $canedit = &Apache::lonnet::allowed('mdc', $env{'request.course.id'});
       my $canviewgrps = &Apache::lonnet::allowed('vcg', $env{'request.course.id'}
                      . ($env{'request.course.sec'} ? "/$env{'request.course.sec'}"
                                                    : '')); 
       my $showlink = &show_return_link();
       my %groups = &Apache::lonnet::get_active_groups(
                        $env{'user.domain'}, $env{'user.name'},
                        $env{'course.' . $env{'request.course.id'} . '.domain'},
                        $env{'course.' . $env{'request.course.id'} . '.num'});
       foreach my $menuitem (@secondary_menu) {
           # evaluate conditions 
           next if    ref($menuitem)  ne 'ARRAY';
           next if    $$menuitem[4]   ne 'always'
                   && !$env{'request.course.id'};
           next if    $$menuitem[4]   eq 'showreturn'
                   && !$showlink
                   && !($env{'request.state'} eq 'construct');
           next if    $$menuitem[4]   =~ /^mdc/
                   && !$canedit;
           next if    $$menuitem[4]  eq 'mdcCourse'
                   && $crstype eq 'Community';
           next if    $$menuitem[4]  eq 'mdcCommunity'
                   && $crstype ne 'Community';
           next if    $$menuitem[4]  =~ /^remotenav/
                   && $env{'environment.remotenavmap'} ne 'on';
           next if    $$menuitem[4]  =~ /noremotenav/
                   && $env{'environment.remotenavmap'} eq 'on';
           next if $$menuitem[4] =~ /^(no|)remotenav$/ 
                   && $crstype eq 'Community';
           next if $$menuitem[4] =~ /^(no|)remotenavCommunity$/ 
                   && $crstype ne 'Community';
           next if    $$menuitem[4]   =~ /showgroups$/
                   && !$canviewgrps
                   && !%groups;
   
           if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {
               # special treatment for role selector
               my $roles_selector = &roles_selector(
                           $env{'course.' . $env{'request.course.id'} . '.domain'},
                           $env{'course.' . $env{'request.course.id'} . '.num'}  );
   
               $menu .= $roles_selector ? "<li>$roles_selector</li>"
                                        : '';
           } elsif ($env{'environment.remotenavmap'} eq 'on') {
               # open link using javascript when remote navmap is activated
               my @items = @{$menuitem}; 
               if ($menuitem->[4] eq 'remotenav') {
                   $items[0] = "javascript:gonav('$menuitem->[0]');";
               } else {
                   $items[0] = "javascript:go('$menuitem->[0]');";
               }
               $menu .= &prep_menuitem(\@items);
           } else {
               $menu .= &prep_menuitem(\@$menuitem);
           }
       }
       if ($menu =~ /\[url\].*\[symb\]/) {
           my $escurl  = &escape( &Apache::lonenc::check_encrypt(
                                $env{'request.noversionuri'}));
   
           my $escsymb = &escape( &Apache::lonenc::check_encrypt(
                                $env{'request.symb'})); 
   
           if (    $env{'request.state'} eq 'construct'
               and (   $env{'request.noversionuri'} eq '' 
                    || !defined($env{'request.noversionuri'}))) 
           {
               ($escurl = $env{'request.filename'}) =~ 
                   s{^/home/([^/]+)/public_html/(.*)$}{/priv/$1/$2};
   
               $escurl  = &escape($escurl);
           }    
           $menu =~ s/\[url\]/$escurl/g;
           $menu =~ s/\[symb\]/$escsymb/g;
       }
   
       return "<ul id=\"LC_secondary_menu\">$menu</ul>";
   }
   
   sub gci_secondary_menu {
       my %courses = (
           'review' => 'gci_9615072b469884921gcil1',
           'submit' => 'gci_1H96711d710194bfegcil1',
       );
       my %linktext = (
           'review'      => 'Review Questions',
           'submit'      => 'Submit Questions',
           'managetest'  => 'Manage Tests',
       );
       my %links = (
                     'managetest' => '/adm/menu',
                   );
       my $current = 'managetest';
       if ($env{'form.destinationurl'} eq '/adm/gci_info') {
           undef($current);
       }
       foreach my $key (keys(%courses)) {
           $links{$key} = "javascript:switchpage('$key');";
           if ($env{'request.course.id'} eq $courses{$key}) {
               $links{$key} = '/adm/navmaps';
               $current = $key;
               $links{'managetest'} = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2fmenu';
           }
       }
       my @menutabs = ('review','submit','managetest');
       my $tabs;
       foreach my $item (@menutabs) {
           if ($item eq $current) {
               $tabs .= ' <li id="current"><a href="'.$links{$item}.'">'.
                        $linktext{$item}.'</a></li>';
           } else {
               $tabs .= ' <li><a href="'.$links{$item}.'">'.
                        $linktext{$item}.'</a></li>';
           }
       }
       return '<div id="gciheader">'.
              '<ul>'.$tabs.'</ul></div><br />';
   }
   
 #  #
 # This routine returns a translated hash for the menu items in the top inline menu row  # This routine returns a translated hash for the menu items in the top inline menu row
 # Probably should be in mydesk.tab  # Probably should be in mydesk.tab
   
   #SD this sub is deprecated - don't use it
 sub initlittle {  sub initlittle {
     return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',      return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',
        'nav' => 'Course Contents',         'nav' => 'Course Contents',
Line 160  sub initlittle { Line 339  sub initlittle {
                                        'login' => 'Log In',                                         'login' => 'Log In',
        'launch' => 'Launch Remote Control',         'launch' => 'Launch Remote Control',
                                        'groups' => 'Groups',                                         'groups' => 'Groups',
                                        'gdoc' => 'Group Documents',                                         'gdoc' => 'Community Documents',
                                        );                                         );
 }  }
   
   #SD this sub is deprecated - don't use it
   #SD functionality is covered by new loncommon::bodytag and primary_menu(), secondary_menu()
 sub menubuttons {  sub menubuttons {
     my $forcereg=shift;      my $forcereg=shift;
     my $titletable=shift;      my $titletable=shift;
Line 233  sub menubuttons { Line 414  sub menubuttons {
         my %lt=&initlittle();          my %lt=&initlittle();
   
         my $domain=&Apache::loncommon::determinedomain();          my $domain=&Apache::loncommon::determinedomain();
         my $function =&Apache::loncommon::get_users_function();          my $function=&Apache::loncommon::get_users_function();
         my $link=&Apache::loncommon::designparm($function.'.link',$domain);          my $link=&Apache::loncommon::designparm($function.'.link',$domain);
         my $alink=&Apache::loncommon::designparm($function.'.alink',$domain);          my $alink=&Apache::loncommon::designparm($function.'.alink',$domain);
         my $vlink=&Apache::loncommon::designparm($function.'.vlink',$domain);          my $vlink=&Apache::loncommon::designparm($function.'.vlink',$domain);
Line 241  sub menubuttons { Line 422  sub menubuttons {
   
         if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') {          if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') {
             return (<<ENDINLINEMENU);              return (<<ENDINLINEMENU);
             <ol class="LC_smallMenu LC_right">              <ol class="LC_primary_menu LC_right">
                 <li>$logo</li>                  <li>$logo</li>
                 <li><a href="/adm/roles" target="_top">$lt{'login'}</a></li>                  <li><a href="/adm/roles" target="_top">$lt{'login'}</a></li>
             </ol>              </ol>
Line 259  ENDINLINEMENU Line 440  ENDINLINEMENU
     $navmaps=(<<ENDNAV);      $navmaps=(<<ENDNAV);
 <li><a href="$link" target="_top">$lt{'nav'}</a></li>  <li><a href="$link" target="_top">$lt{'nav'}</a></li>
 ENDNAV  ENDNAV
             my $is_group = (&Apache::loncommon::course_type() eq 'Group');              my $is_community = 
                   (&Apache::loncommon::course_type() eq 'Community');
     if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {      if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
                 my $text = ($is_group) ? $lt{'gdoc'} : $lt{'docs'};                  my $text = ($is_community) ? $lt{'gdoc'} : $lt{'docs'};
  $docs=(<<ENDDOCS);   $docs=(<<ENDDOCS);
 <li><a href="/adm/coursedocs" target="_top">$text</a></li>  <li><a href="/adm/coursedocs" target="_top">$text</a></li>
 ENDDOCS  ENDDOCS
Line 293  ENDCRELOAD Line 475  ENDCRELOAD
     my $utility = &utilityfunctions();      my $utility = &utilityfunctions();
   
     #Prepare the message link that indicates the arrival of new mail      #Prepare the message link that indicates the arrival of new mail
     my $messagelink = Apache::lonmsg::mynewmail() ? "Message (new)" : "Message";      my $messagelink = &Apache::lonmsg::mynewmail() ? "Message (new)" : "Message";
        $messagelink = '<a href="javascript:go(\'/adm/communicate\');">'         $messagelink = '<a href="javascript:go(\'/adm/communicate\');">'
                       . mt($messagelink) .'</a>';                        . mt($messagelink) .'</a>';
   
Line 305  ENDCRELOAD Line 487  ENDCRELOAD
 $utility  $utility
 // ]]>  // ]]>
 </script>  </script>
 <ol class="LC_smallMenu LC_right">  <ol class="LC_primary_menu LC_right">
  <li>$logo</li>   <li>$logo</li>
  <li>$messagelink</li>   <li>$messagelink</li>
  <li>$roles</li>   <li>$roles</li>
  <li>$helplink</li>   <li>$helplink</li>
  <li><a href="/adm/logout" target="_top">$lt{'exit'}</a></li>   <li><a href="/adm/logout" target="_top">$lt{'exit'}</a></li>
 </ol>  </ol>
 <ul id="LC_TabMainMenuContent">  <ul id="LC_secondary_menu">
 <li><a href="/adm/menu" target="_top">$lt{'main'}</a></li>  <li><a href="/adm/menu" target="_top">$lt{'main'}</a></li>
 $reloadlink  $reloadlink
 $navmaps  $navmaps
Line 374  sub registerurl { Line 556  sub registerurl {
 }  }
   
 sub innerregister {  sub innerregister {
     my ($forcereg, $titletable) = @_;      my ($forcereg,$titletable,$bread_crumbs) = @_;
     my $result = '';      my $result = '';
     my ($uname,$thisdisfn);      my ($uname,$thisdisfn);
     my $const_space = ($env{'request.state'} eq 'construct');      my $const_space = ($env{'request.state'} eq 'construct');
Line 397  sub innerregister { Line 579  sub innerregister {
         $newmail= 'swmenu.setstatus("you have","messages");';          $newmail= 'swmenu.setstatus("you have","messages");';
     }       } 
   
     my $breadcrumb;      my ($breadcrumb,$separator);
     if ($noremote      if ($noremote
      && ($env{'request.symb'})        && ($env{'request.symb'}) 
      && ($env{'request.course.id'})) {       && ($env{'request.course.id'})) {
Line 407  sub innerregister { Line 589  sub innerregister {
   
         my $maptitle = &Apache::lonnet::gettitle($mapurl);          my $maptitle = &Apache::lonnet::gettitle($mapurl);
         my $restitle = &Apache::lonnet::gettitle(&Apache::lonnet::symbread());          my $restitle = &Apache::lonnet::gettitle(&Apache::lonnet::symbread());
         my @crumbs = ({text  => "Course Content",           my $contentstext;
                        href  => "Javascript:gonav('/adm/navmaps')"},           if ($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Community') {
                       {text  => '...',              $contentstext = &mt('Community Contents');
                        no_mt => 1});          } else {
               $contentstext = &mt('Course Contents');
           }
           my @crumbs = ({text  => $contentstext, 
                          href  => "Javascript:gonav('/adm/navmaps')"});
   
           if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { 
               push(@crumbs, {text  => '...',
                              no_mt => 1});
           }
   
         push @crumbs, {text => $maptitle, no_mt => 1} if ($maptitle           push @crumbs, {text => $maptitle, no_mt => 1} if ($maptitle 
                                                    && $maptitle ne 'default.sequence'                                                      && $maptitle ne 'default.sequence' 
Line 418  sub innerregister { Line 609  sub innerregister {
   
         push @crumbs, {text => $restitle, no_mt => 1} if $restitle;           push @crumbs, {text => $restitle, no_mt => 1} if $restitle; 
   
         Apache::lonhtmlcommon::clear_breadcrumbs();          &Apache::lonhtmlcommon::clear_breadcrumbs();
         Apache::lonhtmlcommon::add_breadcrumb(@crumbs);          &Apache::lonhtmlcommon::add_breadcrumb(@crumbs);
         $breadcrumb .= Apache::lonhtmlcommon::breadcrumbs(undef,undef,0);          #$breadcrumb .= &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0);
    unless (($env{'request.state'} eq 'edit') || ($newmail) ||
    ($env{'request.state'} eq 'construct') ||
    ($env{'form.register'})) {
               $separator = &Apache::loncommon::head_subbox();
           }
         #          #
     }      }
     if ($env{'request.state'} eq 'construct') {      if ($env{'request.state'} eq 'construct') {
Line 431  sub innerregister { Line 627  sub innerregister {
     my $tableend   = ( $noremote ? '</table>' : '');      my $tableend   = ( $noremote ? '</table>' : '');
 # =============================================================================  # =============================================================================
 # ============================ This is for URLs that actually can be registered  # ============================ This is for URLs that actually can be registered
     if (($env{'request.noversionuri'}!~m|^/(res/)*adm/|) || ($forcereg)) {      if (($env{'request.noversionuri'}!~m{^/(res/)*adm/}) || ($forcereg)) {
 # -- This applies to homework problems for users with grading privileges  # -- This applies to homework problems for users with grading privileges
  my $crs='/'.$env{'request.course.id'};   my $crs='/'.$env{'request.course.id'};
  if ($env{'request.course.sec'}) {   if ($env{'request.course.sec'}) {
Line 537  sub innerregister { Line 733  sub innerregister {
             }              }
             # Finally, turn the button on or off              # Finally, turn the button on or off
             if ($cfile && !$const_space) {              if ($cfile && !$const_space) {
                 $editbutton=&switch                  my $nocrsedit;
                     ('','',6,1,'pcstr.gif','edit[_1]','resource[_2]',                  # Suppress display where CC has switched to student role.
                   if ($env{'request.course.id'}) {
                       unless(&Apache::lonnet::allowed('mdc',
                                                       $env{'request.course.id'})) {
                           $nocrsedit = 1;
                       }
                   }
                   if ($nocrsedit) {
                       $editbutton=&clear(6,1);
                   } else {
                       $editbutton=&switch
                          ('','',6,1,'pcstr.gif','edit[_1]','resource[_2]',
                      "go('".$cfile."');","Edit this resource");                       "go('".$cfile."');","Edit this resource");
                 $noeditbutton = 0;                      $noeditbutton = 0;
                   }
             } elsif ($editbutton eq '') {              } elsif ($editbutton eq '') {
                 $editbutton=&clear(6,1);                  $editbutton=&clear(6,1);
             }              }
Line 589  s&7&1&del.gif&delete[_1]&resource[_2]&go Line 797  s&7&1&del.gif&delete[_1]&resource[_2]&go
 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
             }              }
               if ($noremote) {
                   if (ref($bread_crumbs) eq 'ARRAY') {
                       &Apache::lonhtmlcommon::clear_breadcrumbs();
                       foreach my $crumb (@{$bread_crumbs}){
                           &Apache::lonhtmlcommon::add_breadcrumb($crumb);
                       }
                   }
               }
         } elsif ( defined($env{'request.course.id'}) &&           } elsif ( defined($env{'request.course.id'}) && 
  $env{'request.symb'} ne '' ) {   $env{'request.symb'} ne '' ) {
 #  #
Line 626  $menuitems.="Make notes and annotations Line 842  $menuitems.="Make notes and annotations
                 }                  }
             }              }
             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'}) && ($env{'request.noversionuri'} !~ m{^/adm/wrapper/ext/})) {
     $menuitems.=(<<ENDREALRES);      $menuitems.=(<<ENDREALRES);
 s&6&3&catalog.gif&catalog[_2]&info[_1]&catalog_info()&Show Metadata  s&6&3&catalog.gif&catalog[_2]&info[_1]&catalog_info()&Show Metadata
 ENDREALRES  ENDREALRES
Line 665  ENDMENUITEMS Line 881  ENDMENUITEMS
     my $addremote=0;      my $addremote=0;
     foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} }      foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} }
     my $inlinebuttons='';      my $inlinebuttons='';
     if ($addremote) {      if ($addremote) {
             # Registered, textual output  
                     if ($env{'environment.icons'} eq 'iconsonly') {          #SD START (work in progress!)
                         $inlinebuttons=(<<ENDARROWSINLINE);          Apache::lonhtmlcommon::clear_breadcrumb_tools();
 <tr><td>          # Arrows for navigation
 $inlineremote[21] $inlineremote[23]          Apache::lonhtmlcommon::add_breadcrumb_tool( 'A', $inlineremote[21] );
 ENDARROWSINLINE          Apache::lonhtmlcommon::add_breadcrumb_tool( 'A', $inlineremote[23] );
                         if (&hidden_button_check() ne 'yes') {          if(hidden_button_check() ne 'yes'){
                             $inlinebuttons .= (<<ENDINLINEICONS);              # notes
 $inlineremote[61] $inlineremote[63]              Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[93]);
 $inlineremote[71] $inlineremote[72] $inlineremote[73]              # bookmark
 $inlineremote[81] $inlineremote[82] $inlineremote[83]              Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[91]);
 $inlineremote[91] $inlineremote[92] $inlineremote[93]</td></tr>              # evaluate
 ENDINLINEICONS              Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[81]);
                         }              # feedback
                     } else {              Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[82]);
  if ($inlineremote[21] ne '' || $inlineremote[23] ne '') {              # print
     $inlinebuttons=(<<ENDFIRSTLINE);              Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[83]);
 <tr><td>$inlineremote[21]</td><td>&nbsp;</td><td>$inlineremote[23]</td></tr>              # metadata
 ENDFIRSTLINE              Apache::lonhtmlcommon::add_breadcrumb_tool( 'B', $inlineremote[63]);
                         }  
                         if (&hidden_button_check() ne 'yes') {               # ?
     foreach my $row (6..9) {              Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[61]);
  if ($inlineremote[${row}.'1'] ne ''              # ?
     || $inlineremote[$row.'2'] ne ''              Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[71]);
     || $inlineremote[$row.'3'] ne '') {              # ?
     $inlinebuttons .= <<"ENDLINE";              Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[72]);
 <tr><td>$inlineremote["${row}1"]</td><td>$inlineremote["${row}2"]</td><td>$inlineremote["${row}3"]</td></tr>              # ?
 ENDLINE              Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[73]);
  }              # ?
     }              Apache::lonhtmlcommon::add_breadcrumb_tool( 'C', $inlineremote[92]);
  }  
     }          }
     }  
           #SD END
   #       # Registered, textual output
   #        if ( $env{'environment.icons'} eq 'iconsonly' ) {
   #            $inlinebuttons = (<<ENDARROWSINLINE);
   #<tr><td>
   #$inlineremote[21] $inlineremote[23]
   #ENDARROWSINLINE
   #            if ( &hidden_button_check() ne 'yes' ) {
   #                $inlinebuttons .= (<<ENDINLINEICONS);
   #$inlineremote[61] $inlineremote[63]
   #$inlineremote[71] $inlineremote[72] $inlineremote[73]
   #$inlineremote[81] $inlineremote[82] $inlineremote[83]
   #$inlineremote[91] $inlineremote[92] $inlineremote[93]</td></tr>
   #ENDINLINEICONS
   #            }
   #        } else { # not iconsonly
   #            if ( $inlineremote[21] ne '' || $inlineremote[23] ne '' ) {
   #                $inlinebuttons = (<<ENDFIRSTLINE);
   #<tr><td>$inlineremote[21]</td><td>&nbsp;</td><td>$inlineremote[23]</td></tr>
   #ENDFIRSTLINE
   #            }
   #            if ( &hidden_button_check() ne 'yes' ) {
   #                foreach my $row ( 6 .. 9 ) {
   #                    if (   $inlineremote[ ${row} . '1' ] ne ''
   #                        || $inlineremote[ $row . '2' ] ne ''
   #                        || $inlineremote[ $row . '3' ] ne '' )
   #                    {
   #                        $inlinebuttons .= <<"ENDLINE";
   #<tr><td>$inlineremote["${row}1"]</td><td>$inlineremote["${row}2"]</td><td>$inlineremote["${row}3"]</td></tr>
   #ENDLINE
   #                    }
   #                }
   #            }
   #        }
       }
           #SD see below
           $breadcrumb = &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0);
     $result =(<<ENDREGTEXT);      $result =(<<ENDREGTEXT);
 <script type="text/javascript">  <script type="text/javascript">
 // BEGIN LON-CAPA Internal  // BEGIN LON-CAPA Internal
 </script>  </script>
 $timesync  $timesync
 $breadcrumb  $breadcrumb
 $tablestart  <!-- $tablestart -->
 $inlinebuttons  <!-- $inlinebuttons -->
 $tableend  <!-- $tableend -->
 $newmail  $newmail
   <!-- $separator -->
 <script type="text/javascript">  <script type="text/javascript">
 // END LON-CAPA Internal  // END LON-CAPA Internal
 </script>  </script>
Line 1066  sub switch { Line 1320  sub switch {
        my $pic=         my $pic=
    '<img alt="'.$text.'" src="'.     '<img alt="'.$text.'" src="'.
    &Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$img).     &Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$img).
    '" align="'.($nobreak==3?'right':'left').'" class="LC_noBorder" />';     '" align="'.($nobreak==3?'right':'left').'" class="LC_icon" />';
        if ($env{'browser.interface'} eq 'faketextual') {         if ($env{'browser.interface'} eq 'faketextual') {
 # Main Menu  # Main Menu
    if ($nobreak==3) {     if ($nobreak==3) {
Line 1092  sub switch { Line 1346  sub switch {
               $inlineremote[$idx]='<a title="'.$desc.'" href="javascript:'.$act.';">'.$pic.'</a>';                $inlineremote[$idx]='<a title="'.$desc.'" href="javascript:'.$act.';">'.$pic.'</a>';
            } else {             } else {
       $inlineremote[$idx]=        $inlineremote[$idx]=
    '<a class="LC_menubuttons_link" href="javascript:'.$act.';">'.$pic.     '<a title="'.$desc.'" class="LC_menubuttons_link" href="javascript:'.$act.';">'.$pic.
    '<span class="LC_menubuttons_inline_text">'.$desc.'</span></a>';     '<span class="LC_menubuttons_inline_text">'.$desc.'</span></a>';
            }             }
        }         }
Line 1122  sub openmenu { Line 1376  sub openmenu {
 }  }
   
 sub inlinemenu {  sub inlinemenu {
       my ($context,$switcher) = @_;
     undef(@inlineremote);      undef(@inlineremote);
     undef(%category_members);      undef(%category_members);
 # calling rawconfig with "1" will evaluate mydesk.tab, even if there is no active remote control      my $output;
     &rawconfig(1);      if (($context eq 'gcicustom') || ($context eq 'gcistudent')) {
     my $output='<table id="LC_mainmenu"><tr>';          $output='<table><tr>'.
     for (my $col=1; $col<=2; $col++) {                  '<td class="LC_mainmenu_col_fieldset">'.
         $output.='<td class="LC_mainmenu_col_fieldset">';                  '<div class="LC_Box LC_400Box">'.
         for (my $row=1; $row<=8; $row++) {                  '<h3 class="LC_hcell">'.&mt('Utilities').'</h3>'.
             foreach my $cat (keys(%category_members)) {                  '<table>';
                if ($category_positions{$cat} ne "$col,$row") { next; }          if ($context eq 'gcicustom') {
                #$output.='<table><tr><td colspan="4" class="LC_menubuttons_category">'.&mt($category_names{$cat}).'</td></tr>';              my $createtext = &mt('Create Concept Test');
                $output.='<div class="LC_Box">';              if ($switcher) {
        $output.='<h4 class="LC_hcell">'.&mt($category_names{$cat}).'</h4>';                  $createtext = &mt('Create New Test');
                $output.='<table>';              }
                my %active=();              $output .= '<tr><td align="left"><a href="javascript:switchpage('."'createtest'".');"><img alt="choose role" src="/res/adm/pages/rcrs.png" align="left" class="LC_icon" /></a></td><td class="LC_menubuttons_text" colspan="3"><a class="LC_menubuttons_link" href="javascript:switchpage('."'createtest'".');"><span class="LC_menubuttons_inline_text">'.$createtext.'</span></a></td></tr>';
                foreach my $menu_item (split(/\:/,$category_members{$cat})) {          }
                   if ($inlineremote[$menu_item]) {          if ($switcher) {
                      $active{$menu_item}=1;              $output .= '<tr><td align="left"><a href="javascript:courseswitcher('."'icon'".');"><img alt="choose role" src="/res/adm/pages/roles.png" align="left" class="LC_icon" /></a></td><td class="LC_menubuttons_text" colspan="2">'.$switcher.'</td></tr>';
                   }          }
                }            $output .= '<tr><td align="left"><a href="javascript:go('."'/adm/communicate'".');"><img alt="communication" src="/res/adm/pages/com.png" align="left" class="LC_icon" /></a></td><td class="LC_menubuttons_text" colspan="3"><a class="LC_menubuttons_link" href="javascript:go('."'/adm/communicate'".');"><span class="LC_menubuttons_inline_text">'.&mt('Send/Display Messages').'</span></a></td></tr>';
                foreach my $item (sort(keys(%active))) {          if ($env{'request.course.id'}) { 
                   $output.=$inlineremote[$item];              if (($context eq 'gcicustom') && (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) {
                }                  $output.= '</td></tr></table></div></td>'.
                $output.='</table>';                            '<td class="LC_mainmenu_col_fieldset">'.
                $output.='</div>';                            '<div class="LC_Box LC_400Box">'.
                             '<h3 class="LC_hcell">'.&mt('Test Management').'</h3>'.
                             '<table><tr><td align="left"><a href="javascript:gonav('."'/adm/navmaps'".');"><img alt="course contents" src="/res/adm/pages/nav.png" align="left" class="LC_icon" /></a></td><td class="LC_menubuttons_text" colspan="3"><a class="LC_menubuttons_link" href="javascript:gonav('."'/adm/navmaps'".');"><span class="LC_menubuttons_inline_text">Concept Test Contents</span></a></td></tr>'."\n".
                             '<tr><td align="left"><a href="javascript:go('."'/adm/coursedocs'".');"><img alt="assemble test" src="/res/adm/pages/docs.png" align="left" class="LC_icon" /></a></td><td class="LC_menubuttons_text" colspan="3"><a class="LC_menubuttons_link" href="javascript:go('."'/adm/coursedocs'".');"><span class="LC_menubuttons_inline_text">Assemble Concept Test</span></a></td></tr>'."\n".
                             '<tr><td align="left"><a href="javascript:go('."'/adm/createuser'".');"><img alt="user privs" src="/res/adm/pages/cprv.png" align="left" class="LC_icon" /></a></td><td class="LC_menubuttons_text" colspan="3"><a class="LC_menubuttons_link" href="javascript:go('."'/adm/createuser'".');"><span class="LC_menubuttons_inline_text">'.&mt('Manage Enrollment').'</span></a></td></tr>'."\n".
                            '<tr><td align="left"><a href="javascript:go('."'/adm/whatsnew'".');"><img alt="what is new" src="/res/adm/pages/new.png" align="left" class="LC_icon" /></a></td><td class="LC_menubuttons_text" colspan="3"><a class="LC_menubuttons_link" href="javascript:go('."'/adm/whatsnew'".');"><span class="LC_menubuttons_inline_text">'.&mt("What's New?").'</span></a></td></tr></table></div></td>';
               } else {
                   my $navtext = &mt('Table of Contents');
                   if ($env{'request.role.domain'} eq 'gcitest') {
                       $navtext = &mt('Display Test Contents');
                   }
                   $output .= '<tr><td align="left"><a href="javascript:gonav('."'/adm/navmaps'".');"><img alt="course contents" src="/res/adm/pages/nav.png" align="left" class="LC_icon" /></a></td><td class="LC_menubuttons_text" colspan="3"><a class="LC_menubuttons_link" href="javascript:gonav('."'/adm/navmaps'".');"><span class="LC_menubuttons_inline_text">'.$navtext.'</span></a></td></tr></table></div></td>';
             }              }
          }          }
          $output.="</td>";          $output.='</tr></table>';
       } else {
           # calling rawconfig with "1" will evaluate mydesk.tab, 
           # even if there is no active remote control
           &rawconfig(1);
           $output='<table><tr>';
           for (my $col=1; $col<=2; $col++) {
               $output.='<td class="LC_mainmenu_col_fieldset">';
               for (my $row=1; $row<=8; $row++) {
                   foreach my $cat (keys(%category_members)) {
                       if ($category_positions{$cat} ne "$col,$row") { next; }
                       $output.='<div class="LC_Box LC_400Box">';
               $output.='<h3 class="LC_hcell">'.&mt($category_names{$cat}).'</h3>';
                       $output.='<table>';
                       my %active=();
                       foreach my $menu_item (split(/\:/,$category_members{$cat})) {
                           if ($inlineremote[$menu_item]) {
                               $active{$menu_item}=1;
                           }
                       }
                       foreach my $item (sort(keys(%active))) {
                           $output.=$inlineremote[$item];
                       }
                       $output.='</table>';
                       $output.='</div>';
                   }
               }
               $output.="</td>";
           }
           $output.="</tr></table>";
     }      }
     $output.="</tr></table>";  
     return $output;      return $output;
 }  }
   
Line 1176  sub rawconfig { Line 1470  sub rawconfig {
     my $show_course=&Apache::loncommon::show_course();      my $show_course=&Apache::loncommon::show_course();
     my $author=$env{'user.author'};      my $author=$env{'user.author'};
     my $crs='';      my $crs='';
       my $crstype='';
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
        $crs='/'.$env{'request.course.id'};         $crs='/'.$env{'request.course.id'};
        if ($env{'request.course.sec'}) {         if ($env{'request.course.sec'}) {
    $crs.='_'.$env{'request.course.sec'};     $crs.='_'.$env{'request.course.sec'};
        }         }
        $crs=~s/\_/\//g;         $crs=~s/\_/\//g;
          $crstype = &Apache::loncommon::course_type();
     }      }
     my $pub=($env{'request.state'} eq 'published');      my $pub=($env{'request.state'} eq 'published');
     my $con=($env{'request.state'} eq 'construct');      my $con=($env{'request.state'} eq 'construct');
Line 1191  sub rawconfig { Line 1487  sub rawconfig {
         my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc,$cat)=split(/\:/,$line);          my ($row,$col,$pro,$prt,$img,$top,$bot,$act,$desc,$cat)=split(/\:/,$line);
         $prt=~s/\$uname/$uname/g;          $prt=~s/\$uname/$uname/g;
         $prt=~s/\$udom/$udom/g;          $prt=~s/\$udom/$udom/g;
         $prt=~s/\$crs/$crs/g;           if ($prt =~ /\$crs/) {
               next unless ($env{'request.course.id'});
               next if ($crstype eq 'Community');
               $prt=~s/\$crs/$crs/g;
           } elsif ($prt =~ /\$cmty/) {
               next unless ($env{'request.course.id'});
               next if ($crstype ne 'Community');
               $prt=~s/\$cmty/$crs/g;
           }
         $prt=~s/\$requested_domain/$requested_domain/g;          $prt=~s/\$requested_domain/$requested_domain/g;
         if ($category_names{$cat}!~/\w/) { $cat='oth'; }          if ($category_names{$cat}!~/\w/) { $cat='oth'; }
         my $type = &Apache::loncommon::course_type();  
 #  
 # I don't think we support this  
 #  
 #        if ($type eq 'Group') {  
 #            $desc = &convert_menu_function($desc,$type);  
 #        }  
         if ($pro eq 'clear') {          if ($pro eq 'clear') {
     $output.=&clear($row,$col);      $output.=&clear($row,$col);
         } elsif ($pro eq 'any') {          } elsif ($pro eq 'any') {
Line 1227  sub rawconfig { Line 1524  sub rawconfig {
   $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);    $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat);
             }              }
         } elsif (($pro=~/^p(\w+)/) && ($prt)) {          } elsif (($pro=~/^p(\w+)/) && ($prt)) {
     if (&Apache::lonnet::allowed($1,$prt)) {              my $priv = $1;
               if ($priv =~ /^mdc(Course|Community)/) {
                   if ($crstype eq $1) {
                       $priv = 'mdc';
                   } else {
                       next;
                   }
               }
       if (&Apache::lonnet::allowed($priv,$prt)) {
                $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);                 $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
             }              }
         } elsif ($pro eq 'course') {          } elsif ($pro eq 'course')  {
             if ($env{'request.course.fn'}) {              if (($env{'request.course.fn'}) && ($crstype ne 'Community')) {
                $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);                 $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
     }      }
           } elsif ($pro eq 'community')  {
               if (($env{'request.course.fn'}) && ($crstype eq 'Community')) {
                  $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
               }
         } elsif ($pro =~ /^courseenv_(.*)$/) {          } elsif ($pro =~ /^courseenv_(.*)$/) {
             my $key = $1;              my $key = $1;
             if ($env{'course.'.$env{'request.course.id'}.'.'.$key}) {              if ($crstype ne 'Community') {
                 $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);                  my $coursepref = $env{'course.'.$env{'request.course.id'}.'.'.$key};
                   if ($key eq 'canuse_pdfforms') {
                       if ($env{'request.course.id'} && $coursepref eq '') {
                           my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
                           $coursepref = $domdefs{'canuse_pdfforms'};
                       }
                   }
                   if ($coursepref) { 
                       $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
                   }
               }
           } elsif ($pro =~ /^communityenv_(.*)$/) {
               my $key = $1;
               if ($crstype eq 'Community') {
                   my $coursepref = $env{'course.'.$env{'request.course.id'}.'.'.$key};
                   if ($key eq 'canuse_pdfforms') {
                       if ($env{'request.course.id'} && $coursepref eq '') {
                           my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
                           $coursepref = $domdefs{'canuse_pdfforms'};
                       }
                   }
                   if ($coursepref) { 
                       $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
                   }
             }              }
         } elsif ($pro =~ /^course_(.*)$/) {          } elsif ($pro =~ /^course_(.*)$/) {
             # Check for permissions inside of a course              # Check for permissions inside of a course
             if (($env{'request.course.id'}) &&              if (($env{'request.course.id'}) && ($crstype ne 'Community') && 
                 (&Apache::lonnet::allowed($1,$env{'request.course.id'}.                  (&Apache::lonnet::allowed($1,$env{'request.course.id'}.
             ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))              ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))
                  )) {                   )) {
                 $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);                  $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
     }      }
           } elsif ($pro =~ /^community_(.*)$/) {
               # Check for permissions inside of a community
               if (($env{'request.course.id'}) && ($crstype eq 'Community') &&   
                   (&Apache::lonnet::allowed($1,$env{'request.course.id'}.
               ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))
                    )) {
                   $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);
               }
         } elsif ($pro eq 'author') {          } elsif ($pro eq 'author') {
             if ($author) {              if ($author) {
                 if ((($prt eq 'rca') && ($env{'request.role'}=~/^ca/)) ||                  if ((($prt eq 'rca') && ($env{'request.role'}=~/^ca/)) ||
Line 1374  function gonav(url) { Line 1714  function gonav(url) {
 NAVCONTROL  NAVCONTROL
 }  }
   
   sub dc_popup_js {
       my %lt = &Apache::lonlocal::texthash(
                                             more => '(More ...)',
                                             less => '(Less ...)',
                                           );
       return <<"END";
   
   function showCourseID() {
       document.getElementById('dccid').style.display='block';
       document.getElementById('dccid').style.textAlign='left';
       document.getElementById('dccid').style.textFace='normal';
       document.getElementById('dccidtext').innerHTML ='<a href="javascript:hideCourseID();">$lt{'less'}</a>';
       return;
   }
   
   function hideCourseID() {
       document.getElementById('dccid').style.display='none';
       document.getElementById('dccidtext').innerHTML ='<a href="javascript:showCourseID()">$lt{'more'}</a>';
       return;
   }
   
   END
   
   }
   
 sub utilityfunctions {  sub utilityfunctions {
     my $caller = shift;      my ($caller,$custommenu) = @_;
     unless ($env{'environment.remote'} eq 'off' ||       unless ($env{'environment.remote'} eq 'off' || 
             $caller eq '/adm/menu') {               $caller eq '/adm/menu') { 
             return ''; }              return ''; }
                    
       my $gcimenujs;
       if ($custommenu) {
           my %concepttests = &Apache::loncommon::existing_gcitest_courses();
           my $managetesturl = '/adm/menu';
           my $createtesturl = '/adm/requestcourse';
           if (($env{'request.course.id'}) &&
               ($env{'course.'.$env{'request.course.id'}.'.domain'} eq 'gci')) {
               my @items = keys(%concepttests);
               if (@items== 1) {
                   my $newrole = $items[0];
                   $newrole =~ s{_}{/};
                   $managetesturl = '/adm/roles?selectrole=1&cc./'.$newrole.'=1';
               } else {
                   $managetesturl = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2fmenu';
               }
           }
           if ($env{'request.course.id'}) {
               $createtesturl = '/adm/roles?selectrole=1&cm=1&orgurl=%2fadm%2frequestcourse';
           }
           $gcimenujs = <<"ENDCUSTOM";
   
   function switchpage(caller) {
       if (caller == 'review') {
           document.location.href = '/adm/roles?selectrole=1&st./gci/9615072b469884921gcil1=1';
       }
       if (caller == 'submit') {
           document.location.href = '/adm/roles?selectrole=1&st./gci/1H96711d710194bfegcil1=1';
       }
       if (caller == 'createtest') {
           document.location.href = '$createtesturl';
       }
       if (caller == 'managetest') {
           document.location.href = '$managetesturl';
       }
       return;
   }
   
   ENDCUSTOM
       }
          
     my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));      my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0]));
       if ($currenturl =~ m{^/adm/wrapper/ext/}) {
           if ($env{'request.external.querystring'}) {
               $currenturl .= ($currenturl=~/\?/)?'&':'?'.$env{'request.external.querystring'};
           }
       }
     $currenturl=&Apache::lonenc::check_encrypt(&unescape($currenturl));      $currenturl=&Apache::lonenc::check_encrypt(&unescape($currenturl));
           
     my $currentsymb=&Apache::lonenc::check_encrypt($env{'request.symb'});      my $currentsymb=&Apache::lonenc::check_encrypt($env{'request.symb'});
     my $nav_control=&nav_control_js();      my $nav_control=&nav_control_js();
   
       my $dc_popup_cid;
       if ($env{'user.adv'} && exists($env{'user.role.dc./'.
                           $env{'course.'.$env{'request.course.id'}.
                                    '.domain'}.'/'})) {
           $dc_popup_cid = &dc_popup_js();
       }
   
     my $start_page_annotate =       my $start_page_annotate = 
         &Apache::loncommon::start_page('Annotator',undef,          &Apache::loncommon::start_page('Annotator',undef,
        {'only_body' => 1,         {'only_body' => 1,
Line 1413  return (<<ENDUTILITY) Line 1830  return (<<ENDUTILITY)
     var currentSymb="$currentsymb";      var currentSymb="$currentsymb";
   
 $nav_control  $nav_control
   $dc_popup_cid
   
   $gcimenujs
   
 function go(url) {  function go(url) {
    if (url!='' && url!= null) {     if (url!='' && url!= null) {
Line 1422  function go(url) { Line 1842  function go(url) {
    }     }
 }  }
   
   function gotop(url) {
       if (url!='' && url!= null) {
           top.location.href = url;
       }
   }
   
 function gopost(url,postdata) {  function gopost(url,postdata) {
    if (url!='') {     if (url!='') {
       this.document.server.action=url;        this.document.server.action=url;
Line 1498  function catalog_info() { Line 1924  function catalog_info() {
 }  }
   
 function chat_win() {  function chat_win() {
    lonchat=window.open('/res/adm/pages/chatroom.html',"LONchat",'height=320,width=280,resizable=yes,location=no,menubar=no,toolbar=no');     lonchat=window.open('/res/adm/pages/chatroom.html',"LONchat",'height=320,width=480,resizable=yes,location=no,menubar=no,toolbar=no');
 }  }
   
 function group_chat(group) {  function group_chat(group) {
Line 1592  sub get_nav_status { Line 2018  sub get_nav_status {
     return $navstatus;      return $navstatus;
 }  }
   
 #FIXME this needs to move into mydesk.tab and the other locations   
 # the text is generated  
 #  
 # We currently do not support this anyway.  
 #  
 #sub convert_menu_function {  
 #    my ($rolename,$type) = @_;  
 #    if ($type eq 'Group') {  
 #        $rolename =~ s/student/member/g;  
 #        $rolename =~ s/group/team/g;  
 #        $rolename =~ s/course/group/g;  
 #        $rolename =~ s/Course/Group/g;  
 #    }  
 #    return $rolename;  
 #}  
   
 sub hidden_button_check {  sub hidden_button_check {
     my $hidden;      my $hidden;
     if ($env{'request.course.id'} eq '') {      if ($env{'request.course.id'} eq '') {
         return;          return;
     }      }
     if ($env{'request.role.adv'}) {      if ($env{'request.role.adv'}) {
         return;          unless (&Apache::loncommon::needs_gci_custom()) {
               return;
           }
     }      }
     my $buttonshide = &Apache::lonnet::EXT('resource.0.buttonshide');      my $buttonshide = &Apache::lonnet::EXT('resource.0.buttonshide');
     return $buttonshide;       return $buttonshide; 
Line 1622  sub hidden_button_check { Line 2034  sub hidden_button_check {
   
 sub roles_selector {  sub roles_selector {
     my ($cdom,$cnum) = @_;      my ($cdom,$cnum) = @_;
       my $crstype = &Apache::loncommon::course_type();
     my $now = time;      my $now = time;
     my (%courseroles,%seccount);      my (%courseroles,%seccount);
     my $is_cc;      my $is_cc;
     my $role_selector;      my $role_selector;
     if ($env{'user.role.cc./'.$cdom.'/'.$cnum}) {      my $ccrole;
         my ($start,$end) = split(/\./,$env{'user.role.cc./'.$cdom.'/'.$cnum});      if ($crstype eq 'Community') {
           $ccrole = 'co';
       } else {
           $ccrole = 'cc';
       } 
       if ($env{'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum}) {
           my ($start,$end) = split(/\./,$env{'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum});
                   
         if ((($start) && ($start<0)) ||           if ((($start) && ($start<0)) || 
             (($end) && ($end<$now))  ||              (($end) && ($end<$now))  ||
Line 1671  sub roles_selector { Line 2090  sub roles_selector {
             }              }
         }          }
     }      }
     my @roles_order = ('cc','in','ta','ep','ad','st');      my $switchtext;
       if ($crstype eq 'Community') {
           $switchtext = &mt('Switch community role to...')
       } else {
           $switchtext = &mt('Switch course role to...')
       }
       my @roles_order = ($ccrole,'in','ta','ep','ad','st');
     if (keys(%courseroles) > 1) {      if (keys(%courseroles) > 1) {
         $role_selector = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles);          $role_selector = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles);
         $role_selector .= '<form name="rolechooser" method="post" action="/adm/roles">          $role_selector .= '<form name="rolechooser" method="post" action="/adm/roles">
                           <select name="switchrole" onchange="javascript:adhocRole('."'switchrole'".')">';                            <select name="switchrole" onchange="javascript:adhocRole('."'switchrole'".')">';
         $role_selector .= '<option value="">'.&mt('Switch course role to...').'</option>';          $role_selector .= '<option value="">'.$switchtext.'</option>';
         foreach my $role (@roles_order) {          foreach my $role (@roles_order) {
             if (defined($courseroles{$role})) {              if (defined($courseroles{$role})) {
                 $role_selector .= "\n".'<option value="'.$role.'">'.&Apache::lonnet::plaintext($role).'</option>';                   $role_selector .= "\n".'<option value="'.$role.'">'.&Apache::lonnet::plaintext($role,$crstype).'</option>'; 
             }              }
         }          }
         foreach my $role (sort(keys(%courseroles))) {          foreach my $role (sort(keys(%courseroles))) {
Line 1867  END Line 2292  END
   
 BEGIN {  BEGIN {
     if (! defined($readdesk)) {      if (! defined($readdesk)) {
  {          {
     my $tabfile = $Apache::lonnet::perlvar{'lonTabDir'}.'/mydesk.tab';              my $tabfile = $Apache::lonnet::perlvar{'lonTabDir'}.'/mydesk.tab';
     if ( CORE::open( my $config,"<$tabfile") ) {              if ( CORE::open( my $config,"<$tabfile") ) {
  while (my $configline=<$config>) {                  while (my $configline=<$config>) {
     $configline=(split(/\#/,$configline))[0];                      $configline=(split(/\#/,$configline))[0];
     $configline=~s/^\s+//;                      $configline=~s/^\s+//;
     chomp($configline);                      chomp($configline);
                     if ($configline=~/^cat\:/) {                      if ($configline=~/^cat\:/) {
                        my @entries=split(/\:/,$configline);                          my @entries=split(/\:/,$configline);
                        $category_positions{$entries[2]}=$entries[1];                          $category_positions{$entries[2]}=$entries[1];
                        $category_names{$entries[2]}=$entries[3];                          $category_names{$entries[2]}=$entries[3];
     } elsif ($configline) {                      } elsif ($configline=~/^prim\:/) {
  push(@desklines,$configline);                          my @entries = (split(/\:/, $configline))[1..5];
     }                          push @primary_menu, \@entries;
  }                      } elsif ($configline=~/^scnd\:/) {
  CORE::close($config);                          my @entries = (split(/\:/, $configline))[1..5];
     }                          push @secondary_menu, \@entries; 
  }                      } elsif ($configline) {
  $readdesk='done';                          push(@desklines,$configline);
                       }
                   }
                   CORE::close($config);
               }
           }
           $readdesk='done';
     }      }
 }  }
   
 1;  1;
 __END__  __END__
   
   
   
   
   
   
   

Removed from v.1.282  
changed lines
  Added in v.1.309.2.7


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