Diff for /loncom/interface/loncommon.pm between versions 1.399 and 1.415

version 1.399, 2006/06/26 22:09:01 version 1.415, 2006/07/03 00:46:00
Line 707  sub helpLatexCheatsheet { Line 707  sub helpLatexCheatsheet {
 }  }
   
 sub help_open_menu {  sub help_open_menu {
     my ($color,$topic,$component_help,$function,$faq,$bug,$stayOnPage,$width,$height,$text) = @_;      my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) = @_;
     $text = "" if (not defined $text);      $text = "" if (not defined $text);
     $stayOnPage = 0 if (not defined $stayOnPage);      $stayOnPage = 0 if (not defined $stayOnPage);
     if ($env{'browser.interface'} eq 'textual' ||      if ($env{'browser.interface'} eq 'textual' ||
Line 721  sub help_open_menu { Line 721  sub help_open_menu {
     my $origurl = $ENV{'REQUEST_URI'};      my $origurl = $ENV{'REQUEST_URI'};
     $origurl=~s|^/~|/priv/|;      $origurl=~s|^/~|/priv/|;
     my $timestamp = time;      my $timestamp = time;
     foreach my $datum (\$color,\$function,\$topic,\$component_help,\$faq,      foreach my $datum (\$topic,\$component_help,\$faq,\$bug,\$origurl) {
        \$bug,\$origurl) {  
         $$datum = &escape($$datum);          $$datum = &escape($$datum);
     }      }
     if (!$stayOnPage) {      if (!$stayOnPage) {
Line 730  sub help_open_menu { Line 729  sub help_open_menu {
     } else {      } else {
         $link = "javascript:helpMenu('display')";          $link = "javascript:helpMenu('display')";
     }      }
     my $banner_link = "/adm/helpmenu?page=banner&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage";      my $banner_link = "/adm/helpmenu?page=banner&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage";
     my $details_link = "/adm/helpmenu?page=body&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp";      my $details_link = "/adm/helpmenu?page=body&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp";
     my $template;      my $template;
     if ($text ne "") {      if ($text ne "") {
  $template .=    $template .= 
Line 2726  Returns: value of designparamter $which Line 2725  Returns: value of designparamter $which
 =cut  =cut
   
   
 sub designparm {  
     my ($which,$domain)=@_;  
     my $result = &designparm_real(@_);  
     &Apache::lonnet::logthis(" $which $domain reulted in $result");  
     return $result;  
 }  
   
   
 ##############################################  ##############################################
 sub designparm_real {  sub designparm {
     my ($which,$domain)=@_;      my ($which,$domain)=@_;
     if ($env{'browser.blackwhite'} eq 'on') {      if ($env{'browser.blackwhite'} eq 'on') {
  if ($which=~/\.(font|alink|vlink|link)$/) {   if ($which=~/\.(font|alink|vlink|link)$/) {
Line 2805  Inputs: Line 2796  Inputs:
 =item * $no_inline_link, if true and in remote mode, don't show the   =item * $no_inline_link, if true and in remote mode, don't show the 
          'Switch To Inline Menu' link           'Switch To Inline Menu' link
   
   
 =back  =back
   
 Returns: A uniform header for LON-CAPA web pages.    Returns: A uniform header for LON-CAPA web pages.  
Line 2876  sub bodytag { Line 2866  sub bodytag {
  return $bodytag;   return $bodytag;
     }      }
   
       my $name = &plainname($env{'user.name'},$env{'user.domain'});
           
     my $roleinfo=(<<ENDROLE);      my $roleinfo=(<<ENDROLE);
 <td class="LC_title_bar_who">  <td class="LC_title_bar_who">
 <div class="LC_title_bar_name">  <div class="LC_title_bar_name">
     $env{'environment.firstname'}      $name
     $env{'environment.middlename'}  
     $env{'environment.lastname'}  
     $env{'environment.generation'}  
     &nbsp;      &nbsp;
 </div>  </div>
 <div class="LC_title_bar_role">  <div class="LC_title_bar_role">
Line 2935  ENDROLE Line 2922  ENDROLE
  $lastitem = $thisdisfn;   $lastitem = $thisdisfn;
     }      }
     $titleinfo =       $titleinfo = 
  &Apache::loncommon::help_open_menu('','','','',3,'Authoring').   &Apache::loncommon::help_open_menu('','',3,'Authoring').
  '<b>Construction Space</b>:&nbsp;'.    '<b>Construction Space</b>:&nbsp;'. 
  '<form name="dirs" method="post" action="'.$formaction   '<form name="dirs" method="post" action="'.$formaction
  .'" target="_top"><tt><b>'   .'" target="_top"><tt><b>'
Line 3156  table#LC_top_nav, table#LC_menubuttons { Line 3143  table#LC_top_nav, table#LC_menubuttons {
   width: 100%;    width: 100%;
   background: $pgbg;    background: $pgbg;
   border: 2px;    border: 2px;
   border-collapse: seperate;    border-collapse: separate;
     padding: 0px;
 }  }
   
 table#LC_title_bar, table#LC_breadcrumbs, table#LC_nav_location,  table#LC_title_bar, table.LC_breadcrumbs, table#LC_nav_location,
 table#LC_title_bar.LC_with_remote {  table#LC_title_bar.LC_with_remote {
   width: 100%;    width: 100%;
   border-color: $pgbg;    border-color: $pgbg;
Line 3169  table#LC_title_bar.LC_with_remote { Line 3157  table#LC_title_bar.LC_with_remote {
   background: $pgbg;    background: $pgbg;
   font-family: $sans;    font-family: $sans;
   border-collapse: collapse;    border-collapse: collapse;
     padding: 0px;
   }
   
   table.LC_docs_path {
     width: 100%;
     border: 0;
     background: $pgbg;
     font-family: $sans;
     border-collapse: collapse;
     padding: 0px;
 }  }
   
 table#LC_title_bar td {  table#LC_title_bar td {
   padding: 3px;  
   background: $tabbg;    background: $tabbg;
 }  }
 table#LC_title_bar td.LC_title_bar_who {  table#LC_title_bar td.LC_title_bar_who {
Line 3208  table#LC_menubuttons img, table#LC_menub Line 3205  table#LC_menubuttons img, table#LC_menub
 table#LC_top_nav td {  table#LC_top_nav td {
   background: $tabbg;    background: $tabbg;
   border: 0px;    border: 0px;
     font-size: small;
 }  }
 table#LC_top_nav td a, div#LC_top_nav a {  table#LC_top_nav td a, div#LC_top_nav a {
   color: $font;    color: $font;
Line 3216  table#LC_top_nav td a, div#LC_top_nav a Line 3214  table#LC_top_nav td a, div#LC_top_nav a
 table#LC_top_nav td.LC_top_nav_logo {  table#LC_top_nav td.LC_top_nav_logo {
   background: $tabbg;    background: $tabbg;
   text-align: right;    text-align: right;
     white-space: nowrap;
     font-weight: bold;
 }  }
 table#LC_breadcrumbs td {  table#LC_top_nav td.LC_top_nav_logo img {
     margin-left: 0.2em;
     vertical-align: bottom;
   }
   table.LC_breadcrumbs td, table.LC_docs_path td  {
   background: $tabbg;    background: $tabbg;
   color: $font;    color: $font;
   font-family: $sans;    font-family: $sans;
   font-size: smaller;    font-size: smaller;
 }  }
 table#LC_breadcrumbs td.LC_breadcrumb_component {  table.LC_breadcrumbs td.LC_breadcrumbs_component,
   table.LC_docs_path td.LC_docs_path_component {
   background: $tabbg;    background: $tabbg;
   color: $font;    color: $font;
   font-family: $sans;    font-family: $sans;
Line 3258  td.LC_menubuttons_img { Line 3263  td.LC_menubuttons_img {
   
 table.LC_data_table, table.LC_mail_list {  table.LC_data_table, table.LC_mail_list {
   border: 1px solid #000000;    border: 1px solid #000000;
   border-collapse: seperate;    border-collapse: separate;
 }  }
 table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th {  table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th {
   font-weight: bold;    font-weight: bold;
Line 3472  Inputs: $title - optional title for the Line 3477  Inputs: $title - optional title for the
         $args - optional arguments          $args - optional arguments
             force_register - if is true call registerurl so the remote is               force_register - if is true call registerurl so the remote is 
                              informed                               informed
             redirect       -> array ref of seconds before redirect occurs              redirect       -> array ref of
                                     url to redirect to                                     1- seconds before redirect occurs
                                      2- url to redirect to
                                      3- whether the side effect should occur
                            (side effect of setting                              (side effect of setting 
                                $env{'internal.head.redirect'} to the url                                  $env{'internal.head.redirect'} to the url 
                                redirected too)                                 redirected too)
Line 3500  sub headtag { Line 3507  sub headtag {
   
     my $result =      my $result =
  '<head>'.   '<head>'.
  '<link rel="stylesheet" type="text/css" href="'.$url.'" />'.  
  &font_settings().   &font_settings().
  &Apache::lonhtmlcommon::htmlareaheaders();   &Apache::lonhtmlcommon::htmlareaheaders();
   
Line 3509  sub headtag { Line 3515  sub headtag {
     }      }
   
     if (ref($args->{'redirect'})) {      if (ref($args->{'redirect'})) {
  my ($time,$url) = @{$args->{'redirect'}};   my ($time,$url,$inhibit_continue) = @{$args->{'redirect'}};
  $url = &Apache::lonenc::check_encrypt($url);   $url = &Apache::lonenc::check_encrypt($url);
  $env{'internal.head.redirect'} = $url;   if (!$inhibit_continue) {
       $env{'internal.head.redirect'} = $url;
    }
  $result.=<<ADDMETA   $result.=<<ADDMETA
 <meta http-equiv="pragma" content="no-cache" />  <meta http-equiv="pragma" content="no-cache" />
 <meta http-equiv="Refresh" content="$time; url=$url" />  <meta http-equiv="Refresh" content="$time; url=$url" />
Line 3521  ADDMETA Line 3529  ADDMETA
  $title = 'The LearningOnline Network with CAPA';   $title = 'The LearningOnline Network with CAPA';
     }      }
           
     $result .= '<title> LON-CAPA '.&mt($title).'</title>'.$head_extra;      $result .= '<title> LON-CAPA '.&mt($title).'</title>'
    .'<link rel="stylesheet" type="text/css" href="'.$url.'" />'
    .$head_extra;
     return $result;      return $result;
 }  }
   
Line 3613  Returns a uniform complete <head>..</hea Line 3623  Returns a uniform complete <head>..</hea
   
 Inputs: $title - optional title for the page  Inputs: $title - optional title for the page
         $head_extra - optional extra HTML to put inside the <head>          $head_extra - optional extra HTML to put inside the <head>
   
 =back  =back
   
 =cut  =cut
Line 3726  Inputs:         $args - additional optio Line 3737  Inputs:         $args - additional optio
                                  a html attribute                                   a html attribute
                  frameset     -> if true will start with a <frameset>                   frameset     -> if true will start with a <frameset>
                                  rather than <body>                                   rather than <body>
 =back  
   
 =cut  =cut
   
Line 3851  sub simple_error_page { Line 3861  sub simple_error_page {
   
 =pod  =pod
   
 =over 4  =item * &get_users_function()
   
 =item get_users_function  
   
 Used by &bodytag to determine the current users primary role.  Used by &bodytag to determine the current users primary role.
 Returns either 'student','coordinator','admin', or 'author'.  Returns either 'student','coordinator','admin', or 'author'.
Line 3880  sub get_users_function { Line 3888  sub get_users_function {
   
 =pod  =pod
   
 =item check_user_status  =item * &check_user_status
   
 Determines current status of supplied role for a  Determines current status of supplied role for a
 specific user. Roles can be active, previous or future.  specific user. Roles can be active, previous or future.
Line 3895  role status: active, previous or future. Line 3903  role status: active, previous or future.
 =cut  =cut
   
 sub check_user_status {  sub check_user_status {
     my ($udom,$uname,$cdom,$crs,$role,$secgrp) = @_;      my ($udom,$uname,$cdom,$crs,$role,$sec) = @_;
     my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname);      my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname);
     my @uroles = keys %userinfo;      my @uroles = keys %userinfo;
     my $srchstr;      my $srchstr;
     my $active_chk = 'none';      my $active_chk = 'none';
       my $now = time;
     if (@uroles > 0) {      if (@uroles > 0) {
         if (($role eq 'cc') || ($secgrp eq '') || (!defined($secgrp))) {          if (($role eq 'cc') || ($sec eq '') || (!defined($sec))) {
             $srchstr = '/'.$cdom.'/'.$crs.'_'.$role;              $srchstr = '/'.$cdom.'/'.$crs.'_'.$role;
         } else {          } else {
             $srchstr = '/'.$cdom.'/'.$crs.'/'.$secgrp.'_'.$role;         }              $srchstr = '/'.$cdom.'/'.$crs.'/'.$sec.'_'.$role;
         if (grep/^$srchstr$/,@uroles) {          }
           if (grep/^\Q$srchstr\E$/,@uroles) {
             my $role_end = 0;              my $role_end = 0;
             my $role_start = 0;              my $role_start = 0;
             $active_chk = 'active';              $active_chk = 'active';
             if ($userinfo{$srchstr} =~ m/^($role)_(\d+)/) {              if ($userinfo{$srchstr} =~ m/^\Q$role\E_(\d+)/) {
                 $role_end = $2;                  $role_end = $1;
                 if ($userinfo{$srchstr} =~ m/^($role)_($role_end)_(\d+)$/) {                  if ($userinfo{$srchstr} =~ m/^\Q$role\E_\Q$role_end\E_(\d+)$/) {
                     $role_start = $3;                      $role_start = $1;
                 }                  }
             }              }
             if ($role_start > 0) {              if ($role_start > 0) {
                 if (time < $role_start) {                  if ($now < $role_start) {
                     $active_chk = 'future';                      $active_chk = 'future';
                 }                  }
             }              }
             if ($role_end > 0) {              if ($role_end > 0) {
                 if (time > $role_end) {                  if ($now > $role_end) {
                     $active_chk = 'previous';                      $active_chk = 'previous';
                 }                  }
             }              }
Line 3934  sub check_user_status { Line 3944  sub check_user_status {
   
 =pod  =pod
   
 =item get_sections  =item * &get_sections()
   
 Determines all the sections for a course including  Determines all the sections for a course including
 sections with students and sections containing other roles.  sections with students and sections containing other roles.
Line 3995  sub get_sections { Line 4005  sub get_sections {
 ###############################################  ###############################################
   
 =pod  =pod
                                                                                   
 =item get_course_users  =item * &get_course_users()
                                                                                   
 Retrieves usernames:domains for users in the specified course  Retrieves usernames:domains for users in the specified course
 with specific role(s), and access status.   with specific role(s), and access status. 
   
Line 4020  Entries for end, start, section and stat Line 4030  Entries for end, start, section and stat
 of the possibility of multiple values for non-student roles.  of the possibility of multiple values for non-student roles.
   
 =cut  =cut
                                                                                   
 ###############################################  ###############################################
                                                                                   
 sub get_course_users {  sub get_course_users {
     my ($cdom,$cnum,$types,$roles,$sections,$users,$userdata) = @_;      my ($cdom,$cnum,$types,$roles,$sections,$users,$userdata) = @_;
     my %idx = ();      my %idx = ();
Line 4041  sub get_course_users { Line 4051  sub get_course_users {
         my $now = time;          my $now = time;
         foreach my $student (keys(%{$classlist})) {          foreach my $student (keys(%{$classlist})) {
             my $match = 0;              my $match = 0;
               my $secmatch = 0;
             if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) {              if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) {
  unless(grep(/^\Q$$classlist{$student}[$idx{section}]\E$/,                  if (grep/^all$/,@{$sections}) {
                       $secmatch = 1;
                   } elsif ($$classlist{$student}[$idx{section}] eq '') {
                       if (grep/^none$/,@{$sections}) {
                           $secmatch = 1;
                       }
                   } else {  
       if (grep(/^\Q$$classlist{$student}[$idx{section}]\E$/,
     @{$sections})) {      @{$sections})) {
     next;          $secmatch = 1;
                       }
  }   }
                   if (!$secmatch) {
                       next;
                   }
             }               } 
             if (defined($$types{'active'})) {              if (defined($$types{'active'})) {
                 if ($$classlist{$student}[$idx{status}] eq 'Active') {                  if ($$classlist{$student}[$idx{status}] eq 'Active') {
Line 4065  sub get_course_users { Line 4087  sub get_course_users {
                     $match = 1;                      $match = 1;
                 }                  }
             }              }
             if ($match && defined($userdata)) {              if ($match && ref($userdata) eq 'HASH') {
                 $$userdata{$student} = $$classlist{$student};                  $$userdata{$student} = $$classlist{$student};
             }              }
         }          }
     }      }
     if ((@{$roles} > 0) && (@{$roles} ne "st")) {      if ((@{$roles} > 1) || ((@{$roles} == 1) && ($$roles[0] ne "st"))) {
         my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$cdom,$cnum);          my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$cdom,$cnum);
         foreach my $person (@coursepersonnel) {          foreach my $person (@coursepersonnel) {
             my $match = 0;              my $match = 0;
             my ($role,$user) = ($person =~ /^([^:]*):([^:]+:[^:]+)/);              my $secmatch = 0;
               my ($role,$user,$usec) = ($person =~ /^([^:]*):([^:]+:[^:]+):([^:]*)/);
             $user =~ s/:$//;              $user =~ s/:$//;
             if (($role) && (grep(/^\Q$role\E$/,@{$roles}))) {              if (($role) && (grep(/^\Q$role\E$/,@{$roles}))) {
                 my ($uname,$udom,$usec) = split(/:/,$user);                  my ($uname,$udom) = split(/:/,$user);
                 if ($usec ne '' && (ref($sections) eq 'ARRAY') &&                   if ((ref($sections) eq 'ARRAY') && (@{$sections} > 0)) {
     @{$sections} > 0) {                      if (grep/^all$/,@{$sections}) {
     unless(grep(/^\Q$usec\E$/,@{$sections})) {                          $secmatch = 1;
  next;                      } elsif ($usec eq '') {
     }                          if (grep/^none$/,@{$sections}) {
                               $secmatch = 1;
                           }
                       } else {
                           if (grep(/^\Q$usec\E$/,@{$sections})) {
                               $secmatch = 1;
                           }
                       }
                       if (!$secmatch) {
                           next;
                       }
                 }                  }
                 if ($uname ne '' && $udom ne '') {                  if ($uname ne '' && $udom ne '') {
                     my $status = &check_user_status($udom,$uname,$cdom,$cnum,$role);                      my $status = &check_user_status($udom,$uname,$cdom,$cnum,$role,
                                                       $usec);
                     foreach my $type (keys(%{$types})) {                       foreach my $type (keys(%{$types})) { 
                         if ($status eq $type) {                          if ($status eq $type) {
                             @{$$users{$role}{$user}} = $type;                              @{$$users{$role}{$user}} = $type;
                             $match = 1;                              $match = 1;
                         }                          }
                     }                      }
                     if ($match && defined($userdata) &&                      if (($match) && (ref($userdata) eq 'HASH') &&
                         !exists($$userdata{$uname.':'.$udom})) {                          (!exists($$userdata{$uname.':'.$udom}))) {
  &get_user_info($udom,$uname,\%idx,$userdata);   &get_user_info($udom,$uname,\%idx,$userdata);
                     }                      }
                 }                  }
Line 5182  sub course_type { Line 5216  sub course_type {
     if (!defined($cid)) {      if (!defined($cid)) {
         $cid = $env{'request.course.id'};          $cid = $env{'request.course.id'};
     }      }
     if (defined($env{'course.'.$cid.'type'})) {      if (defined($env{'course.'.$cid.'.type'})) {
         return $env{'course.'.$cid.'type'};          return $env{'course.'.$cid.'.type'};
     } else {      } else {
         return 'Course';          return 'Course';
     }      }
 }  }
   
   sub group_term {
       my $crstype = &course_type();
       my %names = (
                     'Course' => 'group',
                     'Group' => 'team',
                   );
       return $names{$crstype};
   }
   
 sub icon {  sub icon {
     my ($file)=@_;      my ($file)=@_;
     my $curfext = (split(/\./,$file))[-1];      my $curfext = (split(/\./,$file))[-1];

Removed from v.1.399  
changed lines
  Added in v.1.415


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