Diff for /loncom/interface/portfolio.pm between versions 1.171 and 1.172

version 1.171, 2006/11/06 20:02:58 version 1.172, 2006/11/09 22:33:32
Line 874  sub build_access_summary { Line 874  sub build_access_summary {
                 if ($scope eq 'guest') {                  if ($scope eq 'guest') {
                     $r->print(&mt('Passphrase').': '.$content->{'password'});                      $r->print(&mt('Passphrase').': '.$content->{'password'});
                 } elsif ($scope eq 'course') {                  } elsif ($scope eq 'course') {
                     $r->print('<table><tr>');                      $r->print('<table width="100%"><tr>');
                     $r->print('<th>'.&mt('Roles').'</th><th>'.                      $r->print('<th>'.&mt('Roles').'</th><th>'.
                           &mt('Access').'</th><th>'.                            &mt('Access').'</th><th>'.
                                           &mt('Sections').'</th>');                                            &mt('Sections').'</th>');
Line 1336  sub display_access_row { Line 1336  sub display_access_row {
         $r->print(&Apache::loncommon::start_data_table_header_row());          $r->print(&Apache::loncommon::start_data_table_header_row());
         $r->print('<th>'.&mt('Action?').'</th><th>'.&mt($uctype).'</th><th>'.          $r->print('<th>'.&mt('Action?').'</th><th>'.&mt($uctype).'</th><th>'.
               &mt('Dates available').'</th>');                &mt('Dates available').'</th>');
         if ($type eq 'course') {          if ($type eq 'course' && $status eq 'old') {
             $r->print('<th>'.&mt('Allowed [_1] member affiliations',$type).              $r->print('<th>'.&mt('Allowed [_1] member affiliations',$type).
                       '</th>');                        '</th>');
             $colspan ++;              $colspan ++;
Line 1373  sub display_access_row { Line 1373  sub display_access_row {
 sub course_js {  sub course_js {
     return qq|      return qq|
 <script type="text/javascript">  <script type="text/javascript">
 function setRoleOptions(caller,num,cdom,cnum,type) {  function setRoleOptions(num,roleid,cdom,cnum,type) {
     addIndexnum = getCallerIndex(caller);      updateIndexNum = getIndexByValue('update',num);
     updateIndexnum = getIndex('update',num);      var addItem = 'add_role_'+num;
     if (caller.checked) {      var addIndexNum = getIndexByName(addItem);
         document.portform.elements[updateIndexnum].checked = true;      if (document.portform.elements[addItem].checked) {
         var url = '/adm/portfolio?action=rolepicker&setroles='+addIndexnum+'&cnum='+cnum+'&cdom='+cdom+'&type='+type;          document.portform.elements[updateIndexNum].checked = true;
           var url = '/adm/portfolio?action=rolepicker&setroles='+num+'_'+roleid+'&cnum='+cnum+'&cdom='+cdom+'&type='+type;
         var title = 'Roles_Chooser';          var title = 'Roles_Chooser';
         var options = 'scrollbars=1,resizable=1,menubar=0';          var options = 'scrollbars=1,resizable=1,menubar=0';
         options += ',width=700,height=600';          options += ',width=700,height=600';
         rolebrowser = open(url,title,options,'1');          rolebrowser = open(url,title,options,'1');
         rolebrowser.focus();          rolebrowser.focus();
     } else {      } else {
         for (var j=0;j<5;j++) {          addArray = new Array ('role','access','section','group');
             document.portform.elements[addIndexnum+j].value = '';          for (var j=0;j<addArray.length;j++) {
               var itemIndex = getIndexByName(addArray[j]+'_'+num+'_'+roleid);
               document.portform.elements[itemIndex].value = '';
         }          }
     }      }
 }  }
   
 function getCallerIndex(caller) {  function getIndexByName(item) {
     for (var i=0;i<document.portform.elements.length;i++) {      for (var i=0;i<document.portform.elements.length;i++) {
         if (document.portform.elements[i] == caller) {          if (document.portform.elements[i].name == item) {
             return i;              return i;
         }          }
     }      }
     return -1;      return -1;
 }  }
   
 function getIndex(name,value) {  function getIndexByValue(name,value) {
     for (var i=0;i<document.portform.elements.length;i++) {      for (var i=0;i<document.portform.elements.length;i++) {
         if (document.portform.elements[i].name == name && document.portform.elements[i].value == value) {          if (document.portform.elements[i].name == name && document.portform.elements[i].value == value) {
             return i;              return i;
Line 1433  sub course_row { Line 1436  sub course_row {
         my %course_description = &Apache::lonnet::coursedescription($cid);          my %course_description = &Apache::lonnet::coursedescription($cid);
         $r->print('<td><input type="hidden" name="crsdom_'.$num.'" value="'.$content->{'domain'}.'" /><input type="hidden" name="crsnum_'.$num.'" value="'.$content->{'number'}.'" />'.$course_description{'description'}.'</td>');          $r->print('<td><input type="hidden" name="crsdom_'.$num.'" value="'.$content->{'domain'}.'" /><input type="hidden" name="crsnum_'.$num.'" value="'.$content->{'number'}.'" />'.$course_description{'description'}.'</td>');
     } elsif ($status eq 'new') {      } elsif ($status eq 'new') {
         $r->print('<td>'.&Apache::loncommon::selectcourse_link('portform','crsnum_'.$num,'crsdom_'.$num,'description_'.$num,undef,undef,$uctype).'&nbsp;&nbsp;<input type="text" name="description_'.$num.'" size="30" /><input type="hidden" name="crsdom_'.$num.'" /><input type="hidden" name="crsnum_'.$num.'" /></td>');          $r->print('<td>'.&Apache::loncommon::selectcourse_link('portform','crsnum_'.$num,'crsdom_'.$num,'description_'.$num,$num.'_1',undef,$uctype).'&nbsp;&nbsp;<input type="text" name="description_'.$num.'" size="30" /><input type="hidden" name="crsdom_'.$num.'" /><input type="hidden" name="crsnum_'.$num.'" /></td>');
     }      }
     $r->print('<td>'.&dateboxes($num,$start,$end).'</td>');      $r->print('<td>'.&dateboxes($num,$start,$end));
     $r->print('<td><table><tr>');      my $newrole_id = 1;
     $r->print('<th>'.&mt('Action').'</th><th>'.&mt('Roles').'</th><th>'.  
               &mt('Access').'</th><th>'.&mt('Sections').'</th><th>'.  
               &mt('Groups').'</th></tr>');  
     if ($status eq 'old') {      if ($status eq 'old') {
           $r->print('</td><td>');
         my $max_id = 0;          my $max_id = 0;
         foreach my $role_id (sort(keys(%{$content->{'roles'}}))) {          if (keys(%{$content->{'roles'}}) > 0) {
             if ($role_id > $max_id) {              $r->print('<table><tr><th>'.&mt('Action').'</th>'.
                 $max_id = $role_id;                        '<th>'.&mt('Roles').'</th>'.
             }                        '<th>'.&mt('Access').'</th>'.
             $max_id ++;                        '<th>'.&mt('Sections').'</th>'.
             my $role_selects = &role_selectors($num,$role_id,$status,$type,$content,'display');                        '<th>'.&mt('Groups').'</th></tr>');
             $r->print('<tr><td><span style="white-space: nowrap"><label><input type="checkbox" name="delete_role_'.$num.'" value="'.$role_id.'" />'.&mt('Delete').'</label></span><br /><input type="hidden" name="preserve_role_'.$num.'" value="'.$role_id.'" /></td>'.$role_selects.'</tr>');              foreach my $role_id (sort(keys(%{$content->{'roles'}}))) {
         }                  if ($role_id > $max_id) {
         $r->print('</table><br />'.&mt('Add a roles-based condition').'&nbsp;<input type="checkbox" name ="add_role_'.$num.'" onClick="javascript:setRoleOptions(this,'."'$num','$content->{'domain'}','$content->{'number'}','$uctype'".')" value="'.$max_id.'" /><input type="hidden" name="role_'.$num.'_'.$max_id.'" /><input type="hidden" name="access_'.$num.'_'.$max_id.'" /><input type="hidden" name="section_'.$num.'_'.$max_id.'" /><input type="hidden" name="group_'.$num.'_'.$max_id.'" /></td>');                      $max_id = $role_id;
     } elsif ($status eq 'new') {                  }
         my $role_id = 1;                  $max_id ++;
         my $role_selects = &role_selectors($num,$role_id,$status,$type,undef,'display');                  my $role_selects = &role_selectors($num,$role_id,$type,$content,'display');
         $r->print('<tr><td><input type="checkbox" name="add_role_'.$num.'" value="'.$role_id.'" checked="checked" />'.&mt('Add').'<input type="hidden" name="grplist_'.$num.'_'.$role_id.'" /></td>'.$role_selects);                  $r->print('<tr><td><span style="white-space: nowrap"><label><input type="checkbox" name="delete_role_'.$num.'" value="'.$role_id.'" />'.&mt('Delete').'</label></span><br /><input type="hidden" name="preserve_role_'.$num.'" value="'.$role_id.'" /></td>'.$role_selects.'</tr>');
         $r->print('</tr></table></td>');              }
               $r->print('</table>');
           }
           $r->print('<br />'.&mt('Add a roles-based condition').
                     '&nbsp;<input type="checkbox" name ="add_role_'.
                     $num.'" onClick="javascript:setRoleOptions('."'$num',
                     '$max_id','$content->{'domain'}','$content->{'number'}',
                     '$uctype'".')" value="" />');
           $newrole_id = $max_id;
       } else {
           $r->print('<input type="hidden" name ="add_role_'.$num.'" value="" />');
     }      }
       $r->print(&add_course_role($num,$newrole_id));
       $r->print('</td>');
     return;      return;
 }  }
   
   sub add_course_role {
       my ($num,$max_id) = @_;
       my $output;
       $output .='<input type="hidden" name="role_'.$num.'_'.$max_id.'" />'.
                 '<input type="hidden" name="access_'.$num.'_'.$max_id.'" />'.
                 '<input type="hidden" name="section_'.$num.'_'.$max_id.'" />'.
                 '<input type="hidden" name="group_'.$num.'_'.$max_id.'" />';
       return $output;
   }
   
 sub domains_row {  sub domains_row {
     my ($r,$status,$item,$all_doms,$access_controls,$now,$then) = @_;      my ($r,$status,$item,$all_doms,$access_controls,$now,$then) = @_;
     my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then,      my ($num,$scope,$end,$start) = &set_identifiers($status,$item,$now,$then,
Line 1562  sub set_identifiers { Line 1585  sub set_identifiers {
 }   } 
   
 sub role_selectors {  sub role_selectors {
     my ($num,$role_id,$status,$type,$content,$caller) = @_;      my ($num,$role_id,$type,$content,$caller) = @_;
     my ($output,$cdom,$cnum,$longid);      my ($output,$cdom,$cnum,$longid);
     if ($caller eq 'display') {      if ($caller eq 'display') {
         $longid = '_'.$num.'_'.$role_id;          $longid = '_'.$num.'_'.$role_id;
         if ($status eq 'new') {          $cdom = $$content{'domain'};
             foreach my $item ('role','access','section','group') {          $cnum = $$content{'number'};
                 $output .= '<td><select name="'.$item.$longid.'">'.  
                            '<option value="">'.&mt('Pick [_1] first',$type).  
                            '</option></select></td>';  
             }  
             return $output;  
         } else {  
             $cdom = $$content{'domain'};  
             $cnum = $$content{'number'};  
         }  
     } elsif ($caller eq 'rolepicker') {      } elsif ($caller eq 'rolepicker') {
          $cdom = $env{'form.cdom'};           $cdom = $env{'form.cdom'};
          $cnum = $env{'form.cnum'};           $cnum = $env{'form.cnum'};
Line 1614  sub role_selectors { Line 1628  sub role_selectors {
                     'role' => $allroles,                      'role' => $allroles,
                     'access' => \@allaccesses,                      'access' => \@allaccesses,
                     'section' => $sections,                      'section' => $sections,
                     'group' => $groups,                       'group' => $groups,
                    );                     );
     foreach my $item ('role','access','section','group') {      foreach my $item ('role','access','section','group') {
         $output .= '<td><select name="'.$item.$longid.'" multiple="true" size="4">'."\n";          $output .= '<td><select name="'.$item.$longid.'" multiple="true" size="4">'."\n";
Line 1638  sub role_selectors { Line 1652  sub role_selectors {
   
 sub role_options_window {  sub role_options_window {
     my ($r) = @_;      my ($r) = @_;
     my $cdom = $env{'form.cdom'};  
     my $cnum = $env{'form.cnum'};  
     my $type = $env{'form.type'};      my $type = $env{'form.type'};
     my $addindex = $env{'form.setroles'};      my $rolenum = $env{'form.setroles'};
     my $role_selects = &role_selectors(1,1,'new',$type,undef,'rolepicker');      my ($num,$role_id) = ($rolenum =~ /^([\d_]+)_(\d+)$/);
       my $role_elements;
       foreach my $item ('role','access','section','group') {
           $role_elements .= "'".$item.'_'.$rolenum."',";
       }
       $role_elements =~ s/,$//; 
       my $role_selects = &role_selectors($num,$role_id,$type,undef,
                                          'rolepicker');
     $r->print(<<"END_SCRIPT");      $r->print(<<"END_SCRIPT");
 <script type="text/javascript">  <script type="text/javascript">
 function setRoles() {  function setRoles() {
     var addidx = $addindex+1;      var role_elements = new Array($role_elements);
     for (var i=0; i<4; i++) {      for (var i=0; i<role_elements.length; i++) {
         var copylist = '';          var copylist = '';
         for (var j=0; j<document.rolepicker.elements[i].length; j++) {          for (var j=0; j<document.rolepicker.elements[i].length; j++) {
             if (document.rolepicker.elements[i].options[j].selected) {              if (document.rolepicker.elements[i].options[j].selected) {
Line 1655  function setRoles() { Line 1674  function setRoles() {
             }              }
         }          }
         copylist = copylist.substr(0,copylist.length-1);          copylist = copylist.substr(0,copylist.length-1);
         opener.document.portform.elements[addidx+i].value = copylist;          var openerItem = getIndexByName(role_elements[i]);
           opener.document.portform.elements[openerItem].value = copylist; 
     }      }
       var roleAdder = getIndexByName('add_role_$num');
       opener.document.portform.elements[roleAdder].value = '$role_id';
     self.close();      self.close();
 }  }
   
   function getIndexByName(item) {
       for (var i=0;i<opener.document.portform.elements.length;i++) {
           if (opener.document.portform.elements[i].name == item) {
               return i;
           }
       }
       return -1;
   }
   
 </script>  </script>
 END_SCRIPT  END_SCRIPT
     $r->print(&mt('Select roles, course status, section(s) and group(s) for users who will be able to access the portfolio file.'));      $r->print(&mt('Select roles, course status, section(s) and group(s) for users who will be able to access the portfolio file.'));

Removed from v.1.171  
changed lines
  Added in v.1.172


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