Diff for /loncom/interface/lonpickcourse.pm between versions 1.101 and 1.111

version 1.101, 2011/01/25 02:49:42 version 1.111, 2014/03/13 14:46:46
Line 31  package Apache::lonpickcourse; Line 31  package Apache::lonpickcourse;
 use strict;  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::loncommon;  use Apache::loncommon;
   use Apache::lonhtmlcommon;
 use Apache::loncoursedata;  use Apache::loncoursedata;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonlocal;  use Apache::lonlocal;
Line 105  sub handler { Line 106  sub handler {
   
     if ((($env{'form.form'} eq 'cu') || ($env{'form.form'} eq 'studentform')) &&       if ((($env{'form.form'} eq 'cu') || ($env{'form.form'} eq 'studentform')) && 
         ($env{'form.pickedcourse'})) {          ($env{'form.pickedcourse'})) {
         $loaditem{'onload'} .= 'setRoles();setSections();';          $loaditem{'onload'} .= 'setDefaultCredits();setRoles();setSections();';
     }      }
     my $js = &js_changer();      my $js = &js_changer();
     $r->print(&Apache::loncommon::start_page($title,$js,      $r->print(&Apache::loncommon::start_page($title,$js,
Line 133  sub handler { Line 134  sub handler {
         $onlyown) {          $onlyown) {
         $r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction));          $r->print(&gochoose_javascript($type,$multiple,$autosubmit,$lastaction));
     }      }
     $r->print('<script type="text/javascript" language="Javascript">'.$jscript.      $r->print(&Apache::lonhtmlcommon::scripttag($jscript));
               '</script>');  
     $r->print($submitopener);      $r->print($submitopener);
   
 # ------------------------------------------ Display of filters to limit search  # ------------------------------------------ Display of filters to limit search
Line 142  sub handler { Line 142  sub handler {
     my $action = '/adm/pickcourse';      my $action = '/adm/pickcourse';
     my ($numtitles,$showroles,$nohost,@codetitles);      my ($numtitles,$showroles,$nohost,@codetitles);
     if (!$onlyown) {      if (!$onlyown) {
         my $filterlist = ['domainfilter'];          my $filterlist = ['domainfilter','sincefilter'];
         # created filter for DCs only          # created filter for DCs only
         if ($env{'user.adv'} && $env{'form.domainfilter'} &&          if ($env{'user.adv'} && $env{'form.domainfilter'} &&
             exists($env{'user.role.dc./'.$env{'form.domainfilter'}.'/'})              exists($env{'user.role.dc./'.$env{'form.domainfilter'}.'/'})
Line 154  sub handler { Line 154  sub handler {
         }          }
         push(@{$filterlist},('descriptfilter','instcodefilter'));          push(@{$filterlist},('descriptfilter','instcodefilter'));
         if ($env{'form.form'} eq 'rules') {          if ($env{'form.form'} eq 'rules') {
             push(@{$filterlist},'personfilter');              push(@{$filterlist},('personfilter','persondomfilter'));
               if ($env{'form.persondomfilter'} eq '') {
                   unless ($env{'form.gosearch'}) {
                       $filter->{'persondomfilter'} = $env{'request.role.domain'};
                   }
               } else {
                   $filter->{'persondomfilter'} =
                       &LONCAPA::clean_domain($env{'form.persondomfilter'});
               }
             if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) {              if (($env{'form.personfilter'} ne '') && ($env{'form.persondomfilter'} ne '')) {
                 if (&Apache::lonnet::homeserver($env{'form.personfilter'},                  if (&Apache::lonnet::homeserver($env{'form.personfilter'},
                                                  $env{'form.persondomfilter'}) eq 'no_host') {                                                   $env{'form.persondomfilter'}) eq 'no_host') {
Line 164  sub handler { Line 172  sub handler {
                 }                   } 
             }              }
         } else {          } else {
             push(@{$filterlist},'ownerfilter');              push(@{$filterlist},('ownerfilter','ownerdomfilter'));
         }          }
         # course ID filter for DCs only          # course ID filter for DCs only
         if ($env{'user.adv'} && $env{'form.domainfilter'} &&          if ($env{'user.adv'} && $env{'form.domainfilter'} &&
Line 174  sub handler { Line 182  sub handler {
         if ($cloneruname ne '' && $clonerudom ne '') {          if ($cloneruname ne '' && $clonerudom ne '') {
             push(@{$filterlist},'cloneableonly');              push(@{$filterlist},'cloneableonly');
         }          }
           if ((ref($filterlist) eq 'ARRAY') && (ref($filter) eq 'HASH')) {
         $r->print(&build_filters($filterlist,$type,$roleelement,$multelement,              foreach my $item (@{$filterlist}) {
                                  $filter,$action,\$numtitles,undef,$cloneruname,                  $filter->{$item} = $env{'form.'.$item};
                                  $clonerudom,$typeelement,\@codetitles));              }
           }
           if ($env{'form.form'} eq 'portform') {
               $filter->{'domainfilter'} ||= $env{'user.domain'};
           } elsif ($env{'form.form'} eq 'studentform') {
               $filter->{'domainfilter'} ||= $env{'request.role.domain'};
           }
           my $codedom;
           if ($env{'form.fixeddom'}) {
               $codedom = $env{'request.role.domain'};
           } else {
               $codedom = $filter->{'domainfilter'};
           }
           my ($clonetext,$clonewarning);
           if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {
               (my $coord_cloneable,$clonewarning) =
                   &get_coordinator_cloneable($cloneruname,$clonerudom,$type);
               if ($env{'form.form'} eq 'ccrs') {
                   $clonetext = '<input type="hidden" name="cloner" value="'.$env{'form.cloner'}.'" />'."\n";
               }
               if ($coord_cloneable) {
                   $clonetext .= '<input type="hidden" name="cc_clone" value="'.$coord_cloneable.'" />';
               }
           }
           $r->print(&Apache::loncommon::build_filters($filterlist,$type,$roleelement,$multelement,
                                                       $filter,$action,\$numtitles,undef,$cloneruname,
                                                       $clonerudom,$typeelement,\@codetitles,$codedom,
                                                       $env{'form.form'},$env{'form.fixeddom'},
                                                       $env{'form.prevphase'},$env{'form.cnameelement'},
                                                       $env{'form.cnumelement'},$env{'form.cdomelement'},
                                                       $env{'form.setroles'},$clonetext,$clonewarning));
     }      }
   
 # ---------------------------------------------------------------- Get the data  # ---------------------------------------------------------------- Get the data
Line 207  sub handler { Line 245  sub handler {
 }  }
   
 sub js_changer {  sub js_changer {
     return <<"ENDJS";      return <<ENDJS;
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 function updateFilters(caller) {  function updateFilters(caller) {
     if (typeof(caller) != "undefined") {      if (typeof(caller) != "undefined") {
         document.filterpicker.updater.value = caller.name;          document.filterpicker.updater.value = caller.name;
     }      }
     document.filterpicker.submit();      document.filterpicker.submit();
 }  }
   // ]]>
 </script>  </script>
   
 ENDJS  ENDJS
   
 }  }
   
 sub processpick {  sub processpick {
Line 282  sub create_user_javascript { Line 319  sub create_user_javascript {
         my $cdom = $coursedescription{'domain'};          my $cdom = $coursedescription{'domain'};
         my $cnum = $coursedescription{'num'};          my $cnum = $coursedescription{'num'};
         my $crstype = $coursedescription{'type'};          my $crstype = $coursedescription{'type'};
           my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
           my ($showcredits,$credits);
           if (($crstype ne 'Community') &&
               (($domdefs{'officialcredits'} || $domdefs{'unofficialcredits'} || $domdefs{'textbookcredits'}))) {
               $showcredits = 1; 
               $credits = $coursedescription{'internal.defaultcredits'};
           }
         my $sec_element = 'currsec';          my $sec_element = 'currsec';
         my $grplist_element = 'groups';          my $grplist_element = 'groups';
         my ($sections,$groups) =          my ($sections,$groups) =
Line 292  sub create_user_javascript { Line 336  sub create_user_javascript {
         my $groupslist = join(',',@{$groups});          my $groupslist = join(',',@{$groups});
         $output = qq|          $output = qq|
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
 function setSections() {  function setSections() {
     opener.document.$env{"form.form"}.$grplist_element.value='$groupslist';      opener.document.$env{"form.form"}.$grplist_element.value='$groupslist';
     window.opener.setSect('$seclist');      window.opener.setSect('$seclist');
Line 300  function setSections() { Line 345  function setSections() {
 function setRoles() {  function setRoles() {
     window.opener.setRole('$crstype');      window.opener.setRole('$crstype');
 }  }
   |;
           if ($showcredits) {
               $output .= qq|
   function setDefaultCredits() {
       window.opener.setCredits('$credits');
   }
   |;
           }
           $output .= qq|
   // ]]>
 </script>  </script>
 |;  |;
 ;  
     }      }
     return $output;      return $output;
 }  }
Line 325  sub display_matched_courses { Line 379  sub display_matched_courses {
             my $ccrolechk = ' ';              my $ccrolechk = ' ';
             my $menuchk = ' checked="checked" ';              my $menuchk = ' checked="checked" ';
             $r->print(              $r->print(
                 '<fieldset>'                  '<div class="LC_left_float">'
                .'<legend>'.&mt('Action').'</legend>'                 .'<fieldset>'
                .'<div class="LC_nobreak"><label>'                 .'<legend>'.&mt('Pick action').'</legend>'
                  .'<span class="LC_nobreak"><label>'
                .'<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>'                 .'<input type="radio" name="phase" value="ccrole"'.$ccrolechk.'/>'
                .'&nbsp;');                 .'&nbsp;');
             if ($type eq 'Community') {              if ($type eq 'Community') {
Line 335  sub display_matched_courses { Line 390  sub display_matched_courses {
             } else {              } else {
                 $r->print(&mt('Enter the course with the role of [_1].',$cctitle));                  $r->print(&mt('Enter the course with the role of [_1].',$cctitle));
             }              }
             $r->print('</label></div>'              $r->print('</label></span><br />'
                .'<div class="LC_nobreak"><label>'                 .'<span class="LC_nobreak"><label>'
                .'<input type="radio" name="phase" value="menu"'.$menuchk.'/>&nbsp;');                 .'<input type="radio" name="phase" value="menu"'.$menuchk.'/>&nbsp;');
             if ($type eq 'Community') {              if ($type eq 'Community') {
                 $r->print(&mt('View or modify community settings which only a [_1] may modify.',$dctitle));                  $r->print(&mt('View or modify community settings which only a [_1] may modify.',$dctitle));
             } else {              } else {
                 $r->print(&mt('View or modify course settings which only a [_1] may modify.',$dctitle));                  $r->print(&mt('View or modify course settings which only a [_1] may modify.',$dctitle));
             }              }
             $r->print('</label></div>'              $r->print('</label></span>'
                .'</fieldset>'                 .'</fieldset></div>'
                .'<br />'                 .'<br clear="all" />'
             );              );
         }          }
     }      }
Line 364  sub display_matched_courses { Line 419  sub display_matched_courses {
     }      }
     
     if ($numcourses > 1 && $multiple) {      if ($numcourses > 1 && $multiple) {
         $r->print('<input type="button" value="check all"          $r->print('<input type="button" value="'.&mt('check all').'"
                   onclick="javascript:checkAll(document.courselist.course_id)" />                    onclick="javascript:checkAll(document.courselist.course_id)" />
                   &nbsp;&nbsp;<input type="button" value="uncheck all"                    &nbsp;&nbsp;<input type="button" value="'.&mt('uncheck all').'"
                   onclick="javascript:uncheckAll(document.courselist.course_id)" />                    onclick="javascript:uncheckAll(document.courselist.course_id)" />
                   <br /><br />');                    <br /><br />');
     }      }
Line 494  sub display_matched_courses { Line 549  sub display_matched_courses {
     }      }
   
     if (!%courses) {      if (!%courses) {
         $r->print(&mt('None found'));          $r->print('<p class="LC_info">'.&mt('None found').'</p>');
     } elsif ($multiple) {      } elsif ($multiple) {
         $r->print('<input type="button" value="Submit" onClick="gochoose('."'','','')".'" />');          $r->print('<input type="button" value="'.&mt('Submit').'" onclick="gochoose('."'','','')".'" />');
     }      }
     $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'.      $r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'.
               "\n".'<input type="hidden" name="pickedcourse" value="" />'."\n".                "\n".'<input type="hidden" name="pickedcourse" value="" />'."\n".
Line 541  sub multiples_tag { Line 596  sub multiples_tag {
     return ($jscript,$multelement);      return ($jscript,$multelement);
 }  }
   
 sub build_filters {  
     my ($filterlist,$type,$roleelement,$multelement,$filter,$action,  
         $numtitlesref,$caller,$cloneruname,$clonerudom,$typeelement,$codetitlesref) = @_;  
     my ($list,$formname,$fixeddom,$codedom,$jscript);  
     $codedom = $env{'request.role.domain'};  
     if (defined($env{'form.form'})) {  
         $formname = $env{'form.form'};  
     } else {  
         $formname = $caller;  
     }  
     my $onchange = 'javascript:updateFilters(this)';  
     my ($domainselectform,$sincefilterform,$createdfilterform,  
         $ownerdomselectform,$persondomselectform,$instcodeform,  
         $typeselectform,$instcodetitle);  
     foreach my $item (@{$filterlist}) {  
         $filter->{$item} = $env{'form.'.$item};  
         if ($item ne 'descriptfilter' && $item ne 'instcodefilter') {  
     if ($item eq 'domainfilter') {  
  $filter->{$item} = &LONCAPA::clean_domain($filter->{$item});  
     } elsif ($item eq 'coursefilter') {  
  $filter->{$item} = &LONCAPA::clean_courseid($filter->{$item});  
     } elsif ($item eq 'ownerfilter') {  
  $filter->{$item} = &LONCAPA::clean_username($filter->{$item});  
                 $filter->{'ownerdomfilter'} =   
                     &LONCAPA::clean_domain($env{'form.ownerdomfilter'});  
                 $ownerdomselectform =  
                     &Apache::loncommon::select_dom_form($filter->{'ownerdomfilter'},  
                                                         'ownerdomfilter',1);  
             } elsif ($item eq 'personfilter') {  
                 $filter->{$item} = &LONCAPA::clean_username($filter->{$item});  
                 if ($env{'form.persondomfilter'} eq '') {  
                     unless ($env{'form.gosearch'}) {  
                         $filter->{'persondomfilter'} = $env{'request.role.domain'};  
                     }  
                 } else {  
                     $filter->{'persondomfilter'} =  
                         &LONCAPA::clean_domain($env{'form.persondomfilter'});  
                 }  
                 $persondomselectform =  
                     &Apache::loncommon::select_dom_form($filter->{'persondomfilter'},  
                                                         'persondomfilter',1);  
     } else {  
  $filter->{$item} =~ s/\W//g;  
     }  
             if (!$filter->{$item}) {  
                 $filter->{$item} = '';  
             }  
         }  
         if ($item eq 'domainfilter') {  
     my $allow_blank = 1;  
     if ($formname eq 'portform') {  
  $filter->{$item} ||= $env{'user.domain'};  
  $allow_blank=0;  
     } elsif ($formname eq 'studentform') {  
                 $filter->{$item} ||= $env{'request.role.domain'};  
                 $allow_blank=0;  
             }  
             if ($env{'form.fixeddom'}) {  
                 $domainselectform = '<input type="hidden" name="domainfilter"'.  
                                     'value="'.$env{'request.role.domain'}.'" />'.  
                                     &Apache::lonnet::domain($env{'request.role.domain'},  
                                                             'description');  
                 $codedom = $env{'request.role.domain'};  
             } else {  
                 $domainselectform =  
     &Apache::loncommon::select_dom_form($filter->{$item},  
             'domainfilter',  
         $allow_blank,'',$onchange);  
                 $codedom = $filter->{'domainfilter'};  
             }  
         } else {  
             $list->{$item} = &HTML::Entities::encode($filter->{$item},'<>&"');  
         }  
     }  
   
     # last course activity filter and selection  
     $sincefilterform = &timebased_select_form('sincefilter',$filter);  
   
     # course created filter and selection  
     if (exists($filter->{'createdfilter'})) {  
         $createdfilterform = &timebased_select_form('createdfilter',$filter);  
     }  
   
     my %lt = &Apache::lonlocal::texthash(  
                 'cac' => "$type Activity",  
                 'ccr' => "$type Created",   
                 'cde' => "$type Title",  
                 'cdo' => "$type Domain",  
                 'ins' => 'Institutional Code',  
                 'inc' => 'Institutional Categorization',  
                 'cow' => "$type Owner/Co-owner",  
                 'cop' => "$type Personnel Includes",  
                 'cog' => 'Type',  
              );  
   
     if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {  
         my $typeval = 'Course';  
         if ($type eq 'Community') {  
             $typeval = 'Community';  
         }  
         $typeselectform = '<input type="hidden" name="type" value="'.$typeval.'" />';  
     } else {  
         $typeselectform =  '<select name="type" size="1"';  
         if ($onchange) {  
             $typeselectform .= 'onchange="'.$onchange.'"';  
         }  
         $typeselectform .= '>'."\n";  
         foreach my $posstype ('Course','Community') {  
             $typeselectform.='<option value="'.$posstype.'"'.  
                 ($posstype eq $type ? ' selected="selected" ' : ''). ">".&mt($posstype)."</option>\n";  
         }  
         $typeselectform.="</select>";  
     }  
       
     my ($cloneableonlyform,$cloneabletitle);  
     if (exists($filter->{'cloneableonly'})) {  
         my $cloneableon = '';  
         my $cloneableoff = ' checked="checked"';  
         if ($filter->{'cloneableonly'}) {  
             $cloneableon = $cloneableoff;  
             $cloneableoff = '';  
         }  
         $cloneableonlyform = '<span class="LC_nobreak"><label><input type="radio" name="cloneableonly" value="1" '.$cloneableon.'/>&nbsp;'.&mt('Required').'</label>'.('&nbsp;'x3).'<label><input type="radio" name="cloneableonly" value="" '.$cloneableoff.' />&nbsp;'.&mt('No restriction').'</label></span>';  
         if ($env{'form.form'} eq 'ccrs') {  
             $cloneabletitle = &mt('Cloneable for').' '.$cloneruname.':'.$clonerudom;  
         } else {  
             $cloneabletitle = &mt('Cloneable by you');  
         }  
     }  
     my $officialjs;  
     if ($type eq 'Course') {  
         if (exists($filter->{'instcodefilter'})) {  
             if (($env{'form.fixeddom'}) || ($formname eq 'requestcrs')  
                 || ($formname eq 'modifycourse')) {  
                 $officialjs = 1;  
                 ($instcodeform,$jscript,$$numtitlesref) =   
                     &instcode_selectors($codedom,'filterpicker',$officialjs,$codetitlesref);  
                 if ($jscript) {  
                     $jscript = '<script type="text/javascript" language="Javascript">'.  
                                $jscript.'</script>'."\n";  
                 }  
             }  
             if ($instcodeform eq '') {  
                 $instcodeform =   
                     '<input type="text" name="instcodefilter" size="10" value="'.  
                     $list->{'instcodefilter'}.'" />';  
                 $instcodetitle = $lt{'ins'};  
             } else {  
                 $instcodetitle = $lt{'inc'};  
             }  
             if ($env{'form.fixeddom'}) {  
                 $instcodetitle .= '<br />('.$codedom.')';  
             }  
         }  
     }  
   
     my $output = qq|  
 <form method="post" name="filterpicker" action="$action">  
 <input type="hidden" name="form" value="$formname" />  
 |;  
     if ($formname eq 'modifycourse') {  
         $output .= '<input type="hidden" name="phase" value="courselist" />'."\n".  
                    '<input type="hidden" name="prevphase" value="'.  
                    $env{'form.prevphase'}.'" />'."\n";  
     } else {  
         my $name_input;  
         if ($env{'form.cnameelement'} ne '') {  
             $name_input = '<input type="hidden" name="cnameelement" value="'.  
                           $env{'form.cnameelement'}.'" />';  
         }  
         $output .= qq|  
 <input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" />  
 <input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" />  
 $name_input  
 $roleelement  
 $multelement  
 $typeelement  
 |;  
         if ($formname eq 'portform') {  
             $output .= '<input type="hidden" name="setroles" value="'.$env{'form.setroles'}.'" />'."\n";  
         }  
     }  
     if ($env{'form.fixeddom'}) {   
         $output .= '<input type="hidden" name="fixeddom" value="'.$env{'form.fixeddom'}.'" />'."\n";  
     }  
     $output .= "<br />\n".&Apache::lonhtmlcommon::start_pick_box();  
     if ($sincefilterform) {   
         $output .= &Apache::lonhtmlcommon::row_title($lt{'cac'})  
                   .$sincefilterform  
                   .&Apache::lonhtmlcommon::row_closure();  
     }  
     if ($createdfilterform) {  
         $output .= &Apache::lonhtmlcommon::row_title($lt{'ccr'})  
                   .$createdfilterform  
                   .&Apache::lonhtmlcommon::row_closure();  
     }  
     if ($domainselectform) {  
         $output .= &Apache::lonhtmlcommon::row_title($lt{'cdo'})  
                   .$domainselectform  
                   .&Apache::lonhtmlcommon::row_closure();  
     }   
     if ($typeselectform) {  
         if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {  
             $output .= $typeselectform;  
         } else {  
             $output .= &Apache::lonhtmlcommon::row_title($lt{'cog'})  
                       .$typeselectform  
                       .&Apache::lonhtmlcommon::row_closure();  
         }  
     }  
     if ($instcodeform) {  
         $output .= &Apache::lonhtmlcommon::row_title($instcodetitle)  
                   .$instcodeform  
                   .&Apache::lonhtmlcommon::row_closure();  
     }  
     if (exists($filter->{'ownerfilter'})) {  
         $output .= &Apache::lonhtmlcommon::row_title($lt{'cow'}).  
                    '<table><tr><td>'.&mt('Username').'<br />'.  
                    '<input type="text" name="ownerfilter" size="20" value="'.  
                    $list->{'ownerfilter'}.'" /></td><td>'.&mt('Domain').'<br />'.  
                    $ownerdomselectform.'</td></tr></table>'.  
                    &Apache::lonhtmlcommon::row_closure();  
     }  
     if (exists($filter->{'personfilter'})) {  
         $output .= &Apache::lonhtmlcommon::row_title($lt{'cop'}).  
                    '<table><tr><td>'.&mt('Username').'<br />'.  
                    '<input type="text" name="personfilter" size="20" value="'.  
                    $list->{'personfilter'}.'" /></td><td>'.&mt('Domain').'<br />'.  
                    $persondomselectform.'</td></tr></table>'.  
                    &Apache::lonhtmlcommon::row_closure();  
     }  
     if (exists($filter->{'coursefilter'})) {  
         $output .= &Apache::lonhtmlcommon::row_title(&mt('LON-CAPA course ID'))  
                   .'<input type="text" name="coursefilter" size="25" value="'  
                   .$list->{'coursefilter'}.'" />'  
                   .&Apache::lonhtmlcommon::row_closure();  
     }  
     if ($cloneableonlyform) {  
         $output .= &Apache::lonhtmlcommon::row_title($cloneabletitle).  
                    $cloneableonlyform.&Apache::lonhtmlcommon::row_closure();  
     }  
     if (exists($filter->{'descriptfilter'})) {  
         $output .= &Apache::lonhtmlcommon::row_title($lt{'cde'})  
                   .'<input type="text" name="descriptfilter" size="40" value="'  
                   .$list->{'descriptfilter'}.'" />'  
                   .&Apache::lonhtmlcommon::row_closure(1);  
     }  
     $output .= &Apache::lonhtmlcommon::end_pick_box().'<p>';  
     my ($coord_cloneable,$warning);  
     if (($env{'form.form'} eq 'ccrs') || ($env{'form.form'} eq 'requestcrs')) {  
         ($coord_cloneable,$warning) =   
             &get_coordinator_cloneable($cloneruname,$clonerudom,$type);  
         if ($env{'form.form'} eq 'ccrs') {  
             $output .= '<input type="hidden" name="cloner" value="'.$env{'form.cloner'}.'" />'."\n";  
         }  
         if ($coord_cloneable) {  
             $output .= '<input type="hidden" name="cc_clone" value="'.$coord_cloneable.'" />';  
         }  
     }  
     $output .= '<input type="hidden" name="updater" value="">'."\n".  
                '<input type="submit" name="gosearch" value="'.   
                &mt('Search').'" /></p>'."\n".'</form>'."\n".'<hr />'."\n";  
     return $jscript.$warning.$output;  
 }  
   
 sub timebased_select_form {  
     my ($item,$filter) = @_;  
     if (ref($filter) eq 'HASH') {  
         $filter->{$item} = $env{'form.'.$item};  
         $filter->{$item} =~ s/[^\d-]//g;  
         if (!$filter->{$item}) { $filter->{$item}=-1; }  
         return &Apache::loncommon::select_form(   
                             $filter->{$item},  
                             $item,  
                             {      '-1' => '',  
                                 '86400' => &mt('today'),  
                                '604800' => &mt('last week'),  
                               '2592000' => &mt('last month'),  
                               '7776000' => &mt('last three months'),  
                              '15552000' => &mt('last six months'),  
                              '31104000' => &mt('last year'),  
                     'select_form_order' =>  
                            ['-1','86400','604800','2592000','7776000',  
                             '15552000','31104000']});  
     }  
 }  
   
 sub get_coordinator_cloneable {  sub get_coordinator_cloneable {
     my ($cloneruname,$clonerudom,$type) = @_;      my ($cloneruname,$clonerudom,$type) = @_;
     if (($cloneruname!~/\w/) || ($clonerudom!~/\w/)) {      if (($cloneruname!~/\w/) || ($clonerudom!~/\w/)) {
Line 856  sub get_coordinator_cloneable { Line 624  sub get_coordinator_cloneable {
     }      }
 }  }
   
 sub instcode_selectors {  
     my ($codedom,$formname,$officialjs,$codetitles) = @_;  
     my ($output,%cat_titles,%cat_order,%cat_items);  
     my ($jscript,$totcodes,$numtitles,$lasttitle) =  
         &Apache::courseclassifier::instcode_selectors_data($codedom,$formname,  
                            \%cat_items,$codetitles,\%cat_titles,\%cat_order,$officialjs);  
     if ($numtitles > 0) {  
         my $official = ' checked="checked" ';  
         my $unofficial = '';  
         if ($env{'form.official'} eq 'off') {  
             $unofficial = $official;  
             $official = '';  
         }  
         $output .= '<span class="LC_nobreak">'.&mt('Official course:').'&nbsp;<label>'.  
                    '<input type="radio" name="official" value="on"'.$official.' />'.  
                    &mt('Yes').'</label>'.('&nbsp;'x3).'<label>'.  
                    '<input type="radio" name="official" value="off"'.$unofficial.  
                    ' onclick="toggleOfficial();" />'.&mt('No').'</label></span><br />'.  
                    &Apache::courseclassifier::build_instcode_selectors($numtitles,  
                    $lasttitle,\%cat_items,$codetitles,\%cat_titles,\%cat_order)."\n".  
                    '<input type="hidden" name="numtitles" value="'.$numtitles.'" />'."\n".  
                    '<input type="hidden" name="state" value="listing" />'."\n";  
    
     }  
     return ($output,$jscript,$numtitles);  
 }  
   
 sub search_courses {  sub search_courses {
     my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom,$domcloner,$codetitles) = @_;      my ($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom,$domcloner,$codetitles) = @_;
     my (%courses,%showcourses,$cloner,$ccrole);      my (%courses,%showcourses,$cloner,$ccrole);
Line 892  sub search_courses { Line 633  sub search_courses {
         $ccrole = 'cc';          $ccrole = 'cc';
     }      }
     if (!$onlyown) {      if (!$onlyown) {
         $r->print(&mt('Searching ...').'<br />&nbsp;<br />');          $r->print('<div id="searching">'.&mt('Searching ...').'</div>');
         $r->rflush();          $r->rflush();
         if (($filter->{'ownerfilter'} ne '') ||          if (($filter->{'ownerfilter'} ne '') ||
             ($filter->{'ownerdomfilter'} ne '')) {              ($filter->{'ownerdomfilter'} ne '')) {
Line 991  sub course_chooser { Line 732  sub course_chooser {
             $output = &mt('No rights to clone')."\n";              $output = &mt('No rights to clone')."\n";
         }          }
     } else {      } else {
         $output = '<input type="button" value="'.&mt('Select').'" onClick="gochoose('.          $output = '<input type="button" value="'.&mt('Select').'" onclick="gochoose('.
                   "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n";                    "'".$cnum."','".$cdom."','".$cleandesc."')".'" />'."\n";
     }      }
     return $output;      return $output;
Line 1011  sub gochoose_javascript { Line 752  sub gochoose_javascript {
                                  list  => 'courselist',                                   list  => 'courselist',
                               },                                },
                     );                      );
     my $output .= qq|      my $output = qq|
 <script type="text/javascript">  
 function gochoose(cname,cdom,cdesc) {  function gochoose(cname,cdom,cdesc) {
     var openerForm = "$env{'form.form'}";      var openerForm = "$env{'form.form'}";
     courseCount = 0;      courseCount = 0;
Line 1061  ENDSCRIPT Line 801  ENDSCRIPT
     } else {      } else {
         my ($name_code,$type_code);          my ($name_code,$type_code);
         if ($env{'form.cnameelement'} ne '') {          if ($env{'form.cnameelement'} ne '') {
             $name_code = 'opener.document.'.$env{'form.form'}.'.'.              $name_code = <<ENDNAMECODE;  
                           $env{'form.cnameelement'}.'.value=cdesc;';  var showcdesc = cdesc;
   if (cdesc.length > 25) {
       showcdesc = cdesc.substr(0,25)+' ...'; 
   }
   opener.document.$env{'form.form'}.$env{'form.cnameelement'}.value=showcdesc;
   ENDNAMECODE
         }          }
         if ($env{'form.typeelement'} ne '') {          if ($env{'form.typeelement'} ne '') {
             $type_code = 'opener.document.'.$env{'form.form'}.'.'.              $type_code = 'opener.document.'.$env{'form.form'}.'.'.
Line 1093  ENDSCRIPT Line 838  ENDSCRIPT
     $autosubmit      $autosubmit
     $lastaction      $lastaction
 }  }
 </script>  
 |;  |;
     return $output;      return &Apache::lonhtmlcommon::scripttag($output);
 }  }
   
 1;  1;
Line 1212  Output: 2 - $jscript - javascript for ch Line 956  Output: 2 - $jscript - javascript for ch
 Side Effects: None  Side Effects: None
   
 =item *  =item *
 X<build_filters()>  
 B<build_filters($filterlist,$type,$roleelement,$multelement,$filter,$action,$numfiltersref,$caller,$cloneruname,$clonerudom,$typeelem,$codetitlesref>:  
   
   
 Input: 12 - anonymous array of search criteria; course type; $roleelement ; $multelement ; anonymous hash of criteria and their values; form action; ref to scalar (count of number of elements in institutional codes -- e.g., 4 for year, semester, department, and number); caller context (e.g., set to 'modifycourse' when routine is called from lonmodifycourse.pm); username and domain of new course owner who wants to clone, $typeelem; reference to array of titles of components in institutional codes (official courses).   
   
 Output: 1 - $output - HTML for display of search criteria, and hidden form elements.   
   
 Side Effects: None  
   
 =item *  
 X<search_courses()>  X<search_courses()>
 B<search_courses($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom,  B<search_courses($r,$type,$onlyown,$filter,$numtitles,$cloneruname,$clonerudom,
                  $domcloner,$codetitles)>:                   $domcloner,$codetitles)>:
Line 1289  javascript functions used when user sele Line 1022  javascript functions used when user sele
   
 =item  =item
   
 (g) Scantron Operator uploading a scantron file to a course - course number is written to visible form element in opener window. Child window closes.  (g) Bubblesheet Scanning Operator uploading a bubblesheet file to a course - course number is written to visible form element in opener window. Child window closes.
   
 =item  =item
   

Removed from v.1.101  
changed lines
  Added in v.1.111


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