--- loncom/interface/loncreateuser.pm 2009/08/13 20:20:12 1.295.2.3
+++ loncom/interface/loncreateuser.pm 2009/07/17 22:24:08 1.298
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.295.2.3 2009/08/13 20:20:12 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.298 2009/07/17 22:24:08 droeschl Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -282,94 +282,6 @@ sub build_tools_display {
return $output;
}
-sub coursereq_externaluser {
- my ($ccuname,$ccdomain,$cdom) = @_;
- my (@usertools,@options,%validations,%userenv,$output);
- my %lt = &Apache::lonlocal::texthash (
- 'official' => 'Can request creation of official courses',
- 'unofficial' => 'Can request creation of unofficial courses',
- 'community' => 'Can request creation of communities',
- );
-
- %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
- 'reqcrsotherdom.official','reqcrsotherdom.unofficial',
- 'reqcrsotherdom.community');
- @usertools = ('official','unofficial','community');
- @options = ('approve','validate','autolimit');
- %validations = &Apache::lonnet::auto_courserequest_checks($cdom);
- my $optregex = join('|',@options);
- my %reqtitles = &courserequest_titles();
- foreach my $item (@usertools) {
- my ($curroption,$currlimit,$tooloff);
- if ($userenv{'reqcrsotherdom.'.$item} ne '') {
- my @curr = split(',',$userenv{'reqcrsotherdom.'.$item});
- if (grep(/^\Q$cdom\E:($optregex)=?(\d*)$/,@curr)) {
- $curroption = $1;
- $currlimit = $2;
- if (!$curroption) {
- $curroption = 'norequest';
- }
- }
- } else {
- $curroption = 'norequest';
- $tooloff = ' checked="checked"';
- }
- $output.= &Apache::loncommon::start_data_table_row()."\n".
- '
'.$lt{$item}.': '.
- ' ';
- foreach my $option (@options) {
- if ($option eq 'validate') {
- my $canvalidate = 0;
- if (ref($validations{$item}) eq 'HASH') {
- if ($validations{$item}{'_external_'}) {
- $canvalidate = 1;
- }
- }
- next if (!$canvalidate);
- }
- my $checked = '';
- if ($option eq $curroption) {
- $checked = ' checked="checked"';
- }
- $output .= ' ';
- if ($option eq 'autolimit') {
- $output .= '';
- }
- $output .= ' '
- }
- $output .= ' | '."\n".
- &Apache::loncommon::end_data_table_row()."\n";
- }
- return $output;
-}
-
-sub courserequest_titles {
- my %titles = &Apache::lonlocal::texthash (
- official => 'Official', unofficial => 'Unofficial',
- community => 'Communities', norequest => 'Not allowed',
- approve => 'Approval by Dom. Coord.',
- validate => 'With validation',
- autolimit => 'Numerical limit',
- );
- return %titles;
-}
-
-sub courserequest_display {
- my %titles = &Apache::lonlocal::texthash (
- approve => 'Yes, need approval',
- validate => 'Yes, with validation',
- norequest => 'No',
- );
- return %titles;
-}
-
# =================================================================== Phase one
sub print_username_entry_form {
@@ -962,14 +874,9 @@ ENDCHANGEUSER
}
if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
$r->print(''.&mt('User Can Request Creation of Courses?').'
'.
- &Apache::loncommon::start_data_table()).
- if ($env{'request.role.domain'} eq $ccdomain) {
- $r->print(&build_tools_display($ccuname,$ccdomain,'requestcourses'));
- } else {
- $r->print(&coursereq_externaluser($ccuname,$ccdomain,
- $env{'request.role.domain'}));
- }
- $r->print(&Apache::loncommon::end_data_table());
+ &Apache::loncommon::start_data_table().
+ &build_tools_display($ccuname,$ccdomain,'requestcourses').
+ &Apache::loncommon::end_data_table());
}
$r->print('');
my $user_auth_text = &user_authentication($ccuname,$ccdomain,$formname);
@@ -2091,9 +1998,7 @@ sub update_user_data {
('environment',['firstname','middlename','lastname','generation',
'id','permanentemail','portfolioquota','inststatus','tools.aboutme',
'tools.blog','tools.portfolio','requestcourses.official',
- 'requestcourses.unofficial','requestcourses.community',
- 'reqcrsotherdom.official','reqcrsotherdom.unofficial',
- 'reqcrsotherdom.community'],
+ 'requestcourses.unofficial'],
$env{'form.ccdomain'},$env{'form.ccuname'});
my ($tmp) = keys(%userenv);
if ($tmp =~ /^(con_lost|error)/i) {
@@ -2222,7 +2127,7 @@ sub update_user_data {
$oldinststatuses,$newinststatuses);
my ($defquota,$settingstatus) =
&Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus);
- my ($showquota,$showtools,$showrequestcourses,$showinststatus,$showreqotherdom);
+ my ($showquota,$showtools,$showrequestcourses,$showinststatus);
if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
$showquota = 1;
}
@@ -2231,8 +2136,6 @@ sub update_user_data {
}
if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
$showrequestcourses = 1;
- } elsif (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
- $showreqotherdom = 1;
}
if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) {
$showinststatus = 1;
@@ -2316,14 +2219,8 @@ sub update_user_data {
}
&tool_changes('tools',\@usertools,\%oldaccess,\%oldaccesstext,\%userenv,
\%changeHash,\%changed,\%newaccess,\%newaccesstext);
-
- if ($env{'form.ccdomain'} eq $env{'request.role.domain'}) {
- &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
- \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
- } else {
- &tool_changes('reqcrsotherdom',\@requestcourses,\%oldaccess,\%oldaccesstext,
- \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
- }
+ &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
+ \%userenv, \%changeHash,\%changed,\%newaccess,\%newaccesstext);
if ($env{'form.cfirstname'} ne $userenv{'firstname'} ||
$env{'form.cmiddlename'} ne $userenv{'middlename'} ||
$env{'form.clastname'} ne $userenv{'lastname'} ||
@@ -2436,11 +2333,6 @@ END
$r->print("
$lt{$item} | \n");
}
- } elsif ($showreqotherdom) {
- foreach my $item (@requestcourses) {
- $r->print("
- $lt{$item} | \n");
- }
}
if ($showquota) {
$r->print("
@@ -2472,11 +2364,6 @@ END
$r->print("
$oldaccess{$item} $oldaccesstext{$item} | \n");
}
- } elsif ($showreqotherdom) {
- foreach my $item (@requestcourses) {
- $r->print("
- $oldaccess{$item} $oldaccesstext{$item} | \n");
- }
}
if ($showquota) {
$r->print("
@@ -2508,11 +2395,6 @@ END
$r->print("
$newaccess{$item} $newaccesstext{$item} | \n");
}
- } elsif ($showreqotherdom) {
- foreach my $item (@requestcourses) {
- $r->print("
- $newaccess{$item} $newaccesstext{$item} | \n");
- }
}
if ($showquota) {
$r->print("
@@ -2581,11 +2463,6 @@ END
$r->print('
['.$lt{$item}.': '.$newaccess{$item}.' '.
$newaccesstext{$item}.']'."\n");
}
- } elsif ($showreqotherdom) {
- foreach my $item (@requestcourses) {
- $r->print('
['.$lt{$item}.': '.$newaccess{$item}.' '.
- $newaccesstext{$item}.']'."\n");
- }
}
if ($showtools) {
foreach my $item (@usertools) {
@@ -2677,84 +2554,6 @@ sub tool_changes {
(ref($newaccess) eq 'HASH') && (ref($newaccesstext) eq 'HASH'))) {
return;
}
- if ($context eq 'reqcrsotherdom') {
- my @options = ('approve','validate','autolimit');
- my $optregex = join('|',@options);
- my %reqdisplay = &courserequest_display();
- my $cdom = $env{'request.role.domain'};
- foreach my $tool (@{$usertools}) {
- $oldaccesstext->{$tool} = &mt('no');
- $changeHash->{$context.'.'.$tool} = $userenv->{$context.'.'.$tool
-};
- if ($userenv->{$context.'.'.$tool} eq '') {
- if ($env{'form.'.$context.'_'.$tool}) {
- $changed->{$tool}=&tool_admin($tool,$cdom,
- $changeHash,$context);
- if ($changed->{$tool}) {
- $newaccesstext->{$tool} = &mt('yes');
- } else {
- $newaccesstext->{$tool} = $oldaccesstext->{$tool}; }
- }
- } else {
- my @curr = split(',',$userenv->{$context.'.'.$tool});
- my @new;
- my $changedoms;
- my $newop = $env{'form.'.$context.'_'.$tool};
- if ($newop eq 'autolimit') {
- $newop .= '=';
- unless ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/
-) {
- $newop .= $env{'form.'.$context.'_'.$tool.'_limit'};
- }
- }
- if (grep(/^\Q$cdom:($optregex\=?\d*)\E$/,@curr)) {
- $oldaccesstext->{$tool} = &mt('yes');
- my $oldop = $1;
- if ($oldop ne $newop) {
- $changedoms = 1;
- foreach my $dom (@curr) {
- unless ($dom eq $cdom) {
- push(@new,$dom);
- }
- }
- if ($newop) {
- push(@new,$cdom.':'.$newop);
- }
- @new = sort(@new);
- }
- } elsif ($env{'form.'.$context.'_'.$tool}) {
- $changedoms = 1;
- $changedoms = 1;
- @new = sort(@curr,$cdom.':'.$newop);
- }
- $newaccesstext->{$tool} = $oldaccesstext->{$tool};
- if ($changedoms) {
- my $newdomstr;
- if (@new) {
- $newdomstr = join(',',@new);
- }
- $changed->{$tool}=&tool_admin($tool,$newdomstr,$changeHash,
- $context);
- if ($changed->{$tool}) {
- if ($env{'form.'.$context.'_'.$tool}) {
- if ($env{'form.'.$context.'_'.$tool} eq 'autolimit') {
- if ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/) {
- $newaccesstext->{$tool} = &mt('Yes, processed automatically');
- } else {
- $newaccesstext->{$tool} = &mt('Yes, up to limit of [quant,_1,request] per user).',$env{'form.'.$context.'_'.$tool.'_limit'});
- }
- } else {
- $newaccesstext->{$tool} = $reqdisplay{$env{'form.'.$context.'_'.$tool}};
- }
- } else {
- $newaccesstext->{$tool} = &mt('No');
- }
- }
- }
- }
- }
- return;
- }
foreach my $tool (@{$usertools}) {
if ($userenv->{$context.'.'.$tool} ne '') {
$oldaccess->{$tool} = &mt('custom');
@@ -3193,10 +2992,6 @@ sub tool_admin {
if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
$canchange = 1;
}
- } elsif ($context eq 'reqcrsotherdom') {
- if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
- $canchange = 1;
- }
} elsif (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) {
# Current user has quota modification privileges
$canchange = 1;
@@ -3860,121 +3655,167 @@ END
sub print_main_menu {
my ($permission,$context) = @_;
my %links = (
- domain => {
- upload => 'Upload a File of Users',
- singleuser => 'Add/Modify a Single User',
- listusers => 'Manage Multiple Users',
- },
- author => {
- upload => 'Upload a File of Co-authors',
- singleuser => 'Add/Modify a Single Co-author',
- listusers => 'Display Co-authors and Manage Multiple Users',
- },
- course => {
- upload => 'Upload a File of Course Users',
- singleuser => 'Add/Modify a Single Course User',
- listusers => 'Display Class Lists and Manage Multiple Users',
- },
+ domain => {
+ upload => 'Upload a File of Users',
+ singleuser => 'Add/Modify a User',
+ listusers => 'Manage Users',
+ },
+ author => {
+ upload => 'Upload a File of Co-authors',
+ singleuser => 'Add/Modify a Co-author',
+ listusers => 'Manage Co-authors',
+ },
+ course => {
+ upload => 'Upload a File of Course Users',
+ singleuser => 'Add/Modify a Course User',
+ listusers => 'Manage Course Users',
+ },
);
+ my @menu = ( {categorytitle => 'Single Users',
+ items =>
+ [
+ {
+ linktext => $links{$context}{'singleuser'},
+ icon => 'edit-redo.png',
+ #help => 'Course_Change_Privileges',
+ url => '/adm/createuser?action=singleuser',
+ permission => $permission->{'cusr'},
+ linktitle => 'Add a user with a certain role to this course.',
+ },
+ ]},
- my @menu =
- (
- { text => $links{$context}{'upload'},
- help => 'Course_Create_Class_List',
- action => 'upload',
- permission => $permission->{'cusr'},
+ {categorytitle => 'Multiple Users',
+ items =>
+ [
+ {
+ linktext => $links{$context}{'upload'},
+ icon => 'sctr.png',
+ #help => 'Course_Create_Class_List',
+ url => '/adm/createuser?action=upload',
+ permission => $permission->{'cusr'},
+ linktitle => 'Upload a CSV or a text file containing users.',
+ },
+ {
+ linktext => $links{$context}{'listusers'},
+ icon => 'edit-find.png',
+ #help => 'Course_View_Class_List',
+ url => '/adm/createuser?action=listusers',
+ permission => ($permission->{'view'} || $permission->{'cusr'}),
+ linktitle => 'Show and manage users of this course.',
},
- { text => $links{$context}{'singleuser'},
- help => 'Course_Change_Privileges',
- action => 'singleuser',
- permission => $permission->{'cusr'},
+
+ ]},
+
+ {categorytitle => 'Administration',
+ items => [ ]},
+ );
+
+ if ($context eq 'domain'){
+
+ push(@{ $menu[2]->{items} }, #Category: Administration
+ {
+ linktext => 'Custom Roles',
+ icon => 'emblem-photos.png',
+ #help => 'Course_Editing_Custom_Roles',
+ url => '/adm/createuser?action=custom',
+ permission => $permission->{'custom'},
+ linktitle => 'Configure a custom role.',
},
- { text => $links{$context}{'listusers'},
- help => 'Course_View_Class_List',
- action => 'listusers',
- permission => ($permission->{'view'} || $permission->{'cusr'}),
- },
);
- if ($context eq 'domain' || $context eq 'course') {
- my $customlink = { text => 'Edit Custom Roles',
- help => 'Course_Editing_Custom_Roles',
- action => 'custom',
- permission => $permission->{'custom'},
- };
- push(@menu,$customlink);
- }
- if ($context eq 'course') {
+
+ }elsif ($context eq 'course'){
my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();
- my @courselinks =
- (
- { text => 'Enroll a Single Student',
- help => 'Course_Add_Student',
- action => 'singlestudent',
- permission => $permission->{'cusr'},
- },
- { text => 'Drop Students',
- help => 'Course_Drop_Student',
- action => 'drop',
- permission => $permission->{'cusr'},
- });
- if (!exists($permission->{'cusr_section'})) {
- push(@courselinks,
- { text => 'Automated Enrollment Manager',
- help => 'Course_Automated_Enrollment',
+
+ push(@{ $menu[0]->{items} }, #Category: Single Users
+ {
+ linktext => 'Add/Modify a Student',
+ #help => 'Course_Add_Student',
+ icon => 'list-add.png',
+ url => '/adm/createuser?action=singlestudent',
+ permission => $permission->{'cusr'},
+ linktitle => 'Add a user with the role student to this course.',
+ },
+ );
+
+ push(@{ $menu[1]->{items} }, #Category: Multiple Users
+ {
+ linktext => 'Drop Students',
+ icon => 'edit-undo.png',
+ #help => 'Course_Drop_Student',
+ url => '/adm/createuser?action=drop',
+ permission => $permission->{'cusr'},
+ linktitle =>'Remove a student from this course.',
+ },
+ );
+ push(@{ $menu[2]->{items} }, #Category: Administration
+ {
+ linktext => 'Custom Roles',
+ icon => 'emblem-photos.png',
+ #help => 'Course_Editing_Custom_Roles',
+ url => '/adm/createuser?action=custom',
+ permission => $permission->{'custom'},
+ linktitle => 'Configure a custom role.',
+ },
+ {
+ linktext => 'Course Groups',
+ icon => 'conf.png',
+ #help => 'Course_Manage_Group',
+ url => '/adm/coursegroups?refpage=cusr',
+ permission => $permission->{'grp_manage'},
+ linktitle => 'Manage course groups.',
+ },
+ {
+ linktext => 'Change Logs',
+ icon => 'document-properties.png',
+ #help => 'Course_User_Logs',
+ url => '/adm/createuser?action=changelogs',
+ permission => $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'},
+ linktitle =>'Approve or reject enrollment requests.',
+ },
+ );
+ }
+
+ if (!exists($permission->{'cusr_section'})){
+
+ push(@{ $menu[2]->{items} },
+ {
+ linktext => 'Automated Enrollment',
+ icon => 'roles.png',
+ #help => 'Course_Automated_Enrollment',
permission => (&Apache::lonnet::auto_run($cnum,$cdom)
- && $permission->{'cusr'}),
+ && $permission->{'cusr'}),
url => '/adm/populate',
- },
- { text => 'Configure User Self-enrollment',
- help => 'Course_Self_Enrollment',
- action => 'selfenroll',
+ linktitle => 'Automated enrollment manager.',
+ },
+ {
+ linktext => 'User Self-Enrollment',
+ icon => 'cstr.png',
+ #help => 'Course_Self_Enrollment',
+ url => '/adm/createuser?action=selfenroll',
permission => $permission->{'cusr'},
- });
+ linktitle => 'Configure user self enrollment.',
+ },
+ );
+
}
- if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_approval'}) {
- push(@courselinks,
- { text => 'Enrollment Requests',
- help => 'Course_Approve_Selfenroll',
- action => 'selfenrollqueue',
- permission => $permission->{'cusr'},
- });
- }
- push(@courselinks,
- { text => 'Manage Course Groups',
- help => 'Course_Manage_Group',
- permission => $permission->{'grp_manage'},
- url => '/adm/coursegroups?refpage=cusr',
- },
- { text => 'View Change Logs',
- help => 'Course_User_Logs',
- action => 'changelogs',
- permission => $permission->{'cusr'},
- },);
+ };
+return Apache::lonhtmlcommon::generate_menu(@menu);
# { text => 'View Log-in History',
# help => 'Course_User_Logins',
# action => 'logins',
# permission => $permission->{'cusr'},
# });
- push(@menu,@courselinks);
- }
- my $menu_html = '';
- foreach my $menu_item (@menu) {
- next if (! $menu_item->{'permission'});
- $menu_html.='';
- if (exists($menu_item->{'help'})) {
- $menu_html.=
- &Apache::loncommon::help_open_topic($menu_item->{'help'});
- }
- $menu_html.='';
- if (exists($menu_item->{'url'})) {
- $menu_html.=qq{};
- } else {
- $menu_html.=
- qq{}; }
- $menu_html.= &mt($menu_item->{'text'}).'';
- $menu_html.='
';
- }
- return $menu_html;
}
sub restore_prev_selections {
@@ -4200,9 +4041,7 @@ ENDSCRIPT
if (ref($lt) eq 'HASH') {
$title = $lt->{$item};
}
- $output .=
- &Apache::lonhtmlcommon::row_title($title,
- 'LC_selfenroll_pick_box_title','LC_oddrow_value')."\n";
+ $output .= &Apache::lonhtmlcommon::row_title($title);
if ($item eq 'types') {
my $curr_types = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_types'};
my $showdomdesc = 1;