Diff for /loncom/interface/lonmodifycourse.pm between versions 1.89 and 1.90

version 1.89, 2016/11/10 21:42:19 version 1.90, 2017/01/05 16:17:11
Line 203  sub print_course_search_page { Line 203  sub print_course_search_page {
            $settingsoption = &mt('View or modify course settings which only a [_1] may modify.',$dctitle);             $settingsoption = &mt('View or modify course settings which only a [_1] may modify.',$dctitle);
        }         }
     } elsif (&Apache::lonnet::allowed('rar',$dom)) {      } elsif (&Apache::lonnet::allowed('rar',$dom)) {
         my %adhocroles = &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'},          my ($roles_by_num,$description,$accessref,$accessinfo) = &Apache::lonnet::get_all_adhocroles($dom);
                                                          'adhocroles.'.$dom);          if ((ref($roles_by_num) eq 'ARRAY') && (ref($description) eq 'HASH')) {
         if (keys(%adhocroles)) {              if (@{$roles_by_num} > 1) {
             my @adhoc = split(',',$adhocroles{'adhocroles.'.$dom});  
             if (@adhoc > 1) {  
                 if ($type eq 'Community') {                  if ($type eq 'Community') {
                     $roleoption = &mt('Enter the community with one of the available ad hoc roles: [_1].',                      $roleoption = &mt('Enter the community with one of the available ad hoc roles');
                                   join(', ',@adhoc));  
                 } elsif ($type eq 'Placement') {                  } elsif ($type eq 'Placement') {
                     $roleoption = &mt('Enter the placement test with one of the available ad hoc roles: [_1].',                      $roleoption = &mt('Enter the placement test with one of the available ad hoc roles.');
                                   join(', ',@adhoc));  
                 } else {                  } else {
                     $roleoption = &mt('Enter the course with one of the available ad hoc roles: [_1].',                      $roleoption = &mt('Enter the course with one of the available ad hoc roles.');
                                   join(', ',@adhoc));  
                 }                  }
             } else {              } else {
                   my $rolename = $description->{$roles_by_num->[0]};
                 if ($type eq 'Community') {                  if ($type eq 'Community') {
                     $roleoption = &mt('Enter the community with the ad hoc role of: [_1]',$adhoc[0]);                      $roleoption = &mt('Enter the community with the ad hoc role of: [_1]',$rolename);
                 } elsif ($type eq 'Placement') {                  } elsif ($type eq 'Placement') {
                     $roleoption = &mt('Enter the placement test with the ad hoc role of: [_1]',$adhoc[0]);                      $roleoption = &mt('Enter the placement test with the ad hoc role of: [_1]',$rolename);
                 } else {                  } else {
                     $roleoption = &mt('Enter the course with the ad hoc role of: [_1]',$adhoc[0]);                      $roleoption = &mt('Enter the course with the ad hoc role of: [_1]',$rolename);
                 }                  }
             }              }
         }          }
Line 245  sub print_course_search_page { Line 241  sub print_course_search_page {
 }  }
   
 sub print_course_selection_page {  sub print_course_selection_page {
     my ($r,$dom,$domdesc) = @_;      my ($r,$dom,$domdesc,$permission) = @_;
     my $type = $env{'form.type'};      my $type = $env{'form.type'};
     if (!defined($type)) {      if (!defined($type)) {
         $type = 'Course';          $type = 'Course';
     }      }
     &print_header($r,$type);      &print_header($r,$type);
   
 # Criteria for course search       if ($permission->{'adhocrole'} eq 'custom') {
           my %lt = &Apache::lonlocal::texthash(
               title    => 'Ad hoc role selection',
               preamble => 'Please choose an ad hoc role in the course.',
               cancel   => 'Click "OK" to enter the course, or "Cancel" to choose a different course.',
           );
           my %jslt = &Apache::lonlocal::texthash (
               none => 'You are not eligible to use an ad hoc role for the selected course',
               ok   => 'OK',
               exit => 'Cancel',
           );
           &js_escape(\%jslt);
           $r->print(<<"END");
   <script type="text/javascript">
   // <![CDATA[
   \$(document).ready(function(){
       \$( "#LC_adhocrole_chooser" ).dialog({ autoOpen: false });
   });
   
   function gochoose(cname,cdom,cdesc) {
       document.courselist.pickedcourse.value = cdom+'_'+cname;
       \$("#LC_choose_adhoc").empty();
       var pickedaction = \$('input[name=phase]:checked', '#LCcoursepicker').val();
       if (pickedaction == 'adhocrole') {
           var http = new XMLHttpRequest();
           var url = "/adm/pickcourse";
           var params = "cid="+cdom+"_"+cname+"&context=adhoc";
           http.open("POST", url, true);
           http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
           http.onreadystatechange = function() {
               if (http.readyState == 4 && http.status == 200) {
                   var data = \$.parseJSON(http.responseText);
                   var len = data.roles.length;
                   if (len == '' || len == null || len == 0) {
                       alert('$jslt{none}');
                   } else {
                       if (len == 1) {
                           \$( '[name="adhocrole"]' )[0].value = data.roles[0].name;
                           document.courselist.submit();
                       } else {
                           var str = '';
                           for (var i=0; i<data.roles.length; i++) {
                               \$("<label><input type='radio' value='"+data.roles[i].name+"' name='LC_get_role' id='LC_get_role_"+i+"' />"+data.roles[i].desc+"</label><span>&nbsp;&nbsp;</span>")
                               .appendTo("#LC_choose_adhoc");
                           }
                           \$( "#LC_get_role_0").prop("checked", true);
                           \$( "#LC_adhocrole_chooser" ).dialog({ autoOpen: false });
                           \$( "#LC_adhocrole_chooser" ).dialog("open");
                           \$( "#LC_adhocrole_chooser" ).dialog({
                               height: 400,
                               width: 500,
                               modal: true,
                               resizable: false,
                               buttons: [
                                     {
                                      text: "$jslt{'ok'}",
                                      click: function() {
                                               var rolename = \$('input[name=LC_get_role]:checked', '#LChelpdeskpicker').val();
                                               \$( '[name="adhocrole"]' )[0].value = rolename;
                                               document.courselist.submit();
                                           }
                                     },
                                     {
                                      text: "$jslt{'exit'}",
                                      click: function() {
                                           \$("#LC_adhocrole_chooser").dialog( "close" );
                                          }
                                     }
                               ],
                           });
                           \$( "#LC_adhocrole_chooser" ).find( "form" ).on( "submit", function( event ) {
                               event.preventDefault();
                               var rolename = \$('input[name=LC_get_role]:checked', '#LChelpdeskpicker').val()
                               \$( '[name="adhocrole"]' )[0].value = rolename;
                               document.courselist.submit();
                               \$("#LC_adhocrole_chooser").dialog( "close" );
                           });
                       }
                   }
               }
           }
           http.send(params);
       } else {
           document.courselist.submit();
       }
       return;
   }
   // ]]>
   </script>
   
   <div id="LC_adhocrole_chooser" title="$lt{'title'}">
     <p>$lt{'preamble'}</p>
     <form name="LChelpdeskadhoc" id="LChelpdeskpicker" action="">
       <div id="LC_choose_adhoc">
       </div>
       <input type="hidden" name="adhocrole" id="LCadhocrole" value="" />
       <input type="submit" tabindex="-1" style="position:absolute; top:-1000px" />
     </form>
     <p>$lt{'cancel'}</p>
   </div>
   END
       } elsif ($permission->{'adhocrole'} eq 'coord') {
           $r->print(<<"END");
   <script type="text/javascript">
   // <![CDATA[
   
   function gochoose(cname,cdom,cdesc) {
       document.courselist.pickedcourse.value = cdom+'_'+cname;
       document.courselist.submit();
       return;
   }
   
   // ]]>
   </script>
   END
       }
   
   # Criteria for course search
     my ($filterlist,$filter) = &get_filters();      my ($filterlist,$filter) = &get_filters();
     my $action = '/adm/modifycourse';      my $action = '/adm/modifycourse';
     my $dctitle = &Apache::lonnet::plaintext('dc');      my $dctitle = &Apache::lonnet::plaintext('dc');
Line 497  sub print_modification_menu { Line 610  sub print_modification_menu {
 }  }
   
 sub print_adhocrole_selected {  sub print_adhocrole_selected {
     my ($r,$type) = @_;      my ($r,$type,$permission) = @_;
     &print_header($r,$type);      &print_header($r,$type);
     my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});      my ($cdom,$cnum) = split(/_/,$env{'form.pickedcourse'});
     my ($newrole,$selectrole);      my ($newrole,$selectrole);
     if (&Apache::lonnet::allowed('ccc',$cdom)) {      if ($permission->{'adhocrole'} eq 'coord') {
         if ($type eq 'Community') {          if ($type eq 'Community') {
             $newrole = "co./$cdom/$cnum";              $newrole = "co./$cdom/$cnum";
         } else {          } else {
             $newrole = "cc./$cdom/$cnum";              $newrole = "cc./$cdom/$cnum";
         }          }
         $selectrole = 1;          $selectrole = 1;
     } elsif (&Apache::lonnet::allowed('rar',$cdom)) {      } elsif ($permission->{'adhocrole'} eq 'custom') {
         my %adhocroles = &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'},          my ($okroles,$description) = &Apache::lonnet::get_my_adhocroles($env{'form.pickedcourse'},1);      
                                                          'adhocroles.'.$cdom);          if (ref($okroles) eq 'ARRAY') {
         if (keys(%adhocroles)) {              my $possrole = $env{'form.adhocrole'}; 
             my $possrole = $env{'form.adhocrole'};              if (($possrole ne '') && (grep(/^\Q$possrole\E$/,@{$okroles}))) {
             if ($possrole ne '') {                  my $confname = &Apache::lonnet::get_domainconfiguser($cdom);
                 my @adhoc = split(',',$adhocroles{'adhocroles.'.$cdom});                  $newrole = "cr/$cdom/$confname/$possrole./$cdom/$cnum";
                 if (grep(/^\Q$possrole\E$/,@adhoc)) {                  $selectrole = 1;
                     my $confname = &Apache::lonnet::get_domainconfiguser($cdom);  
                     $newrole = "cr/$cdom/$confname/$possrole./$cdom/$cnum";  
                     $selectrole = 1;  
                 }  
             }              }
         }          }
     }      }
Line 2067  function changePage(formname,newphase) { Line 2176  function changePage(formname,newphase) {
     if ($phase eq 'setparms') {      if ($phase eq 'setparms') {
  $js .= $javascript_validations;   $js .= $javascript_validations;
     } elsif ($phase eq 'courselist') {      } elsif ($phase eq 'courselist') {
         $js .= qq|          $js .= <<"ENDJS";
   
 function gochoose(cname,cdom,cdesc) {  
     document.courselist.pickedcourse.value = cdom+'_'+cname;  
     document.courselist.submit();  
 }  
   
 function hide_searching() {  function hide_searching() {
     if (document.getElementById('searching')) {      if (document.getElementById('searching')) {
         document.getElementById('searching').style.display = 'none';          document.getElementById('searching').style.display = 'none';
Line 2081  function hide_searching() { Line 2184  function hide_searching() {
     return;      return;
 }  }
   
 |;  ENDJS
     } elsif ($phase eq 'setquota') {      } elsif ($phase eq 'setquota') {
         my $invalid = &mt('The quota you entered contained invalid characters.');          my $invalid = &mt('The quota you entered contained invalid characters.');
         my $alert = &mt('You must enter a number');          my $alert = &mt('You must enter a number');
Line 2347  sub get_permission { Line 2450  sub get_permission {
             catsettings       => 'edit',              catsettings       => 'edit',
             processcat        => 'edit',              processcat        => 'edit',
             selfenroll        => 'edit',              selfenroll        => 'edit',
               adhocrole         => 'coord',
         );          );
     } elsif (&Apache::lonnet::allowed('rar',$dom)) {      } elsif (&Apache::lonnet::allowed('rar',$dom)) {
         $allowed = 1;          $allowed = 1;
Line 2358  sub get_permission { Line 2462  sub get_permission {
             setparms      => 'view',              setparms      => 'view',
             catsettings   => 'view',              catsettings   => 'view',
             selfenroll    => 'view',              selfenroll    => 'view',
               adhocrole     => 'custom',
         );          );
     }      }
     return ($allowed,\%permission);      return ($allowed,\%permission);
Line 2412  sub handler { Line 2517  sub handler {
               {href=>"javascript:changePage(document.$phase,'courselist')",                {href=>"javascript:changePage(document.$phase,'courselist')",
               text=>$choose_text});                text=>$choose_text});
             if ($phase eq 'courselist') {              if ($phase eq 'courselist') {
                 &print_course_selection_page($r,$dom,$domdesc);                  &print_course_selection_page($r,$dom,$domdesc,$permission);
             } else {              } else {
                 my ($checked,$cdesc,$coursehash) = &check_course($dom,$domdesc);                  my ($checked,$cdesc,$coursehash) = &check_course($dom,$domdesc);
                 if ($checked eq 'ok') {                  if ($checked eq 'ok') {
Line 2435  sub handler { Line 2540  sub handler {
                         &Apache::lonhtmlcommon::add_breadcrumb                          &Apache::lonhtmlcommon::add_breadcrumb
                          ({href=>"javascript:changePage(document.$phase,'adhocrole')",                           ({href=>"javascript:changePage(document.$phase,'adhocrole')",
                            text=>$enter_text});                             text=>$enter_text});
                         &print_adhocrole_selected($r,$type);                          &print_adhocrole_selected($r,$type,$permission);
                     } else {                      } else {
                         &Apache::lonhtmlcommon::add_breadcrumb                          &Apache::lonhtmlcommon::add_breadcrumb
                         ({href=>"javascript:changePage(document.$phase,'menu')",                          ({href=>"javascript:changePage(document.$phase,'menu')",

Removed from v.1.89  
changed lines
  Added in v.1.90


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