Diff for /loncom/interface/loncommon.pm between versions 1.824 and 1.871

version 1.824, 2009/05/22 17:57:19 version 1.871, 2009/07/27 22:35:12
Line 483  ENDAUTHORBRW Line 483  ENDAUTHORBRW
   
 sub coursebrowser_javascript {  sub coursebrowser_javascript {
     my ($domainfilter,$sec_element,$formname)=@_;      my ($domainfilter,$sec_element,$formname)=@_;
     my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Group - for which you wish to add/modify a user role');      my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Community - for which you wish to add/modify a user role');
    my $output = '     my $output = '
 <script type="text/javascript" language="JavaScript">  <script type="text/javascript" language="JavaScript">
 // <![CDATA[  // <![CDATA[
Line 532  sub coursebrowser_javascript { Line 532  sub coursebrowser_javascript {
         if (multflag !=null && multflag != '') {          if (multflag !=null && multflag != '') {
             url += '&multiple='+multflag;              url += '&multiple='+multflag;
         }          }
         if (crstype == 'Course/Group') {          if (crstype == 'Course/Community') {
             if (formname == 'cu') {              if (formname == 'cu') {
                 crstype = document.cu.crstype.options[document.cu.crstype.selectedIndex].value;                   crstype = document.cu.crstype.options[document.cu.crstype.selectedIndex].value; 
                 if (crstype == "") {                  if (crstype == "") {
Line 620  function setSect(sectionlist) { Line 620  function setSect(sectionlist) {
   
 sub selectcourse_link {  sub selectcourse_link {
    my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_;     my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_;
      my $linktext = &mt('Select Course');
      if ($selecttype eq 'Community') {
          $linktext = &mt('Select Community'); 
      }
    return '<span class="LC_nobreak">'     return '<span class="LC_nobreak">'
          ."<a href='"           ."<a href='"
          .'javascript:opencrsbrowser("'.$form.'","'.$unameele           .'javascript:opencrsbrowser("'.$form.'","'.$unameele
          .'","'.$udomele.'","'.$desc.'","'.$extra_element           .'","'.$udomele.'","'.$desc.'","'.$extra_element
          .'","'.$multflag.'","'.$selecttype.'");'           .'","'.$multflag.'","'.$selecttype.'");'
          ."'>".&mt('Select Course').'</a>'           ."'>".$linktext.'</a>'
          .'</span>';           .'</span>';
 }  }
   
Line 3766  sub blockcheck { Line 3770  sub blockcheck {
                  ($env{'request.role'} !~ m{^st\./\Q$cdom\E/\Q$cnum\E}));                   ($env{'request.role'} !~ m{^st\./\Q$cdom\E/\Q$cnum\E}));
         next if ($no_userblock);          next if ($no_userblock);
   
         # Retrieve blocking times and identity of blocker for course          # Retrieve blocking times and identity of locker for course
         # of specified user, unless user has 'evb' privilege.          # of specified user, unless user has 'evb' privilege.
                   
         my ($start,$end)=&get_blocks($setters,$activity,$cdom,$cnum);          my ($start,$end)=&get_blocks($setters,$activity,$cdom,$cnum);
Line 3831  sub parse_block_record { Line 3835  sub parse_block_record {
     return ($setuname,$setudom,$title,$blocks);      return ($setuname,$setudom,$title,$blocks);
 }  }
   
 sub build_block_table {  
     my ($startblock,$endblock,$setters) = @_;  
     my %lt = &Apache::lonlocal::texthash(  
         'cacb' => 'Currently active communication blocks',  
         'cour' => 'Course',  
         'dura' => 'Duration',  
         'blse' => 'Block set by'  
     );  
     my $output;  
     $output = '<br />'.$lt{'cacb'}.':<br />';  
     $output .= &start_data_table();  
     $output .= '  
 <tr>  
  <th>'.$lt{'cour'}.'</th>  
  <th>'.$lt{'dura'}.'</th>  
  <th>'.$lt{'blse'}.'</th>  
 </tr>  
 ';  
     foreach my $course (keys(%{$setters})) {  
         my %courseinfo=&Apache::lonnet::coursedescription($course);  
         for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) {  
             my ($uname,$udom) = @{$$setters{$course}{staff}[$i]};  
             my $fullname = &plainname($uname,$udom);  
             if (defined($env{'user.name'}) && defined($env{'user.domain'})  
                 && $env{'user.name'} ne 'public'   
                 && $env{'user.domain'} ne 'public') {  
                 $fullname = &aboutmewrapper($fullname,$uname,$udom);  
             }  
             my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]};  
             $openblock = &Apache::lonlocal::locallocaltime($openblock);  
             $closeblock= &Apache::lonlocal::locallocaltime($closeblock);  
             $output .= &Apache::loncommon::start_data_table_row().  
                        '<td>'.$courseinfo{'description'}.'</td>'.  
                        '<td>'.$openblock.' to '.$closeblock.'</td>'.  
                        '<td>'.$fullname.'</td>'.  
                         &Apache::loncommon::end_data_table_row();  
         }  
     }  
     $output .= &end_data_table();  
 }  
   
 sub blocking_status {  sub blocking_status {
     my ($activity,$uname,$udom) = @_;    my $blocked;
     my %setters;    my ($activity,$uname,$udom) = @_;
     my ($blocked,$output,$ownitem,$is_course);    my %setters;
     my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom);    my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom);
     if ($startblock && $endblock) {    if ($startblock && $endblock) {
         $blocked = 1;      $blocked = 1;
         if (wantarray) {    }
             my $category;    if(!wantarray) {
             if ($activity eq 'boards') {      return $blocked;
                 $category = 'Discussion posts in this course';    }
             } elsif ($activity eq 'blogs') {    my $output;
                 $category = 'Blogs';    my $querystring;
             } elsif ($activity eq 'port') {    $querystring = "?activity=$activity";
                 if (defined($uname) && defined($udom)) {  
                     if ($uname eq $env{'user.name'} &&        $output .= <<"END_MYBLOCK";
                         $udom eq $env{'user.domain'}) {  <script type="text/javascript">
                         $ownitem = 1;  // <![CDATA[
                     }      function openWindow(url, wdwName, w, h, toolbar,scrollbar) {
                 }          var options = "width=" + w + ",height=" + h + ",";
                 $is_course = &Apache::lonnet::is_course($udom,$uname);          options += "resizable=yes,scrollbars="+scrollbar+",status=no,";
                 if ($ownitem) {           options += "menubar=no,toolbar="+toolbar+",location=no,directories=no";
                     $category = 'Your portfolio files';            var newWin = window.open(url, wdwName, options);
                 } elsif ($is_course) {          newWin.focus();
                     my $coursedesc;  
                     foreach my $course (keys(%setters)) {  
                         my %courseinfo =  
                              &Apache::lonnet::coursedescription($course);  
                         $coursedesc = $courseinfo{'description'};  
                     }  
                     $category = "Group portfolio in the course '$coursedesc'";  
                 } else {  
                     $category = 'Portfolio files belonging to ';  
                     if ($env{'user.name'} eq 'public' &&   
                         $env{'user.domain'} eq 'public') {  
                         $category .= &plainname($uname,$udom);  
                     } else {  
                         $category .= &aboutmewrapper(&plainname($uname,$udom),$uname,$udom);    
                     }  
                 }  
             } elsif ($activity eq 'groups') {  
                 $category = 'Groups in this course';  
             }  
             my $showstart = &Apache::lonlocal::locallocaltime($startblock);  
             my $showend = &Apache::lonlocal::locallocaltime($endblock);  
             $output = '<br />'.&mt('[_1] will be inaccessible between [_2] and [_3] because communication is being blocked.',$category,$showstart,$showend).'<br />';  
             if (!($activity eq 'port' && !($ownitem) && !($is_course))) {   
                 $output .= &build_block_table($startblock,$endblock,\%setters);  
             }  
         }  
     }  
     if (wantarray) {  
         return ($blocked,$output);  
     } else {  
         return $blocked;  
     }      }
   
   // ]]>
   </script>
   END_MYBLOCK
     my $popupUrl = "/adm/blockingstatus/$querystring";
     $output .= <<"END_BLOCK";
   <div class='LC_comblock'>
     <a onclick='openWindow("$popupUrl","Blocking Table",600,300,"no","no");return false;' href='/adm/blockingstatus/$querystring'
     title='Communication Blocked'>
     <img class='LC_noBorder LC_middle' title='Communication Blocked' src='/res/adm/pages/comblock.png' alt='Communication Blocked'/></a>
     <a onclick='openWindow("$popupUrl","Blocking Table",600,300,"no","no");return false;' href='/adm/blockingstatus/$querystring' 
     title='Communication Blocked'>Communication Blocked</a>
   </div>
   
   END_BLOCK
   
     return ($blocked, $output);
 }  }
   
 ###############################################  ###############################################
Line 4183  sub designparm { Line 4132  sub designparm {
 ##############################################  ##############################################
 =pod  =pod
   
   =item * &authorspace()
   
   Inputs: ./.
   
   Returns: Path to the Construction Space of the current user's
            accessed author space
            The author space will be that of the current user
            when accessing the own author space
            and that of the co-author/assistent co-author
            when accessing the co-author's/assistent co-author's
            space
   
   =cut
   
   sub authorspace {
       my $caname = '';
       if ($env{'request.role'} =~ /^ca|^aa/) {
           (undef,$caname) =
               ($env{'request.role'}=~/($match_domain)\/($match_username)$/);
       } else {
           $caname = $env{'user.name'};
       }
       return '/priv/'.$caname.'/';
   }
   
   ##############################################
   =pod
   
 =item * &head_subbox()  =item * &head_subbox()
   
 Inputs: $content (contains HTML code with page functions, etc.)  Inputs: $content (contains HTML code with page functions, etc.)
Line 4195  Returns: HTML div with $content Line 4172  Returns: HTML div with $content
 sub head_subbox {  sub head_subbox {
     my ($content)=@_;      my ($content)=@_;
     my $output =      my $output =
         '<div id="LC_head_subbox2">' #FIXME: solve conflicts with lonhtmlcommon:breadcrumbs LC_head_subbox          '<div id="LC_head_subbox">'
        .$content         .$content
        .'</div>'         .'</div>'
 }  }
Line 4274  Inputs: Line 4251  Inputs:
 =item * $forcereg, if page should register as content page (relevant for   =item * $forcereg, if page should register as content page (relevant for 
             text interface only)              text interface only)
   
 =item * $customtitle, alternate text to use instead of $title  
                       in the title box that appears, this text  
                       is not auto translated like the $title is  
   
 =item * $no_nav_bar, if true, keep the 'what is this' info but remove the  =item * $no_nav_bar, if true, keep the 'what is this' info but remove the
                      navigational links                       navigational links
   
Line 4302  other decorations will be returned. Line 4275  other decorations will be returned.
 =cut  =cut
   
 sub bodytag {  sub bodytag {
     my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle,      my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,
         $no_nav_bar,$bgcolor,$no_inline_link,$args)=@_;          $no_nav_bar,$bgcolor,$no_inline_link,$args)=@_;
   
     if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); }      if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); }
Line 4357  sub bodytag { Line 4330  sub bodytag {
  $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'});   $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'});
     }      }
           
     my $roleinfo=(<<ENDROLE);  
 <td class="LC_title_bar_who">  
 <div class="LC_title_bar_name">  
     $name  
     &nbsp;  
 </div>  
 <div class="LC_title_bar_role">  
 $role&nbsp;  
 </div>  
 <div class="LC_title_bar_realm">  
 $realm&nbsp;  
 </div>  
 </td>  
 ENDROLE  
   
     my $titleinfo = '<h1>'.$title.'</h1>';      my $titleinfo = '<h1>'.$title.'</h1>';
     if ($customtitle) {  
         $titleinfo = $customtitle;  
     }  
     #      #
     # Extra info if you are the DC      # Extra info if you are the DC
     my $dc_info = '';      my $dc_info = '';
Line 4388  ENDROLE Line 4343  ENDROLE
         $dc_info = '('.$dc_info.')';          $dc_info = '('.$dc_info.')';
     }      }
   
     if (($env{'environment.remote'} eq 'off') || ($args->{'suppress_header_logos'})) {      $role = "($role)" if $role;
       &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']);
   
       if ($env{'environment.remote'} eq 'off') {
         # No Remote          # No Remote
  if ($env{'request.state'} eq 'construct') {   if ($env{'request.state'} eq 'construct') {
     $forcereg=1;      $forcereg=1;
  }   }
   
     if (!$customtitle && $env{'request.state'} eq 'construct') {  #    if ($env{'request.state'} eq 'construct') {
         $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls  #        $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls
     }  #    }
   
         my $titletable = '<table id="LC_title_bar">'          my $titletable = '<table id="LC_title_bar">'
                         ."<tr><td> $titleinfo $dc_info</td>".$roleinfo                          ."<tr><td> $titleinfo $dc_info</td>"
                         .'</tr></table>';                          .'</tr></table>';
   
  if ($no_nav_bar) {   if ($no_nav_bar) {
     $bodytag .= $titletable;      $bodytag .= $titletable;
  } else {   } else {
         $bodytag .= qq|<div id="LC_nav_bar">$name ($role)<br />          $bodytag .= qq|<div id="LC_nav_bar">$name $role<br />
             <em>$realm</em> $dc_info</div>|;              <em>$realm</em> $dc_info</div>| unless $env{'form.inhibitmenu'};
   
     if ($env{'request.state'} eq 'construct') {      if ($env{'request.state'} eq 'construct') {
                 $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$forcereg,                  $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$titletable);
   $titletable);  
             } else {              } else {
                 $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$forcereg).                  $bodytag .= &Apache::lonmenu::menubuttons($forcereg).$titletable;
     $titletable;  
             }              }
         }          }
         return $bodytag;          return $bodytag;
Line 4430  ENDROLE Line 4387  ENDROLE
   
     # Explicit link to get inline menu      # Explicit link to get inline menu
     my $menu= ($no_inline_link?''      my $menu= ($no_inline_link?''
        :'<br /><a href="/adm/remote?action=collapse">'.&mt('Switch to Inline Menu Mode').'</a>');         :'<a href="/adm/remote?action=collapse">'.&mt('Switch to Inline Menu Mode').'</a>');
       $bodytag .= qq|<div id="LC_nav_bar">$name $role
               <em>$realm</em> $dc_info </div>
               <ol class="LC_smallMenu LC_right">
                   <li>$menu</li>
               </ol>| unless $env{'form.inhibitmenu'};
     #      #
     return(<<ENDBODY);      return(<<ENDBODY);
 $bodytag  $bodytag
Line 4439  $bodytag Line 4401  $bodytag
     <td>$messages&nbsp;</td>      <td>$messages&nbsp;</td>
 </tr>  </tr>
 <tr><td>$titleinfo $dc_info $menu</td>  <tr><td>$titleinfo $dc_info $menu</td>
 $roleinfo  
 </tr>  </tr>
 </table>  </table>
 ENDBODY  ENDBODY
Line 4561  sub standard_css { Line 4522  sub standard_css {
   
     my $sans                 = 'Verdana,Arial,Helvetica,sans-serif';      my $sans                 = 'Verdana,Arial,Helvetica,sans-serif';
     my $mono                 = 'monospace';      my $mono                 = 'monospace';
     my $data_table_head      = $tabbg;      my $data_table_head      = $sidebg;
     my $data_table_light     = '#EEEEEE';      my $data_table_light     = '#FAFAFA';
     my $data_table_dark      = '#DDDDDD';      my $data_table_dark      = '#F0F0F0';
     my $data_table_darker    = '#CCCCCC';      my $data_table_darker    = '#CCCCCC';
     my $data_table_highlight = '#FFFF00';      my $data_table_highlight = '#FFFF00';
     my $mail_new             = '#FFBB77';      my $mail_new             = '#FFBB77';
Line 4600  a:focus { Line 4561  a:focus {
   background: yellow     background: yellow 
 }  }
   
   hr {
     clear: both;
     color: $tabbg;
     background-color: $tabbg;
     height: 3px;
     border: none;
   }
   
 form, .inline {   form, .inline { 
    display: inline;      display: inline; 
 }  }
Line 4680  div.LC_confirm_box .LC_success img { Line 4649  div.LC_confirm_box .LC_success img {
   
 .LC_disc_action_links_bar {  .LC_disc_action_links_bar {
    background: $tabbg;     background: $tabbg;
    font-family: $sans;  
    border: none;     border: none;
    margin: 4px;     margin: 4px;
 }  }
Line 4723  table#LC_nav_location { Line 4691  table#LC_nav_location {
 table#LC_title_bar a {  table#LC_title_bar a {
   color: $fontmenu;    color: $fontmenu;
 }  }
       
 table#LC_title_bar {  table#LC_title_bar {
   clear: both;    clear: both;
   /*display: none;*/    display: none;
 }  }
   
 table#LC_title_bar,  table#LC_title_bar,
Line 4738  table#LC_title_bar.LC_with_remote { Line 4706  table#LC_title_bar.LC_with_remote {
   border-width: $border;    border-width: $border;
   background: $pgbg;    background: $pgbg;
   color: $fontmenu;    color: $fontmenu;
   font-family: $sans;  
   border-collapse: collapse;    border-collapse: collapse;
   padding: 0;    padding: 0;
   margin: 0;    margin: 0;
 }  }
   
 table.LC_docs_path {  
   width: 100%;  
   border: 0;  
   background: $pgbg;  
   font-family: $sans;  
   border-collapse: collapse;  
   padding: 0;  
 }  
   
 table#LC_title_bar td {  table#LC_title_bar td {
   background: $tabbg;    background: $tabbg;
 }  }
   
 table#LC_title_bar .LC_title_bar_who {  
   background: $tabbg;  
   color: $fontmenu;  
   font: small $sans;  
   text-align: right;  
   margin: 0;  
 }  
   
 table#LC_title_bar div.LC_title_bar_name {  
   margin: 0;  
 }  
   
 table#LC_title_bar div.LC_title_bar_role {  
   margin: 0;  
 }  
   
 table#LC_title_bar div.LC_title_bar_realm {  
   margin: 0;  
 }  
   
 span.LC_metadata {  
   font-family: $sans;  
 }  
   
 table#LC_menubuttons img{  table#LC_menubuttons img{
   border: none;    border: none;
 }  }
Line 4796  table#LC_top_nav td { Line 4730  table#LC_top_nav td {
 table#LC_top_nav td a,  table#LC_top_nav td a,
 div#LC_top_nav a {  div#LC_top_nav a {
   color: $font;    color: $font;
   font-family: $sans;  
 }  }
   
 table#LC_top_nav td.LC_top_nav_logo {  table#LC_top_nav td.LC_top_nav_logo {
Line 4821  table#LC_top_nav td.LC_top_nav_login { Line 4754  table#LC_top_nav td.LC_top_nav_login {
   text-align: center;    text-align: center;
 }  }
   
 table.LC_breadcrumbs td,  .LC_breadcrumbs_component {
 table.LC_docs_path td  {      float: right;
   background: $tabbg;      margin: 0 1em;
   color: $fontmenu;  
   font-family: $sans;  
   font-size: smaller;  
 }  }
   .LC_breadcrumbs_component img {
 table.LC_breadcrumbs td.LC_breadcrumbs_component,      vertical-align: middle;
 table.LC_docs_path td.LC_docs_path_component {  
   background: $tabbg;  
   color: $fontmenu;  
   font-family: $sans;  
   font-size: larger;  
   text-align: right;  
 }  }
   
 td.LC_table_cell_checkbox {  td.LC_table_cell_checkbox {
Line 4850  table#LC_mainmenu td.LC_mainmenu_column Line 4774  table#LC_mainmenu td.LC_mainmenu_column
  font-size: 70%;   font-size: 70%;
 }  }
   
 #LC_head_subbox {  #LC_breadcrumbs {
  clear:both;   clear:both;
  background: $sidebg;   background: $sidebg;
  border-bottom: 1px solid $lg_border_color;   border-bottom: 1px solid $lg_border_color;
  height: 32px;  
  line-height: 32px;    line-height: 32px; 
  margin: 0;   margin: 0;
  padding: 0;   padding: 0;
 }  }
   
 #LC_head_subbox2 { /* FIXME: replace by LC_head_subbox once lonhtmlcommon::breadcrumbs has been fixed */  /* Preliminary fix to hide breadcrumbs inside remote control window */
   #LC_remote #LC_breadcrumbs {
       display:none;
   }
   
   #LC_head_subbox {
  clear:both;   clear:both;
  background: #F8F8F8; /* $sidebg; */   background: #F8F8F8; /* $sidebg; */
  border-bottom: 1px solid $lg_border_color;   border-bottom: 1px solid $lg_border_color;
Line 4878  table#LC_mainmenu td.LC_mainmenu_column Line 4806  table#LC_mainmenu td.LC_mainmenu_column
   
 .LC_menubuttons_inline_text {  .LC_menubuttons_inline_text {
   color: $font;    color: $font;
   font-family: $sans;  
   font-size: 90%;    font-size: 90%;
   padding-left:3px;    padding-left:3px;
 }  }
Line 4890  table#LC_mainmenu td.LC_mainmenu_column Line 4817  table#LC_mainmenu td.LC_mainmenu_column
 .LC_menubuttons_category {  .LC_menubuttons_category {
   color: $font;    color: $font;
   background: $pgbg;    background: $pgbg;
   font-family: $sans;  
   font-size: larger;    font-size: larger;
   font-weight: bold;    font-weight: bold;
 }  }
Line 4900  td.LC_menubuttons_text { Line 4826  td.LC_menubuttons_text {
 }  }
   
 .LC_current_location {  .LC_current_location {
   font-family: $sans;  
   background: $tabbg;    background: $tabbg;
 }  }
   
 .LC_new_mail {  .LC_new_mail {
   font-family: $sans;  
   background: $tabbg;    background: $tabbg;
   font-weight: bold;    font-weight: bold;
 }  }
   
 .LC_preferences_labeltext {  
   font-family: $sans;  
   text-align: right;  
 }  
   
 .LC_roleslog_note {  .LC_roleslog_note {
   font-size: small;    font-size: small;
 }  }
   
 .LC_mail_functions {  
     font-weight: bold;  
 }  
   
 table.LC_data_table,  table.LC_data_table,
 table.LC_mail_list {  table.LC_mail_list {
   border: 1px solid #000000;    border: 1px solid #000000;
Line 5170  span.LC_current_location { Line 5085  span.LC_current_location {
   
 span.LC_parm_menu_item {  span.LC_parm_menu_item {
   font-size: larger;    font-size: larger;
   font-family: $sans;  
 }  }
   
 span.LC_parm_scope_all {  span.LC_parm_scope_all {
Line 5225  table#LC_helpmenu { Line 5139  table#LC_helpmenu {
   
 table#LC_helpmenu fieldset legend {  table#LC_helpmenu fieldset legend {
   font-size: larger;    font-size: larger;
   font-weight: bold;  
 }  }
   
 table#LC_helpmenu_links {  table#LC_helpmenu_links {
Line 5278  table.LC_pick_box { Line 5191  table.LC_pick_box {
 }  }
   
 table.LC_pick_box td.LC_pick_box_title {  table.LC_pick_box td.LC_pick_box_title {
   background: $tabbg;    background: $sidebg;
   font-weight: bold;    font-weight: bold;
   text-align: right;    text-align: right;
   vertical-align: top;    vertical-align: top;
Line 5286  table.LC_pick_box td.LC_pick_box_title { Line 5199  table.LC_pick_box td.LC_pick_box_title {
   padding: 8px;    padding: 8px;
 }  }
   
 table.LC_pick_box td.LC_selfenroll_pick_box_title {  
   background: $tabbg;  
   font-weight: bold;  
   text-align: right;  
   width: 350px;  
   padding: 8px;  
 }  
   
 table.LC_pick_box td.LC_pick_box_value {  table.LC_pick_box td.LC_pick_box_value {
   text-align: left;    text-align: left;
   padding: 8px;    padding: 8px;
Line 5413  table.LC_notify_front_page td { Line 5318  table.LC_notify_front_page td {
 }  }
   
 .LC_topic_bar {  .LC_topic_bar {
   font-family: $sans;  
   font-weight: bold;    font-weight: bold;
   width: 100%;    width: 100%;
   background: $tabbg;    background: $tabbg;
Line 5442  table.LC_status_selector td { Line 5346  table.LC_status_selector td {
   
 div.LC_feedback_link {  div.LC_feedback_link {
   clear: both;    clear: both;
   background: white;    background: $sidebg;
   width: 100%;    width: 100%;
     padding-bottom: 10px;
     border: 1px $tabbg solid;
     height: 22px;
     line-height: 22px;
     padding-top: 5px;
   }
   
   div.LC_feedback_link img {
     height: 22px;
     vertical-align:middle;
   }
   
   div.LC_feedback_link a{
     text-decoration: none;
   }
   
   div.LC_comblock {
     display:inline; 
     color:$font;
     font-size:90%;
   }
   
   div.LC_feedback_link div.LC_comblock {
     padding-left:5px;
   }
   
   div.LC_feedback_link div.LC_comblock a {
     color:$font;
 }  }
   
 span.LC_feedback_link {  span.LC_feedback_link {
   background: $feedback_link_bg;    /* background: $feedback_link_bg; */
   font-size: larger;    font-size: larger;
 }  }
   
 span.LC_message_link {  span.LC_message_link {
   background: $feedback_link_bg;    /* background: $feedback_link_bg; */
   font-size: larger;    font-size: larger;
   position: absolute;    position: absolute;
   right: 1em;    right: 1em;
Line 5470  table.LC_prior_tries td { Line 5402  table.LC_prior_tries td {
   
 .LC_answer_correct {  .LC_answer_correct {
   background: lightgreen;    background: lightgreen;
   font-family: $sans;  
   color: darkgreen;    color: darkgreen;
   padding: 6px;    padding: 6px;
 }  }
   
 .LC_answer_charged_try {  .LC_answer_charged_try {
   background: #FFAAAA;    background: #FFAAAA;
   font-family: $sans;  
   color: darkred;    color: darkred;
   padding: 6px;    padding: 6px;
 }  }
Line 5486  table.LC_prior_tries td { Line 5416  table.LC_prior_tries td {
 .LC_answer_no_grade,  .LC_answer_no_grade,
 .LC_answer_late {  .LC_answer_late {
   background: lightyellow;    background: lightyellow;
   font-family: $sans;  
   color: black;    color: black;
   padding: 6px;    padding: 6px;
 }  }
   
 .LC_answer_previous {  .LC_answer_previous {
   background: lightblue;    background: lightblue;
   font-family: $sans;  
   color: darkblue;    color: darkblue;
   padding: 6px;    padding: 6px;
 }  }
   
 .LC_answer_no_message {  .LC_answer_no_message {
   background: #FFFFFF;    background: #FFFFFF;
   font-family: $sans;  
   color: black;    color: black;
   padding: 6px;    padding: 6px;
 }  }
   
 .LC_answer_unknown {  .LC_answer_unknown {
   background: orange;    background: orange;
   font-family: $sans;  
   color: black;    color: black;
   padding: 6px;    padding: 6px;
 }  }
Line 5542  table.LC_prior_match tr td { Line 5468  table.LC_prior_match tr td {
   border: 1px solid #000000;    border: 1px solid #000000;
 }  }
   
 td.LC_nobreak,  .LC_nobreak {
 span.LC_nobreak {  
   white-space: nowrap;    white-space: nowrap;
 }  }
   
Line 5567  table.LC_docs_documents td.LC_docs_docum Line 5492  table.LC_docs_documents td.LC_docs_docum
   padding: 4px;    padding: 4px;
 }  }
   
 .LC_docs_entry_move {  div.LC_docs_entry_move {
   border: none;    border: 1px solid #BBBBBB;
   border-collapse: collapse;  
 }  
   
 .LC_docs_entry_move td {  
   border: 2px solid #BBBBBB;  
   background: #DDDDDD;    background: #DDDDDD;
     width: 22px;
     padding: 1px;
     margin: 0;
 }  }
   
 .LC_docs_editor td.LC_docs_entry_commands {  table.LC_data_table tr > td.LC_docs_entry_commands,
   table.LC_data_table tr > td.LC_docs_entry_parameter {
   background: #DDDDDD;    background: #DDDDDD;
   font-size: x-small;    font-size: x-small;
 }  }
   
   .LC_docs_entry_parameter {
     white-space: nowrap;
   }
   
 .LC_docs_copy {  .LC_docs_copy {
   color: #000099;    color: #000099;
 }  }
Line 5603  table.LC_docs_documents td.LC_docs_docum Line 5531  table.LC_docs_documents td.LC_docs_docum
   font-size: x-small;    font-size: x-small;
 }  }
   
 .LC_docs_editor td.LC_docs_entry_title,  
 .LC_docs_editor td.LC_docs_entry_icon {  
   background: #FFFFBB;  
 }  
   
 .LC_docs_editor td.LC_docs_entry_parameter {  
   background: #BBBBFF;  
   font-size: x-small;  
   white-space: nowrap;  
 }  
   
 table.LC_docs_adddocs td,  table.LC_docs_adddocs td,
 table.LC_docs_adddocs th {  table.LC_docs_adddocs th {
   border: 1px solid #BBBBBB;    border: 1px solid #BBBBBB;
Line 5745  div.LC_edit_problem_editxml_header div { Line 5662  div.LC_edit_problem_editxml_header div {
   margin-top: 5px;    margin-top: 5px;
 }  }
   
 div.LC_edit_problem_header_edit_row {  
   background: $tabbg;  
   padding: 3px;  
   margin-bottom: 5px;  
 }  
   
 div.LC_edit_problem_header_title {  div.LC_edit_problem_header_title {
   font-weight: bold;    font-weight: bold;
   font-size: larger;    font-size: larger;
Line 5780  div.LC_edit_problem_saves { Line 5691  div.LC_edit_problem_saves {
   padding-bottom: 5px;    padding-bottom: 5px;
 }  }
   
 hr.LC_edit_problem_divide {  
   clear: both;  
   color: $tabbg;  
   background-color: $tabbg;  
   height: 3px;  
   border: none;  
 }  
   
 img.stift{  img.stift{
   border-width: 0;    border-width: 0;
   vertical-align: middle;    vertical-align: middle;
Line 5806  table#LC_mainmenu td.LC_mainmenu_col_fie Line 5709  table#LC_mainmenu td.LC_mainmenu_col_fie
 .LC_mainmenu_fieldset_category {  .LC_mainmenu_fieldset_category {
   color: $font;    color: $font;
   background: $pgbg;    background: $pgbg;
   font-family: $sans;  
   font-size: small;    font-size: small;
   font-weight: bold;    font-weight: bold;
 }  }
Line 5852  h2,h3,h4,h5,h6 { Line 5754  h2,h3,h4,h5,h6 {
  border-bottom:solid 1px $lg_border_color;   border-bottom:solid 1px $lg_border_color;
 }  }
   
   .LC_Box > .LC_hcell {
       margin: 0 -10px 10px -10px;
   }
   
 .LC_noBorder {  .LC_noBorder {
         border: 0;          border: 0;
 }  }
   
   
 /* Main Header with discription of Person, Course, etc. */  
   
 .LC_Right {  .LC_Right {
         float: right;          float: right;
         margin: 0;          margin: 0;
Line 5887  dl,ul,div,fieldset { Line 5790  dl,ul,div,fieldset {
 /* overflow: hidden; */  /* overflow: hidden; */
 }  }
   
   fieldset > legend {
       font-weight: bold;
       padding: 0 5px 0 5px;
   }
   
 #LC_nav_bar {  #LC_nav_bar {
     float: left;      float: left;
     margin: 0;      margin: 0.2em 0 0 0;
 }  }
   
 #LC_nav_bar em{  #LC_nav_bar em{
Line 5899  dl,ul,div,fieldset { Line 5807  dl,ul,div,fieldset {
   
 ol.LC_smallMenu {  ol.LC_smallMenu {
     float: right;      float: right;
       margin: 0.2em 0 0 0;
 }  }
   
 ol.LC_smallMenu, ol#LC_PathBreadcrumbs {  ol#LC_PathBreadcrumbs {
  margin: 0;   margin: 0;
 }  }
   
Line 5928  ul#LC_TabMainMenuContent { Line 5837  ul#LC_TabMainMenuContent {
     list-style: none;      list-style: none;
     padding: 0;      padding: 0;
     margin: 0;      margin: 0;
     float:left;  
     width: 100%;      width: 100%;
 }  }
   
 ul#LC_TabMainMenuContent li {  ul#LC_TabMainMenuContent li {
     float: left;  
     font-weight: bold;      font-weight: bold;
     line-height: 1.8em;      line-height: 1.8em;
     padding: 0 0.8em;       padding: 0 0.8em; 
Line 5942  ul#LC_TabMainMenuContent li { Line 5849  ul#LC_TabMainMenuContent li {
     vertical-align: middle;      vertical-align: middle;
 }  }
   
 ul.LC_TabContent ,  ul.LC_TabContent {
 ul.LC_TabContentBigger {  
  display:block;   display:block;
    background: $sidebg;
    border-bottom: solid 1px $lg_border_color;
  list-style:none;   list-style:none;
  margin: 0;   margin: 0 -10px;
  padding: 0;   padding: 0;
 }  }
   
 ul.LC_TabContent li,  ul.LC_TabContent li,
 ul.LC_TabContentBigger li {  ul.LC_TabContentBigger li {
  display: inline;  
  border-right: solid 1px $lg_border_color;  
  float:left;   float:left;
  line-height:140%;  
  white-space:nowrap;  
 }  }
   
 ul#LC_TabMainMenuContent li a {  ul#LC_TabMainMenuContent li a {
Line 5965  ul#LC_TabMainMenuContent li a { Line 5869  ul#LC_TabMainMenuContent li a {
 }  }
   
 ul.LC_TabContent {  ul.LC_TabContent {
  min-height:1.6em;   min-height:1.5em;
 }  }
   
 ul.LC_TabContent li {  ul.LC_TabContent li {
Line 5975  ul.LC_TabContent li { Line 5879  ul.LC_TabContent li {
  border-bottom:solid 1px $lg_border_color;   border-bottom:solid 1px $lg_border_color;
 }  }
   
   ul.LC_TabContent .right {
    float:right;
   }
   
 ul.LC_TabContent li a, ul.LC_TabContent li {  ul.LC_TabContent li a, ul.LC_TabContent li {
  color:rgb(47,47,47);   color:rgb(47,47,47);
  text-decoration:none;   text-decoration:none;
Line 5985  ul.LC_TabContent li a, ul.LC_TabContent Line 5893  ul.LC_TabContent li a, ul.LC_TabContent
   
 ul.LC_TabContent li:hover, ul.LC_TabContent li.active {  ul.LC_TabContent li:hover, ul.LC_TabContent li.active {
         background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center;          background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center;
  border-bottom:solid 1px #FFFFFF;   border-bottom:solid 2px #FFFFFF;
  padding-right: 16px;   padding-right: 16px;
 }  }
   
 ul.LC_TabContentBigger li {  #maincoursedoc {
  vertical-align:bottom;   clear:both;
  border-top:solid 1px $lg_border_color;  
  border-left:solid 1px $lg_border_color;  
  padding:5px 10px 5px 10px;  
  margin-left:2px;  
  background:url(/adm/lonIcons/lightGreyBG.png) repeat-x left top;  
 }  }
   
 ul.LC_TabContentBigger li:hover,   ul.LC_TabContentBigger {
 ul.LC_TabContentBigger li.active {          display:block;
  background:url(/adm/lonIcons/lightGreyBG.png) repeat-x right bottom;          list-style:none;
           padding: 0;
 }  }
   
 ul.LC_TabContentBigger li,   ul.LC_TabContentBigger li {
           vertical-align:bottom;
           height: 30px;
           font-size:110%;
           font-weight:bold;
           color: #737373;
   }
   
   
 ul.LC_TabContentBigger li a {  ul.LC_TabContentBigger li a {
  font-size:110%;          background:url('/adm/lonIcons/tabbgleft.gif') left bottom no-repeat;
  font-weight:bold;   height: 30px;
    line-height: 30px;
    text-align: center;
    display: block;
    text-decoration: none;
   }
   
   ul.LC_TabContentBigger li:hover a, 
   ul.LC_TabContentBigger li.active a {
    background:url('/adm/lonIcons/tabbgleft.gif') left top no-repeat;
    color:$font;
    text-decoration: underline;
   }
   
   
   ul.LC_TabContentBigger li b {
    background: url('/adm/lonIcons/tabbgright.gif') no-repeat right bottom;
    display: block;
    float: left;
    padding: 0 30px;
   }
   
   ul.LC_TabContentBigger li:hover b,
   ul.LC_TabContentBigger li.active b {
           background:url('/adm/lonIcons/tabbgright.gif') right top no-repeat;
           color:$font;
    border-bottom: 1px solid #FFFFFF;
   }
   
   
   ul.LC_CourseBreadcrumbs {
     background: $sidebg;
     line-height: 32px;
     padding-left: 10px;
     margin: 0 0 10px 0;
     list-style-position: inside;
   
 }  }
   
 ol#LC_MenuBreadcrumbs,   ol#LC_MenuBreadcrumbs, 
 ol#LC_PathBreadcrumbs,   ol#LC_PathBreadcrumbs {
 ul#LC_CourseBreadcrumbs {  
  padding-left: 10px;   padding-left: 10px;
  margin: 0;   margin: 0;
  list-style-position: inside;   list-style-position: inside;
Line 6019  ul#LC_CourseBreadcrumbs { Line 5966  ul#LC_CourseBreadcrumbs {
   
 ol#LC_MenuBreadcrumbs li,   ol#LC_MenuBreadcrumbs li, 
 ol#LC_PathBreadcrumbs li,   ol#LC_PathBreadcrumbs li, 
 ul#LC_CourseBreadcrumbs li {  ul.LC_CourseBreadcrumbs li {
  display: inline;      display: inline;
  padding: 0 0 0 10px;      white-space: nowrap;
  overflow:hidden;  
 }  }
   
 ol#LC_MenuBreadcrumbs li a,  ol#LC_MenuBreadcrumbs li a,
 ul#LC_CourseBreadcrumbs li a {  ul.LC_CourseBreadcrumbs li a {
  text-decoration: none;   text-decoration: none;
  font-size:90%;   font-size:90%;
 }  }
Line 6037  ol#LC_PathBreadcrumbs li a { Line 5983  ol#LC_PathBreadcrumbs li a {
  font-weight:bold;   font-weight:bold;
 }  }
   
 .LC_BoxPadding {  .LC_Box {
  padding: 10px;      border: solid 1px $lg_border_color;
 }      padding: 0 10px 10px 10px;
   
 .LC_ContentBoxSpecial {  
  border: solid 1px $lg_border_color;  
 }  
   
 .LC_ContentBoxSpecialContactInfo {  
  border: solid 1px $lg_border_color;  
  max-width:25%;  
  min-width:25%;  
 }  }
   
 .LC_AboutMe_Image {  .LC_AboutMe_Image {
Line 6137  div.LC_columnSection>* { Line 6074  div.LC_columnSection>* {
  overflow:hidden;   overflow:hidden;
 }  }
   
 .ContentBoxSpecialTemplate {  
         border: solid 1px $lg_border_color;  
 }  
   
 .ContentBoxTemplate {  
         padding:10px;  
 }  
   
 div.LC_columnSection > .ContentBoxTemplate,  
 div.LC_columnSection > .ContentBoxSpecialTemplate {  
         width: 600px;  
 }  
   
 .clear {  
  clear: both;  
  line-height: 0;  
  font-size: 0;  
  height: 0;  
 }  
   
 .LC_loginpage_container {  .LC_loginpage_container {
  text-align:left;   text-align:left;
  margin : 0 auto;   margin : 0 auto;
Line 6211  table em { Line 6128  table em {
 table.LC_tableBrowseRes,  table.LC_tableBrowseRes,
 table.LC_tableOfContent {  table.LC_tableOfContent {
         border:none;          border:none;
  border-spacing: 1;   border-spacing: 1px;
  padding: 3px;   padding: 3px;
  background-color: #FFFFFF;   background-color: #FFFFFF;
  font-size: 90%;   font-size: 90%;
Line 6305  a.LC_toolbarItem { Line 6222  a.LC_toolbarItem {
  background-color:transparent;   background-color:transparent;
 }  }
   
 ul.LC_functionslist li {  ul.LC_funclist li {
   float: left;    float: left;
   white-space: nowrap;    white-space: nowrap;
   height: 35px; /* at least as high as heighest list item */    height: 35px; /* at least as high as heighest list item */
Line 6440  sub xml_begin { Line 6357  sub xml_begin {
             .'<html xmlns:math="http://www.w3.org/1998/Math/MathML" '               .'<html xmlns:math="http://www.w3.org/1998/Math/MathML" ' 
     .'xmlns="http://www.w3.org/1999/xhtml">';      .'xmlns="http://www.w3.org/1999/xhtml">';
     } else {      } else {
  $output='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>';   $output='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
              .'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
     }      }
     return $output;      return $output;
 }  }
Line 6516  $args - additional optional args support Line 6434  $args - additional optional args support
                                     a html attribute                                      a html attribute
              force_register -> if is true will turn on the &bodytag()               force_register -> if is true will turn on the &bodytag()
                                     $forcereg arg                                      $forcereg arg
              body_title     -> alternate text to use instead of $title  
                                     in the title box that appears, this text  
                                     is not auto translated like the $title is  
              frameset       -> if true will start with a <frameset>               frameset       -> if true will start with a <frameset>
                                     rather than <body>                                      rather than <body>
              skip_phases    -> hash ref of                skip_phases    -> hash ref of 
Line 6530  $args - additional optional args support Line 6445  $args - additional optional args support
              inherit_jsmath -> when creating popup window in a page,               inherit_jsmath -> when creating popup window in a page,
                                     should it have jsmath forced on by the                                      should it have jsmath forced on by the
                                     current page                                      current page
                bread_crumbs ->             Array containing breadcrumbs
                bread_crumbs_components ->  if exists show it as headline else show only the breadcrumbs
   
 =back  =back
   
Line 6562  sub start_page { Line 6479  sub start_page {
     my $attr_string = &make_attr_string($args->{'force_register'},      my $attr_string = &make_attr_string($args->{'force_register'},
  $args->{'add_entries'});   $args->{'add_entries'});
     $result .= "\n<frameset $attr_string>\n";      $result .= "\n<frameset $attr_string>\n";
  } else {          } else {
     $result .=              $result .=
  &bodytag($title,                   &bodytag($title, 
  $args->{'function'},       $args->{'add_entries'},                           $args->{'function'},       $args->{'add_entries'},
  $args->{'only_body'},      $args->{'domain'},                           $args->{'only_body'},      $args->{'domain'},
  $args->{'force_register'}, $args->{'body_title'},                           $args->{'force_register'}, $args->{'no_nav_bar'},
  $args->{'no_nav_bar'},     $args->{'bgcolor'},                           $args->{'bgcolor'},        $args->{'no_inline_link'},
  $args->{'no_inline_link'},                           $args);
  $args);          }
  }  
     }      }
   
     if ($args->{'js_ready'}) {      if ($args->{'js_ready'}) {
Line 6843  sub get_users_function { Line 6759  sub get_users_function {
     if ($env{'request.role'}=~/^(su|dc|ad|li)/) {      if ($env{'request.role'}=~/^(su|dc|ad|li)/) {
         $function='admin';          $function='admin';
     }      }
     if (($env{'request.role'}=~/^(au|ca)/) ||      if (($env{'request.role'}=~/^(au|ca|aa)/) ||
         ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) {          ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) {
         $function='author';          $function='author';
     }      }
Line 8593  sub csv_print_samples { Line 8509  sub csv_print_samples {
     $r->print(&mt('Samples').'<br />'.&start_data_table().      $r->print(&mt('Samples').'<br />'.&start_data_table().
               &start_data_table_header_row());                &start_data_table_header_row());
     foreach my $sample (sort({$a <=> $b} keys(%{ $samples->[0] }))) {       foreach my $sample (sort({$a <=> $b} keys(%{ $samples->[0] }))) { 
         $r->print('<th>'.&mt('Column&nbsp;[_1]',($sample+1)).'</th>'); }          $r->print('<th>'.&mt('Column [_1]',($sample+1)).'</th>'); }
     $r->print(&end_data_table_header_row());      $r->print(&end_data_table_header_row());
     foreach my $hash (@$samples) {      foreach my $hash (@$samples) {
  $r->print(&start_data_table_row());   $r->print(&start_data_table_row());
Line 10242  sub group_term { Line 10158  sub group_term {
     my $crstype = &course_type();      my $crstype = &course_type();
     my %names = (      my %names = (
                   'Course' => 'group',                    'Course' => 'group',
                   'Group' => 'team',                    'Community' => 'group',
                 );                  );
     return $names{$crstype};      return $names{$crstype};
 }  }
Line 10435  sub init_user_environment { Line 10351  sub init_user_environment {
                 &Apache::lonnet::usertools_access($username,$domain,$tool,'reload');                  &Apache::lonnet::usertools_access($username,$domain,$tool,'reload');
         }          }
   
         foreach my $crstype ('official','unofficial') {          foreach my $crstype ('official','unofficial','community') {
             $userenv{'canrequest.'.$crstype} =              $userenv{'canrequest.'.$crstype} =
                 &Apache::lonnet::usertools_access($username,$domain,$crstype,                  &Apache::lonnet::usertools_access($username,$domain,$crstype,
                                                   'reload','requestcourses');                                                    'reload','requestcourses');

Removed from v.1.824  
changed lines
  Added in v.1.871


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