Diff for /loncom/interface/loncreateuser.pm between versions 1.476 and 1.483

version 1.476, 2024/02/29 16:28:35 version 1.483, 2025/01/13 01:00:58
Line 245  function toggleCustom(form,item,name) { Line 245  function toggleCustom(form,item,name) {
         if (radioname) {          if (radioname) {
             if (radioname.length > 0) {              if (radioname.length > 0) {
                 var setvis;                  var setvis;
                 var RegExp = /^customtext_(aboutme|blog|portfolio|portaccess|timezone|webdav)\$/;                  var RegExp = /^customtext_(aboutme|blog|portfolio|portaccess|timezone|webdav|archive)\$/;
                 for (var i=0; i<radioname.length; i++) {                  for (var i=0; i<radioname.length; i++) {
                     if (radioname[i].checked == true) {                      if (radioname[i].checked == true) {
                         if (radioname[i].value == 1) {                          if (radioname[i].value == 1) {
Line 285  sub build_tools_display { Line 285  sub build_tools_display {
                    'webdav'     => "WebDAV access to Authoring Spaces (https)",                     'webdav'     => "WebDAV access to Authoring Spaces (https)",
                    'editors'    => "Available Editors",                     'editors'    => "Available Editors",
                    'managers'   => "Co-authors who can add/revoke roles",                     'managers'   => "Co-authors who can add/revoke roles",
                      'archive'    => "Managers can download tar.gz file of Authoring Space",
                    'portfolio'  => "Personal User Portfolio",                     'portfolio'  => "Personal User Portfolio",
                    'portaccess' => "Portfolio Shareable",                     'portaccess' => "Portfolio Shareable",
                    'timezone'   => "Can set Time Zone",                     'timezone'   => "Can set Time Zone",
Line 330  sub build_tools_display { Line 331  sub build_tools_display {
             &Apache::lonnet::get_dom('configuration',['quotas','authordefaults'],$ccdomain);              &Apache::lonnet::get_dom('configuration',['quotas','authordefaults'],$ccdomain);
         %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,'tools.webdav',          %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,'tools.webdav',
                                                     'authoreditors','authormanagers',                                                      'authoreditors','authormanagers',
                                                     'domcoord.author');                                                      'authorarchive','domcoord.author');
         @usertools = ('webdav','editors','managers');          @usertools = ('webdav','editors','managers','archive');
         $colspan = ' colspan="2"';          $colspan = ' colspan="2"';
     } else {      } else {
         %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,          %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
Line 345  sub build_tools_display { Line 346  sub build_tools_display {
             $currdisp,$custdisp,$custradio,$onclick,$customsty,$editorsty);              $currdisp,$custdisp,$custradio,$onclick,$customsty,$editorsty);
         $cust_off = 'checked="checked" ';          $cust_off = 'checked="checked" ';
         $tool_on = 'checked="checked" ';          $tool_on = 'checked="checked" ';
         unless (($context eq 'authordefaults') && ($item ne 'webdav')) {          unless (($context eq 'authordefaults') || ($item eq 'webdav')) {
             $curr_access =              $curr_access =
                 &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item,undef,                  &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item,undef,
                                                   $context,\%userenv,'',                                                    $context,\%userenv,'',
Line 357  sub build_tools_display { Line 358  sub build_tools_display {
                 $cust_off = '';                  $cust_off = '';
             }              }
         } elsif ($context eq 'authordefaults') {          } elsif ($context eq 'authordefaults') {
             if ($item eq 'editors') {              if (($item eq 'editors') || ($item eq 'archive')) {
                 if ($userenv{'author'.$item} ne '') {                  if ($userenv{'author'.$item} ne '') {
                     $cust_on = ' checked="checked" ';                      $cust_on = ' checked="checked" ';
                     $cust_off = '';                      $cust_off = '';
                       if ($item eq 'archive') {
                           $curr_access = $userenv{'author'.$item};
                       }
                   } elsif ($item eq 'archive') {
                       $curr_access = 0;
                       if (ref($domconfig{'authordefaults'}) eq 'HASH') {
                           $curr_access = $domconfig{'authordefaults'}{'archive'};
                       }
                 }                  }
             } elsif ($item eq 'webdav') {              } elsif ($item eq 'webdav') {
                 if ($userenv{'tools.'.$item} ne '') {                  if ($userenv{'tools.'.$item} ne '') {
                     $cust_on = ' checked="checked" ';                      $cust_on = ' checked="checked" ';
                     $cust_off = '';                      $cust_off = '';
                       $curr_access = $userenv{'tools.'.$item};
                   } else {
                       $curr_access =
                           &Apache::lonnet::usertools_access($ccuname,$ccdomain,$item,'reload',
                                                             undef,\%userenv,'',
                                                             {'is_adv' => $isadv});
                 }                  }
             }              }
         } elsif ($userenv{$context.'.'.$item} ne '') {          } elsif ($userenv{$context.'.'.$item} ne '') {
Line 457  sub build_tools_display { Line 472  sub build_tools_display {
             my $current = $userenv{$context.'.'.$item};              my $current = $userenv{$context.'.'.$item};
             if ($item eq 'webdav') {              if ($item eq 'webdav') {
                 $current = $userenv{'tools.webdav'};                  $current = $userenv{'tools.webdav'};
               } elsif ($item eq 'archive') {
                   $current = $userenv{'author'.$item};
             }              }
             if ($current eq '') {              if ($current eq '') {
                 $custom_access =                  $custom_access =
Line 1514  sub print_user_modification_page { Line 1531  sub print_user_modification_page {
                 'bread_crumbs_component' => 'User Management'};                  'bread_crumbs_component' => 'User Management'};
     if ($env{'form.popup'}) {      if ($env{'form.popup'}) {
         $args->{'no_nav_bar'} = 1;          $args->{'no_nav_bar'} = 1;
           $args->{'add_modal'} = 1;
     }      }
     if (($context eq 'domain') && ($env{'request.role.domain'} eq $ccdomain)) {      if (($context eq 'domain') && ($env{'request.role.domain'} eq $ccdomain)) {
         my @toggles;          my @toggles;
Line 1523  sub print_user_modification_page { Line 1541  sub print_user_modification_page {
             unless ($isauthor) {              unless ($isauthor) {
                 push(@toggles,'requestauthor');                  push(@toggles,'requestauthor');
             }              }
             push(@toggles,('webdav','editors'));              push(@toggles,('webdav','editors','archive'));
         }          }
         if (&Apache::lonnet::allowed('mut',$ccdomain)) {          if (&Apache::lonnet::allowed('mut',$ccdomain)) {
             push(@toggles,('aboutme','blog','portfolio','portaccess','timezone'));              push(@toggles,('aboutme','blog','portfolio','portaccess','timezone'));
Line 2899  sub personal_data_display { Line 2917  sub personal_data_display {
             $rowcount ++;              $rowcount ++;
         }          }
     }      }
       my %shownfields;
       if ($env{'request.role.domain'} ne $ccdomain) {
           my %shownfields_by_type =
               &Apache::lonuserutils::get_othdom_shownfields($ccdomain,\@userinfo);
           my @types = split(/:/,$userenv{'inststatus'});
           if (@types == 0) {
               @types = ('default');
           }
           foreach my $type (@types) {
               if (ref($shownfields_by_type{$type}) eq 'HASH') {
                   foreach my $field (keys(%{$shownfields_by_type{$type}})) {
                       if ($shownfields_by_type{$type}{$field}) {
                           $shownfields{$field} = 1;
                       }
                   }
               }
           }
       }
     foreach my $item (@userinfo) {      foreach my $item (@userinfo) {
         my $rowtitle = $lt{$item};          my $rowtitle = $lt{$item};
         my $hiderow = 0;          my $hiderow = 0;
Line 2945  sub personal_data_display { Line 2981  sub personal_data_display {
                     $row .= '<br />'.&Apache::lonuserutils::forceid_change($context);                      $row .= '<br />'.&Apache::lonuserutils::forceid_change($context);
                 }                  }
             } else {              } else {
                 $row .= $userenv{$item};                  if ($env{'request.role.domain'} ne $ccdomain) {
                       if ($shownfields{$item}) {
                           $row .= $userenv{$item};
                       } else {
                           $row .= &mt('not shown');
                       }
                   } else {
                       $row .= $userenv{$item};
                   }
             }              }
         }          }
         $row .= &Apache::lonhtmlcommon::row_closure(1);          $row .= &Apache::lonhtmlcommon::row_closure(1);
Line 3235  sub update_user_data { Line 3279  sub update_user_data {
     my @usertools = ('aboutme','blog','portfolio','portaccess','timezone');      my @usertools = ('aboutme','blog','portfolio','portaccess','timezone');
     my @requestcourses = ('official','unofficial','community','textbook','placement','lti');      my @requestcourses = ('official','unofficial','community','textbook','placement','lti');
     my @requestauthor = ('requestauthor');      my @requestauthor = ('requestauthor');
     my @authordefaults = ('webdav','editors');      my @authordefaults = ('webdav','editors','archive');
     my ($othertitle,$usertypes,$types) =       my ($othertitle,$usertypes,$types) = 
         &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});          &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});
     my %canmodify_status =      my %canmodify_status =
Line 3365  sub update_user_data { Line 3409  sub update_user_data {
                 if ($env{'form.customwebdav'} == 1) {                  if ($env{'form.customwebdav'} == 1) {
                     $newcustom{'webdav'} = $env{'form.authordefaults_webdav'};                      $newcustom{'webdav'} = $env{'form.authordefaults_webdav'};
                     $changed{'webdav'} = &tool_admin('webdav',$newcustom{'webdav'},                      $changed{'webdav'} = &tool_admin('webdav',$newcustom{'webdav'},
                                                   \%changeHash,'authordefaults');                                                       \%changeHash,'authordefaults');
                   }
                   if ($env{'form.customarchive'} == 1) {
                       $newcustom{'archive'} = $env{'form.authordefaults_archive'};
                       $changed{'archive'} = &tool_admin('archive',$newcustom{'archive'},
                                                         \%changeHash,'authordefaults');
   
                 }                  }
             }              }
             if ($canmodify_status{'inststatus'}) {              if ($canmodify_status{'inststatus'}) {
Line 3434  sub update_user_data { Line 3484  sub update_user_data {
              'id','permanentemail','portfolioquota','authorquota','inststatus',               'id','permanentemail','portfolioquota','authorquota','inststatus',
              'tools.aboutme','tools.blog','tools.webdav',               'tools.aboutme','tools.blog','tools.webdav',
              'tools.portfolio','tools.timezone','tools.portaccess',               'tools.portfolio','tools.timezone','tools.portaccess',
              'authormanagers','authoreditors','requestauthor',               'authormanagers','authoreditors','authorarchive','requestauthor',
              'requestcourses.official','requestcourses.unofficial',               'requestcourses.official','requestcourses.unofficial',
              'requestcourses.community','requestcourses.textbook',               'requestcourses.community','requestcourses.textbook',
              'requestcourses.placement','requestcourses.lti',               'requestcourses.placement','requestcourses.lti',
Line 3850  sub update_user_data { Line 3900  sub update_user_data {
                                         $newenvhash{'environment.editors'} = 'edit,xml';                                          $newenvhash{'environment.editors'} = 'edit,xml';
                                     }                                      }
                                 }                                  }
                               } elsif ($key eq 'archive') {
                                   $newenvhash{'environment.author.'.$key} =
                                       $changeHash{'author.'.$key};
                                   if ($changeHash{'author.'.$key} ne '') {
                                       $newenvhash{'environment.canarchive'} =
                                           $changeHash{'author.'.$key};
                                   } else {
                                       unless ($got_domdefs) {
                                           %domdefaults =
                                              &Apache::lonnet::get_domain_defaults($env{'user.domain'});
                                           $got_domdefs = 1;
                                       }
                                       $newenvhash{'environment.canarchive'} =
                                           $domdefaults{'archive'};
                                   }
                             } elsif ($key ne 'quota') {                              } elsif ($key ne 'quota') {
                                 $newenvhash{'environment.tools.'.$key} =                                   $newenvhash{'environment.tools.'.$key} = 
                                     $changeHash{'tools.'.$key};                                      $changeHash{'tools.'.$key};
Line 4072  sub display_userinfo { Line 4137  sub display_userinfo {
          'chto'           => 'Changed To:',           'chto'           => 'Changed To:',
          'editors'        => "Available Editors in Authoring Space",           'editors'        => "Available Editors in Authoring Space",
          'managers'       => "Co-authors who can add/revoke roles",           'managers'       => "Co-authors who can add/revoke roles",
            'archive'        => "Managers can download tar.gz file of Authoring Space",
          'edit'           => 'Standard editor (Edit)',           'edit'           => 'Standard editor (Edit)',
          'xml'            => 'Text editor (EditXML)',           'xml'            => 'Text editor (EditXML)',
          'daxe'           => 'Daxe editor (Daxe)',           'daxe'           => 'Daxe editor (Daxe)',
Line 4105  sub display_userinfo { Line 4171  sub display_userinfo {
                     if ($entry eq 'requestauthor') {                      if ($entry eq 'requestauthor') {
                         @items = ($entry);                          @items = ($entry);
                     } elsif ($entry eq 'authordefaults') {                      } elsif ($entry eq 'authordefaults') {
                         @items = ('webdav','managers','editors');                          @items = ('webdav','managers','editors','archive');
                     } else {                      } else {
                         @items = @{$requestcourses};                          @items = @{$requestcourses};
                     }                      }
Line 4356  sub tool_changes { Line 4422  sub tool_changes {
             } elsif ($tool eq 'webdav') {              } elsif ($tool eq 'webdav') {
                 $envkey = 'tools.webdav';                  $envkey = 'tools.webdav';
                 $newval = $env{'form.'.$context.'_'.$tool};                  $newval = $env{'form.'.$context.'_'.$tool};
               } elsif ($tool eq 'archive') {
                   $envkey = 'authorarchive';
                   $newval = $env{'form.'.$context.'_'.$tool};
             }              }
         } else {          } else {
             $newval = $env{'form.'.$context.'_'.$tool};              $newval = $env{'form.'.$context.'_'.$tool};
Line 4387  sub tool_changes { Line 4456  sub tool_changes {
                 } elsif ($tool eq 'editors') {                  } elsif ($tool eq 'editors') {
                     $oldaccesstext->{$tool} = &mt('can use: [_1]',                      $oldaccesstext->{$tool} = &mt('can use: [_1]',
                                                   join(', ', map { $tooldesc{$_} } split(/,/,$userenv->{$envkey})));                                                    join(', ', map { $tooldesc{$_} } split(/,/,$userenv->{$envkey})));
                 } elsif ($tool eq 'webdav') {                  } elsif (($tool eq 'webdav') || ($tool eq 'archive')) {
                     if ($userenv->{$envkey}) {                      if ($userenv->{$envkey}) {
                         $oldaccesstext->{$tool} = &mt("availability set to 'on'");                          $oldaccesstext->{$tool} = &mt("availability set to 'on'");
                     } else {                      } else {
Line 4433  sub tool_changes { Line 4502  sub tool_changes {
                                     $managers =~ s/,/, /g;                                      $managers =~ s/,/, /g;
                                     $newaccesstext->{$tool} = $managers;                                      $newaccesstext->{$tool} = $managers;
                                 }                                  }
                             } elsif ($tool eq 'webdav') {                              } elsif (($tool eq 'webdav') || ($tool eq 'archive')) {
                                 if ($newval) {                                  if ($newval) {
                                     $newaccesstext->{$tool} = &mt("availability set to 'on'");                                      $newaccesstext->{$tool} = &mt("availability set to 'on'");
                                 } else {                                  } else {
Line 4473  sub tool_changes { Line 4542  sub tool_changes {
                                     $managers =~ s/,/, /g;                                      $managers =~ s/,/, /g;
                                     $newaccesstext->{$tool} = $managers;                                      $newaccesstext->{$tool} = $managers;
                                 }                                  }
                             } elsif ($tool eq 'webdav') {                              } elsif (($tool eq 'webdav') || ($tool eq 'archive')) {
                                 if ($userenv->{$envkey}) {                                  if ($userenv->{$envkey}) {
                                     $newaccesstext->{$tool} = &mt("availability set to 'on'");                                      $newaccesstext->{$tool} = &mt("availability set to 'on'");
                                 } else {                                  } else {
Line 4522  sub tool_changes { Line 4591  sub tool_changes {
                                 $managers =~ s/,/, /g;                                  $managers =~ s/,/, /g;
                                 $newaccesstext->{$tool} = $managers;                                  $newaccesstext->{$tool} = $managers;
                             }                              }
                         } elsif ($tool eq 'webdav') {                          } elsif (($tool eq 'webdav') || ($tool eq 'archive')) {
                             if ($userenv->{$envkey}) {                              if ($userenv->{$envkey}) {
                                 $newaccesstext->{$tool} = &mt("availability set to 'on'");                                  $newaccesstext->{$tool} = &mt("availability set to 'on'");
                             } else {                              } else {
Line 4570  sub tool_changes { Line 4639  sub tool_changes {
                         } elsif ($tool eq 'editors') {                          } elsif ($tool eq 'editors') {
                             $newaccesstext->{$tool} = &mt('can use: [_1]',                              $newaccesstext->{$tool} = &mt('can use: [_1]',
                                                           join(', ', map { $tooldesc{$_} } split(/,/,$newval)));                                                            join(', ', map { $tooldesc{$_} } split(/,/,$newval)));
                         } elsif ($tool eq 'webdav') {                          } elsif (($tool eq 'webdav') || ($tool eq 'archive')) {
                             if ($newval) {                              if ($newval) {
                                 $newaccesstext->{$tool} = &mt("availability set to 'on'");                                  $newaccesstext->{$tool} = &mt("availability set to 'on'");
                             } else {                              } else {
Line 5234  sub tool_admin { Line 5303  sub tool_admin {
             $toolchanged = 1;              $toolchanged = 1;
             if ($tool eq 'requestauthor') {              if ($tool eq 'requestauthor') {
                 $changeHash->{$context} = $settool;                  $changeHash->{$context} = $settool;
             } elsif (($tool eq 'managers') || ($tool eq 'editors')) {              } elsif (($tool eq 'managers') || ($tool eq 'editors') || ($tool eq 'archive')) {
                 $changeHash->{'author'.$tool} = $settool;                  $changeHash->{'author'.$tool} = $settool;
             } elsif ($tool eq 'webdav') {              } elsif ($tool eq 'webdav') {
                 $changeHash->{'tools.'.$tool} = $settool;                  $changeHash->{'tools.'.$tool} = $settool;
Line 6450  sub handler { Line 6519  sub handler {
             $r->internal_redirect('/adm/viewcoauthors');              $r->internal_redirect('/adm/viewcoauthors');
             return OK;              return OK;
         }          }
       } elsif (($env{'form.action'} eq 'setenv') && ($context eq 'author')) {
           my ($role,$audom,$auname,$canview,$canedit) =
               &Apache::lonviewcoauthors::get_allowable();
           push(@{$brcrum},
                    {href => '/adm/createuser?action=calist',
                     text => 'Coauthor-viewable list',
                     help => 'Author_List_Coauthors'});
           my $args = { 'bread_crumbs' => $brcrum };
           $r->print(&Apache::loncommon::start_page('Coauthor-viewable list',undef,
                                                    $args));
           my %viewsettings =
               &Apache::lonviewcoauthors::retrieve_view_settings($auname,$audom,$role);
           if ($viewsettings{'show'} eq 'none') {
               $r->print('<h3>'.&mt('Coauthor-viewable listing').'</h3>'.
                         '<p class="LC_info">'.
                         &mt('Listing of co-authors not enabled for this Authoring Space').
                         '</p>');
           } else {
               &Apache::lonviewcoauthors::print_coauthors($r,$auname,$audom,$role,
                                                          '/adm/createuser',\%viewsettings);
           }
     } else {      } else {
         $bread_crumbs_component = 'User Management';          $bread_crumbs_component = 'User Management';
         $args = { bread_crumbs           => $brcrum,          $args = { bread_crumbs           => $brcrum,
Line 6954  sub print_main_menu { Line 7044  sub print_main_menu {
             );              );
         }          }
     } elsif ($context eq 'author') {      } elsif ($context eq 'author') {
           my $coauthorlist;
           if ($env{'request.role'} =~ m{^(?:ca|aa)\./($match_domain)/($match_username)$}) {
               if ($env{'environment.internal.coauthorlist./'.$1.'/'.$2}) {
                   $coauthorlist = 1;
               }
           } elsif ($env{'request.role'} eq "au./$env{'user.domain'}/") {
               if ($env{'environment.coauthorlist'}) {
                   $coauthorlist = 1;
               }
           }
           if ($coauthorlist) {
               push(@{ $menu[1]->{items} },
                   {
                    linktext => 'Co-author-viewable list',
                    icon => 'clst.png',
                    #help => 'Coauthor_Listing',
                    url => '/adm/createuser?action=calist&forceedit=0',
                    permission => $permission->{'cusr'},
                    linktitle => 'Co-author-viewable listing',
               });
           }
         push(@{ $menu[2]->{items} }, #Category: Administration          push(@{ $menu[2]->{items} }, #Category: Administration
             {              {
              linktext => 'Change Log',               linktext => 'Change Log',

Removed from v.1.476  
changed lines
  Added in v.1.483


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