Diff for /loncom/interface/lonmenu.pm between versions 1.295 and 1.315

version 1.295, 2009/10/26 21:19:22 version 1.315, 2010/03/03 21:33:15
Line 42  Coordinates the response to clicking an Line 42  Coordinates the response to clicking an
 This is part of the LearningOnline Network with CAPA project  This is part of the LearningOnline Network with CAPA project
 described at http://www.lon-capa.org.  described at http://www.lon-capa.org.
   
   =head1 GLOBAL VARIABLES
   
   =over
   
   =item @desklines
   
   Each element of this array contains a line of mydesk.tab that doesn't start with
   cat, prim or scnd. 
   It gets filled in the BEGIN block of this module.
   
   =item %category_names
   
   The keys of this hash are the abbreviations used in mydesk.tab in those lines that 
   start with cat, the values are strings representing titles. 
   It gets filled in the BEGIN block of this module.
   
   =item %category_members
   
   TODO 
   
   =item %category_positions
   
   The keys of this hash are the abbreviations used in mydesk.tab in those lines that
   start with cat, its values are position vectors (column, row). 
   It gets filled in the BEGIN block of this module.
   
   =item $readdesk
   
   Indicates that mydesk.tab has been read. 
   It is set to 'done' in the BEGIN block of this module.
   
   =item @primary_menu
   
   The elements of this array reference arrays that are made up of the components
   of those lines of mydesk.tab that start with prim.
   It is used by primary_menu() to generate the corresponding menu.
   It gets filled in the BEGIN block of this module.
   
   =item @secondary_menu
   
   The elements of this array reference arrays that are made up of the components
   of those lines of mydesk.tab that start with scnd.
   It is used by secondary_menu() to generate the corresponding menu.
   It gets filled in the BEGIN block of this module.
   
   =back
   
 =head1 SUBROUTINES  =head1 SUBROUTINES
   
 =over  =over
   
 Little texts  =item prep_menuitems(\@menuitem)
   
   This routine wraps a menuitem in proper HTML. It is used by primary_menu() and 
   secondary_menu().
   
 =item initlittle()  =item primary_menu()
   
 =item menubuttons()  This routine 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 
   
 This gets called at the top of the body section  =item secondary_menu()
   
   Same as primary_menu() but operates on @secondary_menu.
   
 =item show_return_link()  =item show_return_link()
   
Line 150  sub prep_menuitem { Line 205  sub prep_menuitem {
     } else {             # textual Link      } else {             # textual Link
         $link = &mt($$menuitem[3]);          $link = &mt($$menuitem[3]);
     }      }
       if($$menuitem[4] eq 'newmsg'){   #special style for New Messages
           return '<li><a href="'.$$menuitem[0].'"><span class="LC_new_message">'.$link.'</span></a></li>';
       }
     return '<li><a href="'.$$menuitem[0].'">'.$link.'</a></li>';      return '<li><a href="'.$$menuitem[0].'">'.$link.'</a></li>';
 }  }
   
Line 164  sub primary_menu { Line 222  sub primary_menu {
     # (link url, icon path, alt text, link text, condition)      # (link url, icon path, alt text, link text, condition)
     foreach my $menuitem (@primary_menu) {      foreach my $menuitem (@primary_menu) {
         # evaluate conditions           # evaluate conditions 
           next if    ref($menuitem)       ne 'ARRAY';    #
         next if    $$menuitem[4]        eq 'nonewmsg'  # show links depending on          next if    $$menuitem[4]        eq 'nonewmsg'  # show links depending on
                 && &Apache::lonmsg::mynewmail();       # whether a new msg                   && &Apache::lonmsg::mynewmail();       # whether a new msg 
         next if    $$menuitem[4]        eq 'newmsg'    # arrived or not          next if    $$menuitem[4]        eq 'newmsg'    # arrived or not
Line 183  sub primary_menu { Line 242  sub primary_menu {
         if ($$menuitem[3] eq 'Help') { # special treatment for helplink          if ($$menuitem[3] eq 'Help') { # special treatment for helplink
             $menu .= '<li>'.&Apache::loncommon::top_nav_help('Help').'</li>';              $menu .= '<li>'.&Apache::loncommon::top_nav_help('Help').'</li>';
         } else {          } else {
             if (ref($menuitem) eq 'ARRAY') {               my @items = @{$menuitem};
                 my @items = @{$menuitem};              $items[0] = 'javascript:'.$menuitem->[0].';';
                 $items[0] = 'javascript:'.$menuitem->[0].';';              $menu .= &prep_menuitem(\@items);
                 $menu .= &prep_menuitem(\@items);  
             }  
         }          }
     }      }
   
Line 210  sub secondary_menu { Line 267  sub secondary_menu {
                      $env{'course.' . $env{'request.course.id'} . '.num'});                       $env{'course.' . $env{'request.course.id'} . '.num'});
     foreach my $menuitem (@secondary_menu) {      foreach my $menuitem (@secondary_menu) {
         # evaluate conditions           # evaluate conditions 
           next if    ref($menuitem)  ne 'ARRAY';
         next if    $$menuitem[4]   ne 'always'          next if    $$menuitem[4]   ne 'always'
                 && !$env{'request.course.id'};                  && !$env{'request.course.id'};
         next if    $$menuitem[4]   eq 'showreturn'          next if    $$menuitem[4]   eq 'showreturn'
Line 230  sub secondary_menu { Line 288  sub secondary_menu {
         next if $$menuitem[4] =~ /^(no|)remotenavCommunity$/           next if $$menuitem[4] =~ /^(no|)remotenavCommunity$/ 
                 && $crstype ne 'Community';                  && $crstype ne 'Community';
         next if    $$menuitem[4]   =~ /showgroups$/          next if    $$menuitem[4]   =~ /showgroups$/
                 && $canviewgrps                  && !$canviewgrps
                 && !%groups;                  && !%groups;
   
         if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {          if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {
             # special treatment for role selector              # special treatment for role selector
             my $roles_selector = roles_selector(              my $roles_selector = &roles_selector(
                         $env{'course.' . $env{'request.course.id'} . '.domain'},                          $env{'course.' . $env{'request.course.id'} . '.domain'},
                         $env{'course.' . $env{'request.course.id'} . '.num'}  );                          $env{'course.' . $env{'request.course.id'} . '.num'}  );
   
             $menu .= $roles_selector ? "<li>$roles_selector</li>"              $menu .= $roles_selector ? "<li>$roles_selector</li>"
                                      : '';                                       : '';
         } else {          } elsif ($env{'environment.remotenavmap'} eq 'on') {
             if ($env{'environment.remotenavmap'} eq 'on') {              # open link using javascript when remote navmap is activated
                 my @items = @{$menuitem};               my @items = @{$menuitem}; 
                 if ($menuitem->[4] eq 'remotenav') {              if ($menuitem->[4] eq 'remotenav') {
                     $items[0] = "javascript:gonav('$menuitem->[0]');";                  $items[0] = "javascript:gonav('$menuitem->[0]');";
                 } else {  
                     $items[0] = "javascript:go('$menuitem->[0]');";  
                 }  
                 $menu .= &prep_menuitem(\@items);  
             } else {              } else {
                 $menu .= &prep_menuitem(\@$menuitem);                  $items[0] = "javascript:go('$menuitem->[0]');";
             }              }
               $menu .= &prep_menuitem(\@items);
           } else {
               $menu .= &prep_menuitem(\@$menuitem);
         }          }
     }      }
     if ($menu =~ /\[url\].*\[symb\]/) {      if ($menu =~ /\[url\].*\[symb\]/) {
Line 278  sub secondary_menu { Line 335  sub secondary_menu {
     return "<ul id=\"LC_secondary_menu\">$menu</ul>";      return "<ul id=\"LC_secondary_menu\">$menu</ul>";
 }  }
   
   
 #  
 # This routine returns a translated hash for the menu items in the top inline menu row  
 # Probably should be in mydesk.tab  
   
 #SD this sub is deprecated - don't use it  
 sub initlittle {  
     return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',  
        'nav' => 'Course Contents',  
        'main' => 'Main Menu',  
                                        'roles' => (&Apache::loncommon::show_course()?  
                                                     'Courses':'Roles'),  
                                        'other' => 'Other Roles',  
                                        'docs' => 'Edit Course',  
                                        'exit' => 'Logout',  
                                        'login' => 'Log In',  
        'launch' => 'Launch Remote Control',  
                                        'groups' => 'Groups',  
                                        '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 {  
     my $forcereg=shift;  
     my $titletable=shift;  
 #  
 # Early-out for pages that should not have a menu, triggered by query string "inhibitmenu=yes"  
 #  
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},  
     ['inhibitmenu']);  
     if (($env{'form.inhibitmenu'} eq 'yes') ||  
         ($ENV{'REQUEST_URI'} eq '/adm/logout')) { return ''; }  
   
     if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { return ''; }  
   
     my %lt=&initlittle();  
     my $navmaps='';  
     my $reloadlink='';  
     my $docs='';  
     my $groups='';  
     my $roles='<a href="/adm/roles" target="_top">'.$lt{'roles'}.'</a>';  
     my $role_selector;  
     my $showgroups=0;  
     my ($cnum,$cdom);  
 #  
 # if the URL is hidden, symbs and the non-versioned version of the URL would be encrypted  
 #  
     my $escurl=&escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'}));  
     my $escsymb=&escape(&Apache::lonenc::check_encrypt($env{'request.symb'}));  
   
     my $logo=&Apache::loncommon::lonhttpdurl("/adm/lonIcons/minilogo.gif");  
     $logo = '<a href="/adm/about.html"><img src="'.  
  $logo.'" alt="LON-CAPA Logo" class="LC_noBorder" /></a>';  
   
     if ($env{'request.state'} eq 'construct') {  
 #  
 # We are in construction space  
 #  
         if (($env{'request.noversionuri'} eq '') || (!defined($env{'request.noversionuri'}))) {  
             my $returnurl = $env{'request.filename'};  
             $returnurl =~ s:^/home/([^/]+)/public_html/(.*)$:/priv/$1/$2:;  
             $escurl = &escape($returnurl);  
         }  
     }  
     if ($env{'request.course.id'}) {  
 #  
 # We are in a course  
 #  
         $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};  
         $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
         my %coursegroups;  
         my $viewgrps_permission =  
     &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));  
         if (!$viewgrps_permission) {  
             %coursegroups = &Apache::lonnet::get_active_groups($env{'user.domain'},$env{'user.name'},$cdom,$cnum);  
  }  
         if ((keys(%coursegroups) > 0) || ($viewgrps_permission)) {  
             $showgroups = 1;  
         }  
         $role_selector = &roles_selector($cdom,$cnum);  
         if ($role_selector) {  
             $roles = '<span class="LC_nobreak">'.$role_selector.'&nbsp;&nbsp;<a href="/adm/roles" target="_top">'.$lt{'other'}.'</a></span>';  
         }  
     }  
   
     if ($env{'environment.remote'} eq 'off') {  
 # Remote Control is switched off  
 # figure out colors  
         my %lt=&initlittle();  
   
         my $domain=&Apache::loncommon::determinedomain();  
         my $function=&Apache::loncommon::get_users_function();  
         my $link=&Apache::loncommon::designparm($function.'.link',$domain);  
         my $alink=&Apache::loncommon::designparm($function.'.alink',$domain);  
         my $vlink=&Apache::loncommon::designparm($function.'.vlink',$domain);  
         my $sidebg=&Apache::loncommon::designparm($function.'.sidebg',$domain);  
   
         if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') {  
             return (<<ENDINLINEMENU);  
             <ol class="LC_primary_menu LC_right">  
                 <li>$logo</li>  
                 <li><a href="/adm/roles" target="_top">$lt{'login'}</a></li>  
             </ol>  
             <hr />  
 ENDINLINEMENU  
         }  
         $roles = '<a href="/adm/roles" target="_top">'.$lt{'roles'}.'</a>';  
 # Do we have a NAV link?  
         if ($env{'request.course.id'}) {  
     my $link='/adm/navmaps?postdata='.$escurl.'&amp;postsymb='.  
  $escsymb;  
     if ($env{'environment.remotenavmap'} eq 'on') {  
  $link="javascript:gonav('".$link."')";  
     }  
     $navmaps=(<<ENDNAV);  
 <li><a href="$link" target="_top">$lt{'nav'}</a></li>  
 ENDNAV  
             my $is_community =   
                 (&Apache::loncommon::course_type() eq 'Community');  
     if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {  
                 my $text = ($is_community) ? $lt{'gdoc'} : $lt{'docs'};  
  $docs=(<<ENDDOCS);  
 <li><a href="/adm/coursedocs" target="_top">$text</a></li>  
 ENDDOCS  
             }  
             if ($showgroups) {  
                 $groups =(<<ENDGROUPS);  
 <li><a href="/adm/coursegroups" target="_top">$lt{'groups'}</a></li>  
 ENDGROUPS  
             }  
     if (&show_return_link()) {  
                 my $escreload=&escape('return:');  
                 $reloadlink=(<<ENDRELOAD);  
 <li><a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a></li>  
 ENDRELOAD  
             }  
             if ($role_selector) {  
             #$roles = '<td>'.$role_selector.'</td><td><a href="/adm/roles" target="_top">'.$lt{'other'}.'</a></td>';  
  $role_selector = '<li>'.$role_selector.'</li>';  
             }  
         }  
  if (($env{'request.state'} eq 'construct') && ($env{'request.course.id'})) {  
     my $escreload=&escape('return:');  
     $reloadlink=(<<ENDCRELOAD);  
 <li><a href="/adm/flip?postdata=$escreload" target="_top">$lt{'ret'}</a></li>  
 ENDCRELOAD  
         }  
     my $reg     = $forcereg ? &innerregister($forcereg,$titletable) : '';  
     my $form    = &serverform();  
     my $utility = &utilityfunctions();  
   
     #Prepare the message link that indicates the arrival of new mail  
     my $messagelink = &Apache::lonmsg::mynewmail() ? "Message (new)" : "Message";  
        $messagelink = '<a href="javascript:go(\'/adm/communicate\');">'  
                       . mt($messagelink) .'</a>';  
   
     my $helplink = &Apache::loncommon::top_nav_help('Help');  
  return (<<ENDINLINEMENU);  
 <script type="text/javascript">  
 // <![CDATA[  
 // BEGIN LON-CAPA Internal  
 $utility  
 // ]]>  
 </script>  
 <ol class="LC_primary_menu LC_right">  
  <li>$logo</li>  
  <li>$messagelink</li>  
  <li>$roles</li>  
  <li>$helplink</li>  
  <li><a href="/adm/logout" target="_top">$lt{'exit'}</a></li>  
 </ol>  
 <ul id="LC_secondary_menu">  
 <li><a href="/adm/menu" target="_top">$lt{'main'}</a></li>  
 $reloadlink  
 $navmaps  
 $docs  
 $groups  
 $role_selector  
 </ul>  
 $form  
 <script type="text/javascript">  
 // END LON-CAPA Internal  
 </script>  
 $reg  
 ENDINLINEMENU  
     } else {  
  return '';  
     }  
 }  
   
 sub show_return_link {  sub show_return_link {
     return (($env{'request.noversionuri'}=~m{^/(res|public)/} &&      return (($env{'request.noversionuri'}=~m{^/(res|public)/} &&
      $env{'request.symb'} eq '')       $env{'request.symb'} eq '')
Line 513  sub registerurl { Line 378  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 546  sub innerregister { Line 411  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 Contents",           my $contentstext;
           if ($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Community') {
               $contentstext = &mt('Community Contents');
           } else {
               $contentstext = &mt('Course Contents');
           }
           my @crumbs = ({text  => $contentstext, 
                        href  => "Javascript:gonav('/adm/navmaps')"});                         href  => "Javascript:gonav('/adm/navmaps')"});
   
         if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) {           if ($mapurl ne $env{'course.'.$env{'request.course.id'}.'.url'}) { 
Line 562  sub innerregister { Line 433  sub innerregister {
   
         &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) ||   unless (($env{'request.state'} eq 'edit') || ($newmail) ||
  ($env{'request.state'} eq 'construct') ||   ($env{'request.state'} eq 'construct') ||
  ($env{'form.register'})) {   ($env{'form.register'})) {
Line 578  sub innerregister { Line 449  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 684  sub innerregister { Line 555  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 736  s&7&1&del.gif&delete[_1]&resource[_2]&go Line 619  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 812  ENDMENUITEMS Line 703  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') {          Apache::lonhtmlcommon::clear_breadcrumb_tools();
                         $inlinebuttons=(<<ENDARROWSINLINE);  
 <tr><td>              Apache::lonhtmlcommon::add_breadcrumb_tool(
 $inlineremote[21] $inlineremote[23]                  'navigation', @inlineremote[21,23]);
 ENDARROWSINLINE  
                         if (&hidden_button_check() ne 'yes') {          if(hidden_button_check() ne 'yes') {
                             $inlinebuttons .= (<<ENDINLINEICONS);              Apache::lonhtmlcommon::add_breadcrumb_tool(
 $inlineremote[61] $inlineremote[63]                  'tools', @inlineremote[93,91,81,82,83]);
 $inlineremote[71] $inlineremote[72] $inlineremote[73]  
 $inlineremote[81] $inlineremote[82] $inlineremote[83]              #publish button in construction space
 $inlineremote[91] $inlineremote[92] $inlineremote[93]</td></tr>              if ($env{'request.state'} eq 'construct'){
 ENDINLINEICONS                  Apache::lonhtmlcommon::add_breadcrumb_tool(
                         }                       'advtools', @inlineremote[63]);
                     } else {              }else{
  if ($inlineremote[21] ne '' || $inlineremote[23] ne '') {                  Apache::lonhtmlcommon::add_breadcrumb_tool(
     $inlinebuttons=(<<ENDFIRSTLINE);                       'tools', @inlineremote[63]);
 <tr><td>$inlineremote[21]</td><td>&nbsp;</td><td>$inlineremote[23]</td></tr>              }
 ENDFIRSTLINE              
                         }  
                         if (&hidden_button_check() ne 'yes') {               Apache::lonhtmlcommon::add_breadcrumb_tool(
     foreach my $row (6..9) {                  'advtools', @inlineremote[61,71,72,73,92]);
  if ($inlineremote[${row}.'1'] ne ''          }
     || $inlineremote[$row.'2'] ne ''  
     || $inlineremote[$row.'3'] ne '') {  #       # Registered, textual output
     $inlinebuttons .= <<"ENDLINE";  #        if ( $env{'environment.icons'} eq 'iconsonly' ) {
 <tr><td>$inlineremote["${row}1"]</td><td>$inlineremote["${row}2"]</td><td>$inlineremote["${row}3"]</td></tr>  #            $inlinebuttons = (<<ENDARROWSINLINE);
 ENDLINE  #<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
   #                    }
   #                }
   #            }
   #        }
       }
           $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  <!-- $separator -->
 <script type="text/javascript">  <script type="text/javascript">
 // END LON-CAPA Internal  // END LON-CAPA Internal
 </script>  </script>
Line 1214  sub switch { Line 1131  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 1240  sub switch { Line 1157  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 1274  sub inlinemenu { Line 1191  sub inlinemenu {
     undef(%category_members);      undef(%category_members);
 # calling rawconfig with "1" will evaluate mydesk.tab, even if there is no active remote control  # calling rawconfig with "1" will evaluate mydesk.tab, even if there is no active remote control
     &rawconfig(1);      &rawconfig(1);
     my $output='<table id="LC_mainmenu"><tr>';      my $output='<table><tr>';
     for (my $col=1; $col<=2; $col++) {      for (my $col=1; $col<=2; $col++) {
         $output.='<td class="LC_mainmenu_col_fieldset">';          $output.='<td class="LC_mainmenu_col_fieldset">';
         for (my $row=1; $row<=8; $row++) {          for (my $row=1; $row<=8; $row++) {
             foreach my $cat (keys(%category_members)) {              foreach my $cat (keys(%category_members)) {
                if ($category_positions{$cat} ne "$col,$row") { next; }                 if ($category_positions{$cat} ne "$col,$row") { next; }
                #$output.='<table><tr><td colspan="4" class="LC_menubuttons_category">'.&mt($category_names{$cat}).'</td></tr>';                 #$output.='<table><tr><td colspan="4" class="LC_menubuttons_category">'.&mt($category_names{$cat}).'</td></tr>';
                $output.='<div class="LC_Box">';                 $output.='<div class="LC_Box LC_400Box">';
        $output.='<h4 class="LC_hcell">'.&mt($category_names{$cat}).'</h4>';         $output.='<h3 class="LC_hcell">'.&mt($category_names{$cat}).'</h3>';
                $output.='<table>';                 $output.='<table>';
                my %active=();                 my %active=();
                foreach my $menu_item (split(/\:/,$category_members{$cat})) {                 foreach my $menu_item (split(/\:/,$category_members{$cat})) {
Line 1399  sub rawconfig { Line 1316  sub rawconfig {
             }              }
         } elsif ($pro =~ /^courseenv_(.*)$/) {          } elsif ($pro =~ /^courseenv_(.*)$/) {
             my $key = $1;              my $key = $1;
             if (($env{'course.'.$env{'request.course.id'}.'.'.$key}) &&               if ($crstype ne 'Community') {
                 ($crstype ne 'Community')) {                  my $coursepref = $env{'course.'.$env{'request.course.id'}.'.'.$key};
                 $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);                  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_(.*)$/) {          } elsif ($pro =~ /^communityenv_(.*)$/) {
             my $key = $1;              my $key = $1;
             if (($env{'course.'.$env{'request.course.id'}.'.'.$key}) &&               if ($crstype eq 'Community') {
                 ($crstype eq 'Community')) {                  my $coursepref = $env{'course.'.$env{'request.course.id'}.'.'.$key};
                 $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat);                  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
Line 1552  function gonav(url) { Line 1485  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 = shift;
     unless ($env{'environment.remote'} eq 'off' ||       unless ($env{'environment.remote'} eq 'off' || 
Line 1569  sub utilityfunctions { Line 1527  sub utilityfunctions {
     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 1596  return (<<ENDUTILITY) Line 1561  return (<<ENDUTILITY)
     var currentSymb="$currentsymb";      var currentSymb="$currentsymb";
   
 $nav_control  $nav_control
   $dc_popup_cid
   
 function go(url) {  function go(url) {
    if (url!='' && url!= null) {     if (url!='' && url!= null) {
Line 1605  function go(url) { Line 1571  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 1789  sub hidden_button_check { Line 1761  sub hidden_button_check {
   
 sub roles_selector {  sub roles_selector {
     my ($cdom,$cnum) = @_;      my ($cdom,$cnum) = @_;
     my $crstype = $env{'course.'.$env{'request.course.id'}.'.type'};      my $crstype = &Apache::loncommon::course_type();
     if ($crstype eq '') {  
         $crstype = 'Course';  
     }  
     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 1848  sub roles_selector { Line 1823  sub roles_selector {
     } else {      } else {
         $switchtext = &mt('Switch course role to...')          $switchtext = &mt('Switch course role to...')
     }      }
     my @roles_order = ('cc','in','ta','ep','ad','st');      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">
Line 1856  sub roles_selector { Line 1831  sub roles_selector {
         $role_selector .= '<option value="">'.$switchtext.'</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))) {

Removed from v.1.295  
changed lines
  Added in v.1.315


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