Diff for /loncom/interface/loncommon.pm between versions 1.925.2.11 and 1.925.2.25

version 1.925.2.11, 2010/02/25 16:01:15 version 1.925.2.25, 2010/12/06 18:00:41
Line 1978  sub select_dom_form { Line 1978  sub select_dom_form {
             ($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom;              ($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom;
         if ($showdomdesc) {          if ($showdomdesc) {
             if ($dom ne '') {              if ($dom ne '') {
                 my $domdesc = &Apache::lonnet::domain($dom,'description');                  my $domdesc;
                   if ($name eq 'srchdomain') {
                       if ($dom =~ /^\w+ci$/) {
                           $domdesc = 'Faculty';
                       } else {
                           $domdesc = 'Students';
                       }
                   } else {
                       $domdesc = &Apache::lonnet::domain($dom,'description');
                   }
                 if ($domdesc ne '') {                  if ($domdesc ne '') {
                     $selectdomain .= ' ('.$domdesc.')';                      $selectdomain .= ' ('.$domdesc.')';
                 }                  }
Line 2469  sub authform_internal{ Line 2478  sub authform_internal{
     }      }
     $autharg = '<input type="password" size="10" name="intarg" value="'.      $autharg = '<input type="password" size="10" name="intarg" value="'.
                $intarg.'" onchange="'.$jscall.'" />';                 $intarg.'" onchange="'.$jscall.'" />';
     $result = &mt      my $authtext = '[_1] Internally authenticated (with initial password [_2])';
         ('[_1] Internally authenticated (with initial password [_2])',      if ($in{'caller'} eq 'requestcrs') {
          '<label>'.$authtype,'</label>'.$autharg);          $authtext = "[_1] Students' password, if none in the uploaded file: [_2]";
       }
       $result = &mt($authtext,'<label>'.$authtype,'</label>'.$autharg);
     $result.="<label><input type=\"checkbox\" name=\"visible\" onclick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>';      $result.="<label><input type=\"checkbox\" name=\"visible\" onclick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>';
     return $result;      return $result;
 }  }
Line 4452  sub bodytag { Line 4463  sub bodytag {
     my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,      my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,
         $no_nav_bar,$bgcolor,$no_inline_link,$args)=@_;          $no_nav_bar,$bgcolor,$no_inline_link,$args)=@_;
   
       my $public;
       if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public'))
           || ($env{'user.name'} eq '') && ($env{'user.domain'} eq '')) {
           $public = 1;
       }
     if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); }      if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); }
   
     $function = &get_users_function() if (!$function);      $function = &get_users_function() if (!$function);
Line 4480  sub bodytag { Line 4496  sub bodytag {
 # realm  # realm
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
         if ($env{'request.role'} !~ /^cr/) {          if ($env{'request.role'} !~ /^cr/) {
             if (($custommenu) && ($role eq 'cm')) {              if (($custommenu) && (($role eq 'cm') || ($env{'form.context'} eq 'requestcrs'))) {
                 undef($role);                  undef($role);
             } else {              } else {
                 $role = &Apache::lonnet::plaintext($role,&course_type());                  $role = &Apache::lonnet::plaintext($role,&course_type());
             }              }
         }          }
         if ($env{'request.course.sec'}) {          if (defined($role) && $env{'request.course.sec'}) {
             $role .= ('&nbsp;'x2).'-&nbsp;'.&mt('section:').'&nbsp;'.$env{'request.course.sec'};              $role .= ('&nbsp;'x2).'-&nbsp;'.&mt('section:').'&nbsp;'.$env{'request.course.sec'};
         }             }
  $realm = $env{'course.'.$env{'request.course.id'}.'.description'};          if ($env{'form.context'} eq 'requestcrs') {
               undef($realm);
           } else {
       $realm = $env{'course.'.$env{'request.course.id'}.'.description'};
           }
     } else {      } else {
         if (($custommenu) && ($role eq 'cm')) {          if (($custommenu) && ($role eq 'cm')) {
             undef($role);              undef($role);
Line 4513  sub bodytag { Line 4533  sub bodytag {
     }       } 
   
     my $name = &plainname($env{'user.name'},$env{'user.domain'});      my $name = &plainname($env{'user.name'},$env{'user.domain'});
     if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') {      if ($public) {
  undef($role);   undef($role);
     } else {      } else {
  $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'});   $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'});
Line 4534  sub bodytag { Line 4554  sub bodytag {
     $role = '<span class="LC_nobreak">('.$role.')</span>' if $role;      $role = '<span class="LC_nobreak">('.$role.')</span>' if $role;
     &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']);      &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']);
   
     if ($env{'environment.remote'} eq 'off') {      if ($env{'environment.remote'} ne 'on') {
         # No Remote          # No Remote
         if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') {           if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { 
             return $bodytag;               return $bodytag; 
Line 4547  sub bodytag { Line 4567  sub bodytag {
         #    }          #    }
   
         my $role_selector;          my $role_selector;
         if (($custommenu) && ($env{'request.course.id'}) &&           if (($custommenu) && !($env{'form.context'} eq 'requestcrs') && 
             ($env{'course.'.$env{'request.course.id'}.'.domain'} eq 'gcitest') &&              ($env{'request.course.id'}) && 
             ($env{'request.role'} !~ m{^st\./gcitest/$match_courseid})) {              ($env{'course.'.$env{'request.course.id'}.'.domain'} =~ /^\w+citest$/)) {
             $role_selector = &Apache::lonmenu::roles_selector(              $role_selector = &Apache::lonmenu::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'}  );
Line 4557  sub bodytag { Line 4577  sub bodytag {
                 $role_selector = '<br />'.$role_selector;                  $role_selector = '<br />'.$role_selector;
             }              }
         }          }
           my $cid = $env{'request.course.id'};
           my %cicourses;
           my $udom = $env{'user.domain'};
           my %allnums = &get_faculty_cnums();
           if (($udom ne '') && (ref($allnums{$udom}) eq 'HASH')) {
                foreach my $key (%{$allnums{$udom}}) {
                    $cicourses{$udom.'_'.$key} = $allnums{$udom}->{$key};
                }
           }
           if (($custommenu && $cid && !$cicourses{$cid}) && 
                !($env{'form.context'} eq 'requestcrs') ||
                ($env{'user.domain'} =~ /^\w+citest$/)) {
               my $role = 'st';
               if ($custommenu) {
                   $role = 'cc';
               }
               my ($switcher_js,$switcher,$formname);
               $formname = 'pickrole';
               my %courses = &existing_gcitest_courses($role);
               my $numcourses = keys(%courses);
               my $reqdcount = 0;
               if ($cid) {
                   if ($courses{$cid}) {
                       $reqdcount = 1; 
                   }
               }
               if ($numcourses > $reqdcount) {
                   $switcher = &gcitest_switcher($role,$formname,%courses);
                   my $current;
                   if ($cid) {
                       $current = $role.'./'.$env{'course.'.$cid.'.domain'}.
                                  '/'.$env{'course.'.$cid.'.num'};
                   }
                   $switcher_js = &gcitest_switcher_js($current,$numcourses,$formname);
                   if ($switcher_js) {  
                       $switcher_js= <<"ENDSCRIPT";
   <script type="text/javascript">
   // <![CDATA[
   
   $switcher_js
   
   // ]]>
   </script>
   ENDSCRIPT
                   }
               }
               if ($switcher) {
                   $switcher = $switcher_js.$switcher;
                   if ($role_selector) {
                       $role_selector .= '&nbsp;&nbsp;&nbsp;'.$switcher;
                   } else {
                       $role_selector .= '<br />'.$switcher;
                   }
               }
           }
   
         if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) {          if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) {
              if ($dc_info) {               if ($dc_info) {
Line 4566  sub bodytag { Line 4641  sub bodytag {
                 <em>$realm</em> $dc_info</div>|;                  <em>$realm</em> $dc_info</div>|;
             return $bodytag;              return $bodytag;
         }          }
           if ($env{'request.noversionuri'} eq '/adm/navmaps' &&
                   $env{'environment.remotenavmap'} eq 'on') {
               return $bodytag;
           }
   
           if ($cid && $cicourses{$cid} eq 'tutorial') {
               $bodytag .= '<div class="LC_page_header">';
           }
    
         $bodytag .= qq|<div id="LC_nav_bar">$name $role $role_selector</div>|;          $bodytag .= qq|<div id="LC_nav_bar">$name $role $role_selector</div>|;
   
         $bodytag .= Apache::lonhtmlcommon::scripttag(          $bodytag .= Apache::lonhtmlcommon::scripttag(
Line 4578  sub bodytag { Line 4661  sub bodytag {
             $dc_info = &dc_courseid_toggle($dc_info);              $dc_info = &dc_courseid_toggle($dc_info);
         }          }
         $bodytag .= qq|<div id="LC_realm">$realm $dc_info</div>|;          $bodytag .= qq|<div id="LC_realm">$realm $dc_info</div>|;
           if ($cid && $cicourses{$cid} eq 'tutorial') {
               $bodytag .= '</div>';
           }
   
         #don't show menus for public users          #don't show menus for public users
         if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){          if(!$public){
             if (($custommenu) &&               if (($custommenu) && 
                 ($env{'request.role'} !~ m{^st\./gcitest/$match_courseid})) {                  ($env{'request.role'} !~ m{^st\./(\w+)citest/$match_courseid})) {
                 $bodytag .= &Apache::lonmenu::gci_secondary_menu();                  $bodytag .= &Apache::lonmenu::gci_secondary_menu();
             } else {               } elsif ($env{'request.role'} ne 'cm' || &check_for_gci_dc()) {    
                 $bodytag .= Apache::lonmenu::secondary_menu();                  $bodytag .= Apache::lonmenu::secondary_menu();
             }              }
             $bodytag .= Apache::lonmenu::serverform();              $bodytag .= Apache::lonmenu::serverform();
Line 4594  sub bodytag { Line 4680  sub bodytag {
                                 $args->{'bread_crumbs'});                                  $args->{'bread_crumbs'});
             } elsif ($forcereg) {               } elsif ($forcereg) { 
                 $bodytag .= &Apache::lonmenu::innerregister($forcereg);                  $bodytag .= &Apache::lonmenu::innerregister($forcereg);
               } elsif ($custommenu && $env{'request.course.id'} && 
                        &Apache::lonnet::allowed('mdc', $env{'request.course.id'})) {
                   if ((($env{'request.noversionuri'} eq '/adm/navmaps') && 
                       ($env{'request.noversionuri'} ne 'on')) ||
                       (($env{'request.noversionuri'} eq '/adm/coursedocs') &&
                        (!($env{'form.context'} eq 'requestcrs'))) ||
                       (($env{'request.noversionuri'} eq '/adm/createuser') &&
                        (!($env{'form.context'} eq 'requestcrs'))) ||
                       ($env{'request.noversionuri'} eq '/adm/whatsnew') ||
                       ($env{'request.noversionuri'} eq '/cgi-bin/printout.pl') ||
                       ($env{'request.noversionuri'} eq '/adm/printout') ||
                       ($env{'request.noversionuri'} eq '/adm/statistics')) {
   
                       my @advtools = &concept_test_manager();
                       &Apache::lonhtmlcommon::clear_breadcrumbs();
                       &Apache::lonhtmlcommon::add_breadcrumb_tool(
                                         'advtools',@advtools);
                       my $advlinks;
                       my $legendtext = '<a class="LC_menubuttons_link" href="/adm/menu">'.&mt('Management').'</a>';
                       &Apache::lonhtmlcommon::render_advtools(\$advlinks,$legendtext);
                       $bodytag .= $advlinks;
                   }
             }              }
         }else{          }else{
             # this is to seperate menu from content when there's no secondary              # this is to seperate menu from content when there's no secondary
Line 4602  sub bodytag { Line 4710  sub bodytag {
             $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end');               $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); 
         }          }
   
         #SD testing  
         #$bodytag .= Apache::lonmenu::menubuttons($forcereg);  
         return $bodytag;          return $bodytag;
     }      }
   
Line 4641  $bodytag Line 4747  $bodytag
 ENDBODY  ENDBODY
 }  }
   
   sub concept_test_manager {
       my @advtools;
       my  %items = (
                      docs => { 
                                 desc    => 'Edit Test',
                                 action  => "go('/adm/coursedocs')",
                                 tooltip => 'Assemble or modify Concept Test'
                              },
                      cprv => {
                                 desc => 'Enrollment/Activity',
                                 action => "go('/adm/createuser')",
                                 tooltip => 'Enrollment and student activity',
                              },
                      new => { 
                                 desc   => "What's New?",
                                 action => "go('/adm/whatsnew')",
                                 tooltip => 'Recent events/action items in Concept Test' ,
                              },
                      prnt => {
                                 desc => 'Print Test',
                                 action => "go('/adm/printout');",
                                 tooltip => 'Prepare printable Concept Test',
                              },
                      chrt => { 
                                 desc   => 'Test Statistics',
                                 action => "go('/adm/statistics');",
                                 tooltip => 'Concept Test Statistics',
                              },
                      rcrs => {
                                 desc   => 'Create New Test',
                                 action  => "switchpage('createtest');",
                                 tooltip => 'Create new Concept Test',
                              },
                    );
       my @ordered = ('docs','cprv','new','prnt','chrt','rcrs');
       foreach my $item (@ordered) {
            push(@advtools,
                     '<a title="'.$items{$item}{tooltip}.'" class="LC_menubuttons_link" href="javascript:'.
                     $items{$item}{action}.';">'.
                     '<img src="'.'/res/adm/pages/'.$item.'22.png" alt="'.$items{$item}{tooltip}.
                     '" border="0" class="LC_icon" />'.
                     '<span class="LC_menubuttons_inline_text">'.$items{$item}{desc}.'</span></a>');
       }
       return @advtools;
   }
   
 sub dc_courseid_toggle {  sub dc_courseid_toggle {
     my ($dc_info) = @_;      my ($dc_info) = @_;
     return ' <span id="dccidtext" class="LC_cusr_subheading">'.      return ' <span id="dccidtext" class="LC_cusr_subheading">'.
Line 4943  table#LC_title_bar.LC_with_remote { Line 5095  table#LC_title_bar.LC_with_remote {
   margin: 0;    margin: 0;
 }  }
   
 /* #SD START (work in progress)*/  ul.LC_breadcrumb_tools_outerlist {
   
 ul.LC_bct {  
     margin: 0;      margin: 0;
     padding: 0;      padding: 0;
       position: relative;
       list-style: none;
 }  }
 ul.LC_bct ol {  ul.LC_breadcrumb_tools_outerlist li {
     display: inline;      display: inline;
 }  }
 ul.LC_bct ul {  
     display: inline;  .LC_breadcrumb_tools_navigation {
     padding: 0;      padding: 0;
       margin: 0;
       float: left;
 }  }
 ul.LC_bct li {  .LC_breadcrumb_tools_tools {
     list-style-type: none;      padding: 0;
     display: inline;      margin: 0;
       float: right;
 }  }
   
   div.LC_GCI_Menu {
       width:900px;
   }
   
 ul.LC_breadcrumb_tools {  div.LC_GCI_Menu:after {
       content:'';
       display:block;
       clear:both;
 }  }
   
 li.LC_breadcrumb_tools {  div.LC_GCI_Menu_left {
       float:left;
       width:400px;
 }  }
 li.LC_breadcrumb_tools img{  
     vertical-align: middle;  div.LC_GCI_Menu_right {
       float:left;
       width:400px;;
 }  }
   
 .LC_breadcrumb_tools_A {  dl.LC_GCI_Menu {
     margin: 0 0 0 1em;      width:300px;
       float:left;
       margin-right:2em;
 }  }
 .LC_breadcrumb_tools_B {  
     float: right;  dl.LC_GCI_Menu dt {
     margin-top: 0.4em;      font-weight: bold;
       font-size:0.9em;
       margin-bottom:0.7em;
 }  }
 .LC_breadcrumb_tools_C {  
     margin: 0 1em 0 0;  dl.LC_GCI_Menu dt a {
     float: right;      color: $font;
   }
   
   dl.LC_GCI_Menu dd {
       font-size:0.8em;
       margin:0 0 2em 0;
       padding-left:4.5em;
       line-height:1.5em;
       background:none no-repeat left top;
 }  }
 /* #SD END */  
   
 table#LC_title_bar td {  table#LC_title_bar td {
   background: $tabbg;    background: $tabbg;
Line 4994  table#LC_menubuttons img { Line 5170  table#LC_menubuttons img {
   
 .LC_breadcrumbs_component {  .LC_breadcrumbs_component {
   float: right;    float: right;
   margin: 0 1em;    margin: 0.25em 1em;
 }  }
 .LC_breadcrumbs_component img {  .LC_breadcrumbs_component img {
   vertical-align: middle;    vertical-align: middle;
Line 5013  td.LC_table_cell_checkbox { Line 5189  td.LC_table_cell_checkbox {
   background: $sidebg;    background: $sidebg;
   border-bottom: 1px solid $lg_border_color;    border-bottom: 1px solid $lg_border_color;
   line-height: 2.5em;    line-height: 2.5em;
      /* SD working here     overflow: hidden;
      height: 2.5em;  
      overflow: hidden; */  
   margin: 0;    margin: 0;
   padding: 0;    padding: 0;
     text-align: left;
 }  }
   
 /* Preliminary fix to hide breadcrumbs inside remote control window */  /* Preliminary fix to hide breadcrumbs inside remote control window */
Line 5029  td.LC_table_cell_checkbox { Line 5204  td.LC_table_cell_checkbox {
   clear:both;    clear:both;
   background: #F8F8F8; /* $sidebg; */    background: #F8F8F8; /* $sidebg; */
   border: 1px solid $sidebg;    border: 1px solid $sidebg;
   margin: 0 0 10px 0;          margin: 0 0 0 0;      
 }  }
   
 .LC_fontsize_medium {  .LC_fontsize_medium {
Line 5987  fieldset > legend { Line 6162  fieldset > legend {
   padding: 0 5px 0 5px;    padding: 0 5px 0 5px;
 }  }
   
   div.LC_page_header {
     background-color: $pgbg_or_bgcolor;
     margin: 0 0 1.0em 0;
   }
   
 #LC_nav_bar {  #LC_nav_bar {
   float: left;    float: left;
   margin: 0.2em 0 0 0;    margin: 0.2em 0 0 0;
Line 6029  ol.LC_primary_menu a { Line 6209  ol.LC_primary_menu a {
   text-decoration: none;    text-decoration: none;
 }  }
   
   ol.LC_primary_menu a.LC_new_message {
     font-weight:bold;
     color: darkred;
   }
   
 ul#LC_secondary_menu {  ul#LC_secondary_menu {
   clear: both;    clear: both;
   color: $fontmenu;    color: $fontmenu;
Line 6162  ol#LC_MenuBreadcrumbs, Line 6347  ol#LC_MenuBreadcrumbs,
 ol#LC_PathBreadcrumbs {  ol#LC_PathBreadcrumbs {
   padding-left: 10px;    padding-left: 10px;
   margin: 0;    margin: 0;
   list-style-position: inside;    margin: 0;
     /* SD working here     height: 2.5em;  /* equal to #LC_breadcrumbs line-height */
     white-space: nowrap; */  
 }  }
   
 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;
   white-space: nowrap;    white-space: normal;
     /* SD working here    
     white-space: normal; */   
 }  }
   
 ol#LC_MenuBreadcrumbs li a,  ol#LC_MenuBreadcrumbs li a,
Line 6182  ul.LC_CourseBreadcrumbs li a { Line 6364  ul.LC_CourseBreadcrumbs li a {
   font-size:90%;    font-size:90%;
 }  }
   
   ol#LC_MenuBreadcrumbs h1 {
     display: inline;
     font-size: 90%;
     line-height: 2.5em;
     margin: 0;
     padding: 0;
   }
   
 ol#LC_PathBreadcrumbs li a {  ol#LC_PathBreadcrumbs li a {
   text-decoration:none;    text-decoration:none;
   font-size:100%;    font-size:100%;
Line 6387  a#LC_content_toolbar_changefolder_toggle Line 6577  a#LC_content_toolbar_changefolder_toggle
   background-image:url(/res/adm/pages/open-all-folders.gif);    background-image:url(/res/adm/pages/open-all-folders.gif);
 }  }
   
   a#LC_content_toolbar_management {
     background-image:url(/res/adm/pages/navtomenu.png);
   }
   
 ul#LC_toolbar li a:hover {  ul#LC_toolbar li a:hover {
   background-position: bottom center;    background-position: bottom center;
 }  }
Line 6426  ul.LC_funclist { Line 6620  ul.LC_funclist {
     padding: 0.5em 1em 0.5em 0;      padding: 0.5em 1em 0.5em 0;
 }  }
   
   ul.LC_funclist > li:first-child {
       font-weight:bold;
       margin-left:0.8em;
   }
   
 ul.LC_funclist + ul.LC_funclist {  ul.LC_funclist + ul.LC_funclist {
     /*       /* 
        left border as a seperator if we have more than         left border as a seperator if we have more than
Line 6452  ul.LC_funclist li { Line 6651  ul.LC_funclist li {
   background:#DAE0D2 url("/gcimenu_bg.gif") repeat-x bottom;    background:#DAE0D2 url("/gcimenu_bg.gif") repeat-x bottom;
   font-size:93%;    font-size:93%;
   line-height:normal;    line-height:normal;
     margin: 0.5em 0 0.5em 0;
 }  }
 #gciheader ul {  #gciheader ul {
   margin:0;    margin:0;
Line 6770  sub start_page { Line 6970  sub start_page {
  #if bread_crumbs_component exists show it as headline else show only the breadcrumbs   #if bread_crumbs_component exists show it as headline else show only the breadcrumbs
  if(exists($args->{'bread_crumbs_component'})){   if(exists($args->{'bread_crumbs_component'})){
  $result .= &Apache::lonhtmlcommon::breadcrumbs($args->{'bread_crumbs_component'});   $result .= &Apache::lonhtmlcommon::breadcrumbs($args->{'bread_crumbs_component'});
  }else{   } elsif (exists($args->{'bread_crumbs_menulink'})) {
  $result .= &Apache::lonhtmlcommon::breadcrumbs();   $result .= &Apache::lonhtmlcommon::breadcrumbs('','',$args->{'bread_crumbs_menulink'});
                   } else {
    $result .= &Apache::lonhtmlcommon::breadcrumbs(); 
  }   }
     }      }
     return $result;      return $result;
Line 7702  sub user_picker { Line 7904  sub user_picker {
                     'whse'      => "When searching by last,first you must include at least one character in the first name.",                      'whse'      => "When searching by last,first you must include at least one character in the first name.",
                      'thfo'     => "The following need to be corrected before the search can be run:",                       'thfo'     => "The following need to be corrected before the search can be run:",
                                        );                                         );
     my $domform = &select_dom_form($currdom,'srchdomain',1,1);      my $domform = &select_dom_form($currdom,'srchdomain',undef,1);
     my $srchinsel = ' <select name="srchin">';      my $srchinsel = ' <select name="srchin">';
        
     my @srchins = ('crs','dom','alc','instd');      my @srchins = ('crs','dom','alc','instd');
   
     foreach my $option (@srchins) {      foreach my $option (@srchins) {
Line 7714  sub user_picker { Line 7916  sub user_picker {
         next if ($option eq 'alc');          next if ($option eq 'alc');
         next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs'));            next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs'));  
         next if ($option eq 'crs' && !$env{'request.course.id'});          next if ($option eq 'crs' && !$env{'request.course.id'});
           next if ($option eq 'instd');
         if ($curr_selected{'srchin'} eq $option) {          if ($curr_selected{'srchin'} eq $option) {
             $srchinsel .= '               $srchinsel .= ' 
    <option value="'.$option.'" selected="selected">'.$lt{$option}.'</option>';         <option value="'.$option.'" selected="selected">'.$lt{$option}.'</option>';
         } else {          } else {
             $srchinsel .= '              $srchinsel .= '
    <option value="'.$option.'">'.$lt{$option}.'</option>';      <option value="'.$option.'">'.$lt{$option}.'</option>';
         }          }
     }      }
     $srchinsel .= "\n  </select>\n";      $srchinsel .= "\n  </select>\n";
Line 7763  sub user_picker { Line 7966  sub user_picker {
                     );                      );
                     $new_user_create = '<p class="LC_warning">'                      $new_user_create = '<p class="LC_warning">'
                                       .&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.")                                        .&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.")
                                       .' '                                        .'<br />'
                                       .&mt('Please contact the [_1]helpdesk[_2] for assistance.'                                        .&mt('Enter a valid e-mail address as the username for the new user.').' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.'
                                           ,'<a href="'.$helplink.'">','</a>')                                        ,'<a href="'.$helplink.'">','</a>')
                                       .'</p><br />';                                        .'</p><br />';
                 }                  }
             }              }
Line 10431  sub construct_course { Line 10634  sub construct_course {
         $outcome .= ($fatal?$errtext:'write ok').$linefeed;          $outcome .= ($fatal?$errtext:'write ok').$linefeed;
     }      }
   
       if ($args->{'cloneroster'}) {
           my ($numadded,$clisterror) = &Apache::lonclonecourse::copyroster($cloneid,$$courseid,$args->{'startaccess'},$args->{'endaccess'});
           if ($clisterror) {
               $outcome .= "\0".&mt('An error occurred when copying the student roster from the old course to the new course; the error was: [_1].',$clisterror).$linefeed;
               if ($numadded) {
                   $outcome .= &mt('Although [quant,_1,student] have received roles in the new course the roster does not report this. It is  ').$linefeed;
               } 
           } else {
               if ($numadded) {
                   $outcome .= "\0".&mt('[quant,_1,student] copied from roster for old course to roster for new course.',$numadded).$linefeed;
               } else {
                   $outcome .= "\0".&mt('No students have been enrolled in the new Concept Test.').' '.&mt('This is because either (a) an error occurred, or (b) there were no students with either current access or access which ended on/after the current default end date set for access to the old course.').$linefeed;
               }
           }
       }
     return (1,$outcome);      return (1,$outcome);
 }  }
   
Line 10795  sub clean_symb { Line 11013  sub clean_symb {
 sub needs_gci_custom {  sub needs_gci_custom {
     my $custommenu;      my $custommenu;
     my $numdc = &check_for_gci_dc();      my $numdc = &check_for_gci_dc();
       my $udom = $env{'user.domain'};
       return if ($udom eq '');
     unless ($numdc) {      unless ($numdc) {
         my $then=$env{'user.login.time'};          my $then=$env{'user.login.time'};
         my $now = time;          my $now = time;
         my %cnums = (          my %allnums = &get_faculty_cnums();
                         review => '9615072b469884921gcil1',          my $cnums = $allnums{$udom};
                         submit => '1H96711d710194bfegcil1',          return unless (ref($cnums) eq 'HASH');
                     );          return unless (scalar(keys(%{$cnums})) > 1);
         if ($env{'user.role.st./gci/'.$cnums{'review'}}) {          if ($env{"user.role.st./$udom/$cnums->{'review'}"}) {
             my ($start,$end) =              my ($start,$end) =
                 split('.',$env{'user.role.st./gci/'.$cnums{'review'}});                  split('.',$env{"user.role.st./$udom/$cnums->{'review'}"});
             if (((!$start) || ($start && $start <= $now)) &&              if (((!$start) || ($start && $start <= $now)) &&
                 ((!$end) || ($end > $now))) {                  ((!$end) || ($end > $now))) {
                 $custommenu = 1;                  $custommenu = 1;
                 if ($env{'user.role.cc./gci/'.$cnums{'review'}}) {                  if ($env{"user.role.cc./$udom/$cnums->{'review'}"}) {
                     my ($ccstart,$ccend) =                      my ($ccstart,$ccend) =
                         split('.',$env{'user.role.cc./gci/'.$cnums{'review'}});                          split('.',$env{"user.role.cc./$udom/$cnums->{'review'}"});
                     if (((!$start) || ($start && $start <= $now)) &&                      if (((!$start) || ($start && $start <= $now)) &&
                             ((!$end) || ($end > $now))) {                              ((!$end) || ($end > $now))) {
                         $custommenu = '';                          $custommenu = '';
Line 10822  sub needs_gci_custom { Line 11042  sub needs_gci_custom {
     return $custommenu;      return $custommenu;
 }  }
   
   sub ci_tabs {
       my ($domain) = @_;
       my %tabs = (
                    gci  => ['review','submit','managetest','tutorial'],
                    slci => ['review'],
                  );
       return $tabs{$domain};
   }
   
 sub check_for_gci_dc {  sub check_for_gci_dc {
     my $then=$env{'user.login.time'};      my $then=$env{'user.login.time'};
     my $numdc = 0;      my $numdc = 0;
     foreach my $dom ('gci','gcitest') {      my @doms = &Apache::lonnet::current_machine_domains();
       foreach my $dom (@doms) {
         if ($env{'user.role.dc./'.$dom.'/'}) {          if ($env{'user.role.dc./'.$dom.'/'}) {
             my $livedc = 1;              my $livedc = 1;
             my ($tstart,$tend)=split(/\./,$env{'user.role.dc./'.$dom.'/'});              my ($tstart,$tend)=split(/\./,$env{'user.role.dc./'.$dom.'/'});
Line 10839  sub check_for_gci_dc { Line 11069  sub check_for_gci_dc {
     return $numdc;      return $numdc;
 }  }
   
   sub get_faculty_cnums {
       my %cnums = (
            gci => { 
                       review => '9615072b469884921gcil1',
                       submit => '1H96711d710194bfegcil1',
                       tutorial => '5422913620b814c90gcil1',
                   },
            slci => {
                       review => '4V80581c93ffc4c38gcil1',
                    }
       );
       return %cnums;
   }
   
 sub existing_gcitest_courses {  sub existing_gcitest_courses {
     my ($role) = @_;      my ($role) = @_;
     my %courses;      my %courses;
     my $cdom = 'gcitest';      my $cdom = $env{'user.domain'}.'test';
     my $now = time;      my $now = time;
     foreach my $envkey (keys(%env)) {      foreach my $envkey (keys(%env)) {
         my $cnum;          my $cnum;
Line 10851  sub existing_gcitest_courses { Line 11095  sub existing_gcitest_courses {
         } else {          } else {
             next;              next;
         }          }
         my ($tstart,$tend) = split('.',$env{$envkey});          my ($tstart,$tend) = split(/\./,$env{$envkey});
         if (((!$tstart) || ($tstart < $now)) && ((!$tend) || ($tend > $now))) {          if (((!$tstart) || ($tstart < $now)) && ((!$tend) || ($tend > $now))) {
             my $descr = $env{'course.'.$cdom.'_'.$cnum.'.description'};              my $descr = $env{'course.'.$cdom.'_'.$cnum.'.description'};
             if ($descr ne '') {              if ($descr ne '') {
Line 10862  sub existing_gcitest_courses { Line 11106  sub existing_gcitest_courses {
     return %courses;      return %courses;
 }  }
   
   sub gcitest_switcher {
       my ($role,$formname,%courses) = @_;
       my $output;
       my %Sortby;
       foreach my $course (sort(keys(%courses))) {
           next unless (ref($courses{$course}) eq 'HASH');
           my $clean_title = $courses{$course}{'description'};
           $clean_title =~ s/\W+//g;
           if ($clean_title eq '') {
               $clean_title = $courses{$course}{'description'};
           }
           push(@{$Sortby{$clean_title}},$course);
       }
       my @sorted_courses = sort { lc($a) cmp lc($b) } (keys(%Sortby));
       my $default;
       if (@sorted_courses > 1) {
           if (($env{'request.course.id'}) && ($courses{$env{'request.course.id'}})) {
               $default = &mt('Switch concept test ...');
           } else {
               $default = &mt('Select a concept test ...');
           }
       } else {
           unless (($env{'request.course.id'}) && ($courses{$env{'request.course.id'}})) {
               $default = &mt('Select concept test ...');
           }
       }
       if ($default) {
           $output = '<form name="'.$formname.'" action="/adm/roles" method="post">'.
                     '<select name="newrole" onchange="javascript:courseswitcher();">'.
                     '<option value="" selected="selected">'.$default.'</option>';
           foreach my $item (@sorted_courses) {
               foreach my $course (@{$Sortby{$item}}) {
                   my ($cdom,$cnum) = split('_',$course);
                   $output .= '<option value="'.$role.'./'.$cdom.'/'.$cnum.'">'.$courses{$course}{'description'}.'</option>';
               }
           }
           $output .= '</select><input type="hidden" name="selectrole" value="" /></form>';
       }
       return $output;
   }
   
   sub gcitest_switcher_js {
       my ($current,$numcourses,$formname) = @_;
       my $output = <<"ENDJS";
   
   function courseswitcher(caller) {
       var numcourses = $numcourses;
       var current = '$current';
       var choice = document.$formname.newrole.options[document.$formname.newrole.selectedIndex].value;
       if (choice == '') {
           if (caller == 'icon') {
               alert('No Concept Test selected');
           }
           document.$formname.selectrole.value = '';
           return;
       }
       if (choice == current) {
           if ((caller != 'icon') && (numcourses > 1)) {
               alert('You have selected the current course.\\nPlease select a different Concept Test course');
           }
           document.$formname.newrole.selectedIndex = 0;
           document.$formname.selectrole.value = '';
           return;
       }
       document.$formname.selectrole.value = '1';
       document.$formname.submit();
       return;
   }
   
   ENDJS
       return $output;
   }
   
   sub get_citest_map {
       my ($cdom) = @_;
       my %questionnaires = (
                              gcitest  => 'default_1261144274.sequence',
                              slcitest => 'default_1261144274.sequence',
                            );
       return $questionnaires{$cdom};
   }
   
 =pod  =pod
   
 =back  =back

Removed from v.1.925.2.11  
changed lines
  Added in v.1.925.2.25


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