'
+ .&mt('Unable to determine home server for [_1] in domain [_2].',
+ '"'.$env{'form.ccuname'}.'"','"'.$env{'form.ccdomain'}.'"')
+ .'
');
return;
}
}
@@ -2501,9 +3182,10 @@ sub update_user_data {
my (%alerts,%rulematch,%inst_results,%curr_rules);
my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');
- my @usertools = ('aboutme','blog','webdav','portfolio');
- my @requestcourses = ('official','unofficial','community');
+ my @usertools = ('aboutme','blog','portfolio','portaccess','timezone');
+ my @requestcourses = ('official','unofficial','community','textbook');
my @requestauthor = ('requestauthor');
+ my @authordefaults = ('webdav','editors','archive');
my ($othertitle,$usertypes,$types) =
&Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});
my %canmodify_status =
@@ -2597,7 +3279,8 @@ sub update_user_data {
$newcustom{$item} = $env{'form.crsreq_'.$item};
if ($env{'form.crsreq_'.$item} eq 'autolimit') {
$newcustom{$item} .= '=';
- unless ($env{'form.crsreq_'.$item.'_limit'} =~ /\D/) {
+ $env{'form.crsreq_'.$item.'_limit'} =~ s/\D+//g;
+ if ($env{'form.crsreq_'.$item.'_limit'}) {
$newcustom{$item} .= $env{'form.crsreq_'.$item.'_limit'};
}
}
@@ -2611,6 +3294,35 @@ sub update_user_data {
$newcustom{'requestauthor'},
\%changeHash,'requestauthor');
}
+ if ($env{'form.customeditors'} == 1) {
+ my @editors;
+ my @posseditors = &Apache::loncommon::get_env_multiple('form.custom_editor');
+ if (@posseditors) {
+ foreach my $editor (@posseditors) {
+ if (grep(/^\Q$editor\E$/,@posseditors)) {
+ unless (grep(/^\Q$editor\E$/,@editors)) {
+ push(@editors,$editor);
+ }
+ }
+ }
+ }
+ if (@editors) {
+ @editors = sort(@editors);
+ $changed{'editors'} = &tool_admin('editors',join(',',@editors),
+ \%changeHash,'authordefaults');
+ }
+ }
+ if ($env{'form.customwebdav'} == 1) {
+ $newcustom{'webdav'} = $env{'form.authordefaults_webdav'};
+ $changed{'webdav'} = &tool_admin('webdav',$newcustom{'webdav'},
+ \%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 (exists($env{'form.inststatus'})) {
@@ -2630,7 +3342,7 @@ sub update_user_data {
$env{'form.ccdomain'},$env{'form.ccuname'});
}
}
- $r->print(''
+ .&mt('Unable to successfully change environment for [_1] in domain [_2].',
+ '"'.$env{'form.ccuname'}.'"',
+ '"'.$env{'form.ccdomain'}.'"')
+ .'
');
}
} else { # End of if ($env ... ) logic
# They did not want to change the users name, quota, tool availability,
@@ -3065,9 +3930,9 @@ sub update_user_data {
$rolestr = &mt('No roles');
}
if ($context eq 'course') {
- $contextname = &mt('course');
+ $contextname = 'course';
} elsif ($context eq 'author') {
- $contextname = &mt('co-author');
+ $contextname = 'co-author';
}
$r->print(&mt('The following fields were not updated: ').'');
if ($crstype eq 'Community') {
- $r->print(&mt('If the member is currently logged-in to LON-CAPA, the new role will be available when the member next logs in.'));
+ $r->print(&mt('If the member is currently logged-in to LON-CAPA, the new role can be displayed by using the "Check for changes" link on the Roles/Courses page.'));
} else {
- $r->print(&mt('If the student is currently logged-in to LON-CAPA, the new role will be available when the student next logs in.'));
+ $r->print(&mt('If the student is currently logged-in to LON-CAPA, the new role can be displayed by using the "Check for changes" link on the Roles/Courses page.'));
}
$r->print('
');
}
@@ -3834,14 +4976,14 @@ sub get_defaultquota_text {
my ($settingstatus) = @_;
my $defquotatext;
if ($settingstatus eq '') {
- $defquotatext = &mt('(default)');
+ $defquotatext = &mt('default');
} else {
my ($usertypes,$order) =
&Apache::lonnet::retrieve_inst_usertypes($env{'form.ccdomain'});
if ($usertypes->{$settingstatus} eq '') {
- $defquotatext = &mt('(default)');
+ $defquotatext = &mt('default');
} else {
- $defquotatext = &mt('(default for [_1])',$usertypes->{$settingstatus});
+ $defquotatext = &mt('default for [_1]',$usertypes->{$settingstatus});
}
}
return $defquotatext;
@@ -3866,8 +5008,8 @@ sub update_result_form {
$outcome .= ''.&Apache::lonhtmlcommon::start_pick_box());
+ my ($num,$count);
+ $count = scalar(keys(%{$domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$usertype}}));
+ $count += $numextras;
+ foreach my $field (@{$infofields}) {
+ next unless ($domconfig{'usercreation'}{'cancreate'}{'emailusername'}{$usertype}{$field});
+ next unless ($infotitles->{$field});
+ $r->print(&Apache::lonhtmlcommon::row_title($infotitles->{$field}).
+ $info{$uname}{$field});
+ $num ++;
+ unless ($count == $num) {
+ $r->print(&Apache::lonhtmlcommon::row_closure());
+ }
+ }
+ }
+ }
+ if ($numextras) {
+ unless ($pickstart) {
+ $r->print('
'.&Apache::lonhtmlcommon::start_pick_box());
+ $pickstart = 1;
+ }
+ if ($showemail) {
+ my $closure = '';
+ unless ($showstatus) {
+ $closure = 1;
+ }
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('E-mail address')).
+ $showemail.
+ &Apache::lonhtmlcommon::row_closure($closure));
+ }
+ if ($showstatus) {
+ $r->print(&Apache::lonhtmlcommon::row_title(&mt('Status type[_1](self-reported)','
')).
+ $showstatus.
+ &Apache::lonhtmlcommon::row_closure(1));
+ }
+ }
+ if ($pickstart) {
+ $r->print(&Apache::lonhtmlcommon::end_pick_box().'
');
+ } else {
+ $r->print('
'.&mt('No information to display for this account request.').'
');
+ }
+ } else {
+ $r->print('
'.&mt('No information available for this account request.').'
');
+ }
+ }
+ }
+ }
+ }
+ $r->print(&close_popup_form());
} elsif (($env{'form.action'} eq 'listusers') &&
($permission->{'view'} || $permission->{'cusr'})) {
+ my $helpitem = 'Course_View_Class_List';
+ if ($context eq 'author') {
+ $helpitem = 'Author_View_Coauthor_List';
+ } elsif ($context eq 'domain') {
+ $helpitem = 'Domain_View_Users_List';
+ }
if ($env{'form.phase'} eq 'bulkchange') {
push(@{$brcrum},
{href => '/adm/createuser?action=listusers',
text => "List Users"},
{href => "/adm/createuser",
text => "Result",
- help => 'Course_View_Class_List'});
+ help => $helpitem});
$bread_crumbs_component = 'Update Users';
$args = {bread_crumbs => $brcrum,
bread_crumbs_component => $bread_crumbs_component};
@@ -4555,7 +5981,7 @@ sub handler {
push(@{$brcrum},
{href => '/adm/createuser?action=listusers',
text => "List Users",
- help => 'Course_View_Class_List'});
+ help => $helpitem});
$bread_crumbs_component = 'List Users';
$args = {bread_crumbs => $brcrum,
bread_crumbs_component => $bread_crumbs_component};
@@ -4635,69 +6061,193 @@ sub handler {
'
'.&mt('You do not have permission to modify dates or sections for users').'');
}
} elsif ($env{'form.action'} eq 'selfenroll') {
- push(@{$brcrum},
- {href => '/adm/createuser?action=selfenroll',
- text => "Configure Self-enrollment",
- help => 'Course_Self_Enrollment'});
- if (!exists($env{'form.state'})) {
- $args = { bread_crumbs => $brcrum,
- bread_crumbs_component => 'Configure Self-enrollment'};
- $r->print(&header(undef,$args));
- $r->print('
'.&mt('Self-enrollment with a student role').'
'."\n");
- &print_selfenroll_menu($r,$context,$permission);
- } elsif ($env{'form.state'} eq 'done') {
- push (@{$brcrum},
- {href=>'/adm/createuser?action=selfenroll',
- text=>"Result"});
+ my %currsettings;
+ if ($permission->{selfenrolladmin} || $permission->{selfenrollview}) {
+ %currsettings = (
+ selfenroll_types => $env{'course.'.$cid.'.internal.selfenroll_types'},
+ selfenroll_registered => $env{'course.'.$cid.'.internal.selfenroll_registered'},
+ selfenroll_section => $env{'course.'.$cid.'.internal.selfenroll_section'},
+ selfenroll_notifylist => $env{'course.'.$cid.'.internal.selfenroll_notifylist'},
+ selfenroll_approval => $env{'course.'.$cid.'.internal.selfenroll_approval'},
+ selfenroll_limit => $env{'course.'.$cid.'.internal.selfenroll_limit'},
+ selfenroll_cap => $env{'course.'.$cid.'.internal.selfenroll_cap'},
+ selfenroll_start_date => $env{'course.'.$cid.'.internal.selfenroll_start_date'},
+ selfenroll_end_date => $env{'course.'.$cid.'.internal.selfenroll_end_date'},
+ selfenroll_start_access => $env{'course.'.$cid.'.internal.selfenroll_start_access'},
+ selfenroll_end_access => $env{'course.'.$cid.'.internal.selfenroll_end_access'},
+ default_enrollment_start_date => $env{'course.'.$cid.'.default_enrollment_start_date'},
+ default_enrollment_end_date => $env{'course.'.$cid.'.default_enrollment_end_date'},
+ uniquecode => $env{'course.'.$cid.'.internal.uniquecode'},
+ );
+ }
+ if ($permission->{selfenrolladmin}) {
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=selfenroll',
+ text => "Configure Self-enrollment",
+ help => 'Course_Self_Enrollment'});
+ if (!exists($env{'form.state'})) {
+ $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => 'Configure Self-enrollment'};
+ $r->print(&header(undef,$args));
+ $r->print('
'.&mt('Self-enrollment with a student role').'
'."\n");
+ &print_selfenroll_menu($r,'course',$cid,$cdom,$cnum,\%currsettings);
+ } elsif ($env{'form.state'} eq 'done') {
+ push (@{$brcrum},
+ {href=>'/adm/createuser?action=selfenroll',
+ text=>"Result"});
+ $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => 'Self-enrollment result'};
+ $r->print(&header(undef,$args));
+ $r->print('
'.&mt('Self-enrollment with a student role').'
'."\n");
+ &update_selfenroll_config($r,$cid,$cdom,$cnum,$context,$crstype,\%currsettings);
+ }
+ } elsif ($permission->{selfenrollview}) {
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=selfenroll',
+ text => "View Self-enrollment configuration",
+ help => 'Course_Self_Enrollment'});
$args = { bread_crumbs => $brcrum,
- bread_crumbs_component => 'Self-enrollment result'};
+ bread_crumbs_component => 'Self-enrollment Settings'};
$r->print(&header(undef,$args));
$r->print('
'.&mt('Self-enrollment with a student role').'
'."\n");
- &update_selfenroll_config($r,$context,$permission);
+ &print_selfenroll_menu($r,'course',$cid,$cdom,$cnum,\%currsettings,'',1);
+ } else {
+ $r->print(&header(undef,{'no_nav_bar' => 1}).
+ '
'.&mt('You do not have permission to configure self-enrollment').'');
}
} elsif ($env{'form.action'} eq 'selfenrollqueue') {
- push(@{$brcrum},
- {href => '/adm/createuser?action=selfenrollqueue',
- text => 'Enrollment requests',
- help => 'Course_Self_Enrollment'});
- $bread_crumbs_component = 'Enrollment requests';
- if ($env{'form.state'} eq 'done') {
+ if ($permission->{selfenrolladmin}) {
push(@{$brcrum},
{href => '/adm/createuser?action=selfenrollqueue',
- text => 'Result',
- help => 'Course_Self_Enrollment'});
- $bread_crumbs_component = 'Enrollment result';
- }
- $args = { bread_crumbs => $brcrum,
- bread_crumbs_component => $bread_crumbs_component};
- $r->print(&header(undef,$args));
- my $cid = $env{'request.course.id'};
- my $cdom = $env{'course.'.$cid.'.domain'};
- my $cnum = $env{'course.'.$cid.'.num'};
- my $coursedesc = $env{'course.'.$cid.'.description'};
- if (!exists($env{'form.state'})) {
- $r->print('
'.&mt('Pending enrollment requests').'
'."\n");
- $r->print(&Apache::loncoursequeueadmin::display_queued_requests($context,
- $cdom,$cnum));
- } elsif ($env{'form.state'} eq 'done') {
- $r->print('
'.&mt('Enrollment request processing').'
'."\n");
- $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
- $cdom,$cnum,$coursedesc));
+ text => 'Enrollment requests',
+ help => 'Course_Approve_Selfenroll'});
+ $bread_crumbs_component = 'Enrollment requests';
+ if ($env{'form.state'} eq 'done') {
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=selfenrollqueue',
+ text => 'Result',
+ help => 'Course_Approve_Selfenroll'});
+ $bread_crumbs_component = 'Enrollment result';
+ }
+ $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
+ $r->print(&header(undef,$args));
+ my $coursedesc = $env{'course.'.$cid.'.description'};
+ if (!exists($env{'form.state'})) {
+ $r->print('
'.&mt('Pending enrollment requests').'
'."\n");
+ $r->print(&Apache::loncoursequeueadmin::display_queued_requests($context,
+ $cdom,$cnum));
+ } elsif ($env{'form.state'} eq 'done') {
+ $r->print('
'.&mt('Enrollment request processing').'
'."\n");
+ $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
+ $cdom,$cnum,$coursedesc));
+ }
+ } else {
+ $r->print(&header(undef,{'no_nav_bar' => 1}).
+ '
'.&mt('You do not have permission to manage self-enrollment').'');
}
} elsif ($env{'form.action'} eq 'changelogs') {
- my $helpitem;
- if ($context eq 'course') {
- $helpitem = 'Course_User_Logs';
+ if ($permission->{cusr} || $permission->{view}) {
+ &print_userchangelogs_display($r,$context,$permission,$brcrum);
+ } else {
+ $r->print(&header(undef,{'no_nav_bar' => 1}).
+ '
'.&mt('You do not have permission to view change logs').'');
+ }
+ } elsif ($env{'form.action'} eq 'helpdesk') {
+ if (($permission->{'owner'} || $permission->{'co-owner'}) &&
+ ($permission->{'cusr'} || $permission->{'view'})) {
+ if ($env{'form.state'} eq 'process') {
+ if ($permission->{'owner'}) {
+ &update_helpdeskaccess($r,$permission,$brcrum);
+ } else {
+ &print_helpdeskaccess_display($r,$permission,$brcrum);
+ }
+ } else {
+ &print_helpdeskaccess_display($r,$permission,$brcrum);
+ }
+ } else {
+ $r->print(&header(undef,{'no_nav_bar' => 1}).
+ '
'.&mt('You do not have permission to view helpdesk access').'');
+ }
+ } elsif ($env{'form.action'} eq 'camanagers') {
+ if (($permission->{cusr}) && ($context eq 'author')) {
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=camanagers',
+ text => 'Co-author Managers',
+ help => 'Author_Manage_Coauthors'});
+ if ($env{'form.state'} eq 'process') {
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=camanagers',
+ text => 'Result',
+ help => 'Author_Manage_Coauthors'});
+ }
+ $args = { bread_crumbs => $brcrum };
+ $r->print(&header(undef,$args));
+ my $coursedesc = $env{'course.'.$cid.'.description'};
+ if (!exists($env{'form.state'})) {
+ $r->print('
'.&mt('Co-author Management').'
'."\n".
+ &display_coauthor_managers($permission));
+ } elsif ($env{'form.state'} eq 'process') {
+ $r->print('
'.&mt('Co-author Management Update Result').'
'."\n".
+ &update_coauthor_managers($permission));
+ }
+ }
+ } elsif (($env{'form.action'} eq 'calist') && ($context eq 'author')) {
+ if ($permission->{'cusr'}) {
+ my ($role,$audom,$auname,$canview,$canedit) =
+ &Apache::lonviewcoauthors::get_allowable();
+ if (($canedit) && ($env{'form.forceedit'})) {
+ &Apache::lonviewcoauthors::get_editor_crumbs($brcrum,'/adm/createuser');
+ my $args = { 'bread_crumbs' => $brcrum };
+ $r->print(&Apache::loncommon::start_page('Configure co-author listing',undef,
+ $args).
+ &Apache::lonviewcoauthors::edit_settings($audom,$auname,$role,
+ '/adm/createuser'));
+ } else {
+ 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('
'.&mt('Coauthor-viewable listing').'
'.
+ '
'.
+ &mt('Listing of co-authors not enabled for this Authoring Space').
+ '
');
+ } else {
+ &Apache::lonviewcoauthors::print_coauthors($r,$auname,$audom,$role,
+ '/adm/createuser',\%viewsettings);
+ }
+ }
+ } else {
+ $r->internal_redirect('/adm/viewcoauthors');
+ 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('
'.&mt('Coauthor-viewable listing').'
'.
+ '
'.
+ &mt('Listing of co-authors not enabled for this Authoring Space').
+ '
');
+ } else {
+ &Apache::lonviewcoauthors::print_coauthors($r,$auname,$audom,$role,
+ '/adm/createuser',\%viewsettings);
}
- push (@{$brcrum},
- {href => '/adm/createuser?action=changelogs',
- text => 'User Management Logs',
- help => $helpitem});
- $bread_crumbs_component = 'User Changes';
- $args = { bread_crumbs => $brcrum,
- bread_crumbs_component => $bread_crumbs_component};
- $r->print(&header(undef,$args));
- &print_userchangelogs_display($r,$context,$permission);
} else {
$bread_crumbs_component = 'User Management';
$args = { bread_crumbs => $brcrum,
@@ -4729,6 +6279,32 @@ sub add_script {
.''."\n";
}
+sub usernamerequest_javascript {
+ my $js = <
+END
+}
+
sub verify_user_display {
my ($context) = @_;
my %lt = &Apache::lonlocal::texthash (
@@ -4778,6 +6354,15 @@ function updateCols(caller) {
document.getElementById('showcolstart').checked = false;
document.getElementById('showcolend').checked = false;
}
+ if (context == 'author') {
+ if (document.studentform.Status.options[document.studentform.Status.selectedIndex].value == 'Expired') {
+ document.getElementById('showcolmanager').checked = false;
+ document.getElementById('showcolmanager').disabled = 'disabled';
+ } else if (document.studentform.showrole.options[document.studentform.showrole.selectedIndex].value != 'aa') {
+ document.getElementById('showcolmanager').checked = true;
+ document.getElementById('showcolmanager').disabled = '';
+ }
+ }
}
}
if (caller == 'output') {
@@ -4863,6 +6448,15 @@ function updateCols(caller) {
}
}
}
+ if (context == 'author') {
+ if (document.studentform.showrole.options[document.studentform.showrole.selectedIndex].value == 'aa') {
+ document.getElementById('showcolmanager').checked = false;
+ document.getElementById('showcolmanager').disabled = 'disabled';
+ } else if (document.studentform.Status.options[document.studentform.Status.selectedIndex].value != 'Expired') {
+ document.getElementById('showcolmanager').checked = true;
+ document.getElementById('showcolmanager').disabled = '';
+ }
+ }
}
return;
}
@@ -4923,6 +6517,26 @@ sub print_main_menu {
listusers => 'Show and manage users in this community.',
},
);
+ if ($linkcontext eq 'domain') {
+ unless ($permission->{'cusr'}) {
+ $links{'domain'}{'singleuser'} = 'View a User';
+ $linktitles{'domain'}{'singleuser'} = 'View information about a user in the domain';
+ }
+ } elsif ($linkcontext eq 'course') {
+ unless ($permission->{'cusr'}) {
+ $links{'course'}{'singleuser'} = 'View a Course User';
+ $linktitles{'course'}{'singleuser'} = 'View information about a user in this course';
+ $links{'course'}{'listusers'} = 'List Course Users';
+ $linktitles{'course'}{'listusers'} = 'Show information about users in this course';
+ }
+ } elsif ($linkcontext eq 'community') {
+ unless ($permission->{'cusr'}) {
+ $links{'community'}{'singleuser'} = 'View a Community User';
+ $linktitles{'community'}{'singleuser'} = 'View information about a user in this community';
+ $links{'community'}{'listusers'} = 'List Community Users';
+ $linktitles{'community'}{'listusers'} = 'Show information about users in this community';
+ }
+ }
my @menu = ( {categorytitle => 'Single Users',
items =>
[
@@ -4931,7 +6545,7 @@ sub print_main_menu {
icon => 'edit-redo.png',
#help => 'Course_Change_Privileges',
url => '/adm/createuser?action=singleuser',
- permission => $permission->{'cusr'},
+ permission => ($permission->{'view'} || $permission->{'cusr'}),
linktitle => $linktitles{$linkcontext}{'singleuser'},
},
]},
@@ -4961,8 +6575,18 @@ sub print_main_menu {
{categorytitle => 'Administration',
items => [ ]},
);
-
+
if ($context eq 'domain'){
+ push(@{ $menu[0]->{items} }, # Single Users
+ {
+ linktext => 'User Access Log',
+ icon => 'document-properties.png',
+ #help => 'Domain_User_Access_Logs',
+ url => '/adm/createuser?action=accesslogs',
+ permission => $permission->{'activity'},
+ linktitle => 'View user access log.',
+ }
+ );
push(@{ $menu[2]->{items} }, #Category: Administration
{
@@ -4982,11 +6606,19 @@ sub print_main_menu {
linktitle => 'Approve or reject author role requests',
},
{
+ linktext => 'LON-CAPA Account Requests',
+ icon => 'list-add.png',
+ #help => 'Domain_Username_Approvals',
+ url => '/adm/createuser?action=processusernamereq',
+ permission => $permission->{'cusr'},
+ linktitle => 'Approve or reject LON-CAPA account requests',
+ },
+ {
linktext => 'Change Log',
icon => 'document-properties.png',
#help => 'Course_User_Logs',
url => '/adm/createuser?action=changelogs',
- permission => $permission->{'cusr'},
+ permission => ($permission->{'cusr'} || $permission->{'view'}),
linktitle => 'View change log.',
},
);
@@ -5042,7 +6674,16 @@ sub print_main_menu {
},
);
push(@{ $menu[2]->{items} }, #Category: Administration
- {
+ {
+ linktext => 'Helpdesk Access',
+ icon => 'helpdesk-access.png',
+ #help => 'Course_Helpdesk_Access',
+ url => '/adm/createuser?action=helpdesk',
+ permission => (($permission->{'owner'} || $permission->{'co-owner'}) &&
+ ($permission->{'view'} || $permission->{'cusr'})),
+ linktitle => 'Helpdesk access options',
+ },
+ {
linktext => 'Custom Roles',
icon => 'emblem-photos.png',
#help => 'Course_Editing_Custom_Roles',
@@ -5063,18 +6704,18 @@ sub print_main_menu {
icon => 'document-properties.png',
#help => 'Course_User_Logs',
url => '/adm/createuser?action=changelogs',
- permission => $permission->{'cusr'},
+ permission => ($permission->{'view'} || $permission->{'cusr'}),
linktitle => 'View change log.',
},
);
if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_approval'}) {
push(@{ $menu[2]->{items} },
- {
+ {
linktext => 'Enrollment Requests',
icon => 'selfenrl-queue.png',
#help => 'Course_Approve_Selfenroll',
url => '/adm/createuser?action=selfenrollqueue',
- permission => $permission->{'cusr'},
+ permission => $permission->{'selfenrolladmin'} || $permission->{'selfenrollview'},
linktitle =>'Approve or reject enrollment requests.',
},
);
@@ -5088,7 +6729,8 @@ sub print_main_menu {
icon => 'roles.png',
#help => 'Course_Automated_Enrollment',
permission => (&Apache::lonnet::auto_run($cnum,$cdom)
- && $permission->{'cusr'}),
+ && (($permission->{'cusr'}) ||
+ ($permission->{'view'}))),
url => '/adm/populate',
linktitle => 'Automated enrollment manager.',
}
@@ -5100,12 +6742,33 @@ sub print_main_menu {
icon => 'self_enroll.png',
#help => 'Course_Self_Enrollment',
url => '/adm/createuser?action=selfenroll',
- permission => $permission->{'cusr'},
+ permission => $permission->{'selfenrolladmin'} || $permission->{'selfenrollview'},
linktitle => 'Configure user self-enrollment.',
},
);
}
} 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
{
linktext => 'Change Log',
@@ -5115,6 +6778,22 @@ sub print_main_menu {
permission => $permission->{'cusr'},
linktitle => 'View change log.',
},
+ {
+ linktext => 'Co-author Managers',
+ icon => 'camanager.png',
+ #help => 'Coauthor_Management',
+ url => '/adm/createuser?action=camanagers',
+ permission => $permission->{'author'},
+ linktitle => 'Assign/Revoke right to manage co-author roles',
+ },
+ {
+ linktext => 'Configure Co-author Listing',
+ icon => 'coauthors.png',
+ #help => 'Coauthor_Settings',
+ url => '/adm/createuser?action=calist&forceedit=1',
+ permission => ($permission->{'cusr'}),
+ linktitle => 'Set availability of coauthor-viewable user listing',
+ },
);
}
return Apache::lonhtmlcommon::generate_menu(@menu);
@@ -5137,11 +6816,11 @@ sub restore_prev_selections {
}
sub print_selfenroll_menu {
- my ($r,$context,$permission) = @_;
+ my ($r,$context,$cid,$cdom,$cnum,$currsettings,$additional,$readonly) = @_;
my $crstype = &Apache::loncommon::course_type();
- my $formname = 'enrollstudent';
+ my $formname = 'selfenroll';
my $nolink = 1;
- my ($row,$lt) = &get_selfenroll_titles();
+ my ($row,$lt) = &Apache::lonuserutils::get_selfenroll_titles();
my $groupslist = &Apache::lonuserutils::get_groupslist();
my $setsec_js =
&Apache::lonuserutils::setsections_javascript($formname,$groupslist);
@@ -5150,6 +6829,11 @@ sub print_selfenroll_menu {
butn => 'but no user types have been checked.',
wilf => "Please uncheck 'activate' or check at least one type.",
);
+ my $disabled;
+ if ($readonly) {
+ $disabled = ' disabled="disabled"';
+ }
+ &js_escape(\%alerts);
my $selfenroll_js = <<"ENDSCRIPT";
function update_types(caller,num) {
var delidx = getIndexByName('selfenroll_delete');
@@ -5260,7 +6944,7 @@ function validate_types(form) {
}
} else {
if (document.$formname.selfenroll_activate.checked) {
- var num = document.enrollstudent.selfenroll_activate.value;
+ var num = document.$formname.selfenroll_activate.value;
countfail = check_types(num,countfail,needaction)
}
}
@@ -5281,12 +6965,13 @@ function validate_types(form) {
}
function check_types(num,countfail,needaction) {
- var typeidx = getIndexByName('selfenroll_types_'+num);
+ var boxname = 'selfenroll_types_'+num;
+ var typeidx = getIndexByName(boxname);
var count = 0;
if (typeidx != -1) {
- if (document.$formname.elements[typeidx].length) {
- for (var k=0; k'."\n".
'// '."\n".
''."\n".
''.$lt->{'selfenroll'}.'
'."\n";
- my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum);
- if (ref($visactions) eq 'HASH') {
- if ($visible) {
- $output .= ''.$visactions->{'vis'}.'
';
+ my $visactions = &cat_visibility($cdom);
+ my ($cathash,%cattype);
+ my %domconfig = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
+ if (ref($domconfig{'coursecategories'}) eq 'HASH') {
+ $cathash = $domconfig{'coursecategories'}{'cats'};
+ $cattype{'auth'} = $domconfig{'coursecategories'}{'auth'};
+ $cattype{'unauth'} = $domconfig{'coursecategories'}{'unauth'};
+ if ($cattype{'auth'} eq '') {
+ $cattype{'auth'} = 'std';
+ }
+ if ($cattype{'unauth'} eq '') {
+ $cattype{'unauth'} = 'std';
+ }
+ } else {
+ $cathash = {};
+ $cattype{'auth'} = 'std';
+ $cattype{'unauth'} = 'std';
+ }
+ if (($cattype{'auth'} eq 'none') && ($cattype{'unauth'} eq 'none')) {
+ $r->print('
'.$visactions->{'miss'}.'
'.$visactions->{'yous'}.
+ '
'.
+ '
'.$visactions->{'take'}.''.
+ '- '.$visactions->{'dc_chgconf'}.'
'.
+ '
');
+ } elsif (($cattype{'auth'} !~ /^(std|domonly)$/) && ($cattype{'unauth'} !~ /^(std|domonly)$/)) {
+ if ($currsettings->{'uniquecode'}) {
+ $r->print(''.$visactions->{'vis'}.'');
} else {
- $output .= ''.$visactions->{'miss'}.'
'
- .$visactions->{'yous'}.
- ''.$visactions->{'gen'}.'
'.$visactions->{'coca'};
- if (ref($vismsgs) eq 'ARRAY') {
- $output .= '
'.$visactions->{'make'}.'
';
- foreach my $item (@{$vismsgs}) {
- $output .= '- '.$visactions->{$item}.'
';
+ $r->print('
'.$visactions->{'miss'}.'
'.$visactions->{'yous'}.
+ '
'.
+ '
'.$visactions->{'take'}.''.
+ '- '.$visactions->{'dc_setcode'}.'
'.
+ '
');
+ }
+ } else {
+ my ($visible,$cansetvis,$vismsgs) = &visible_in_stdcat($cdom,$cnum,\%domconfig);
+ if (ref($visactions) eq 'HASH') {
+ if ($visible) {
+ $output .= ''.$visactions->{'vis'}.'
';
+ } else {
+ $output .= ''.$visactions->{'miss'}.'
'
+ .$visactions->{'yous'}.
+ ''.$visactions->{'gen'}.'
'.$visactions->{'coca'};
+ if (ref($vismsgs) eq 'ARRAY') {
+ $output .= '
'.$visactions->{'make'}.'
';
+ foreach my $item (@{$vismsgs}) {
+ $output .= '- '.$visactions->{$item}.'
';
+ }
+ $output .= '
';
}
- $output .= '
';
+ $output .= '';
}
- $output .= '';
}
}
- $output .= '