--- loncom/interface/loncreateuser.pm 2010/01/19 22:41:02 1.295.2.24 +++ loncom/interface/loncreateuser.pm 2010/09/19 16:44:44 1.329.2.4 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.295.2.24 2010/01/19 22:41:02 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.329.2.4 2010/09/19 16:44:44 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -231,11 +231,13 @@ sub build_tools_display { 'uscu' => "Use custom", 'official' => 'Can request creation of official courses', 'unofficial' => 'Can request creation of unofficial courses', + 'community' => 'Can request creation of communities', ); if ($context eq 'requestcourses') { %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname, - 'requestcourses.official','requestcourses.unofficial'); - @usertools = ('official','unofficial'); + 'requestcourses.official','requestcourses.unofficial', + 'requestcourses.community'); + @usertools = ('official','unofficial','community'); @options =('norequest','approval','autolimit','validate'); %validations = &Apache::lonnet::auto_courserequest_checks($ccdomain); %reqtitles = &courserequest_titles(); @@ -470,6 +472,7 @@ sub print_username_entry_form { my ($r,$context,$response,$srch,$forcenewuser,$crstype) = @_; my $defdom=$env{'request.role.domain'}; my $formtoset = 'crtuser'; + my $is_custom = &Apache::loncommon::needs_gci_custom(); if (exists($env{'form.startrolename'})) { $formtoset = 'docustom'; $env{'form.rolename'} = $env{'form.startrolename'}; @@ -495,8 +498,14 @@ sub print_username_entry_form { 'onload' => "javascript:setFormElements(document.$formtoset)", ); my %breadcrumb_text = &singleuser_breadcrumb($crstype); + my $title = 'User Management'; + if ($context eq 'course') { + if ($is_custom) { + $title = 'Enrollment and Student Activity'; + } + } my $start_page = - &Apache::loncommon::start_page('User Management', + &Apache::loncommon::start_page($title, $jscript,{'add_entries' => \%loaditems,}); if ($env{'form.action'} eq 'custom') { &Apache::lonhtmlcommon::add_breadcrumb @@ -514,12 +523,11 @@ sub print_username_entry_form { } elsif ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs($title, $helpitem); my %lt=&Apache::lonlocal::texthash( 'srst' => 'Search for a user and enroll as a student', 'srme' => 'Search for a user and enroll as a member', - 'srad' => 'Search for a user and modify/add user information or roles', 'usr' => "Username", 'dom' => "Domain", @@ -659,7 +667,7 @@ $userpicker ENDBLOCK if ($env{'form.phase'} eq '') { my $defdom=$env{'request.role.domain'}; - my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain'); + my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain','',1); my %lt=&Apache::lonlocal::texthash( 'enro' => 'Enroll one student', 'enrm' => 'Enroll one member', @@ -674,7 +682,7 @@ ENDBLOCK ); my $sellink=&Apache::loncommon::selectstudent_link('crtusername','srchterm','srchdomain'); my ($title,$buttontext,$showresponse); - if ($env{'form.action'} eq 'singlestudent') { + if ($env{'form.action'} eq 'singlestudent') { if ($crstype eq 'Community') { $title = $lt{'enrm'}; } else { @@ -708,7 +716,7 @@ $showresponse
$lt{'usr'}: | -+ | $lt{'dom'}: | $domform | $sellink | @@ -753,6 +761,7 @@ sub print_user_selection_page { my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype) = @_; my @fields = ('username','domain','lastname','firstname','permanentemail'); my $sortby = $env{'form.sortby'}; + my $is_custom = &Apache::loncommon::needs_gci_custom(); if (!grep(/^\Q$sortby\E$/,@fields)) { $sortby = 'lastname'; @@ -791,7 +800,13 @@ ENDSCRIPT if ($context eq 'requestcrs') { $r->print(' | '; - my $active=1; - $active=0 if (($role_end_time) && ($now>$role_end_time)); - if (($active) && ($allowed)) { - $row.= ''; + if ($role_code eq 'ca' || $role_code eq 'au') { + $class='Construction Space'; + } elsif ($role_code eq 'su') { + $class='System'; } else { - if ($active) { - $row.=' '; - } else { - $row.=&mt('expired or revoked'); - } + $class='Domain'; } - $row.=' | '; - if ($allowed && !$active) { - $row.= ''; + } + if (($role_code eq 'ca') || ($role_code eq 'aa')) { + $area=~m{/($match_domain)/($match_username)}; + if (&Apache::lonuserutils::authorpriv($2,$1)) { + $allowed=1; } else { - $row.=' '; + $allowed=0; } - $row.=' | '; - if ($delallowed) { - $row.= ''; + } + my $row = ''; + $row.= ' | '; + my $active=1; + $active=0 if (($role_end_time) && ($now>$role_end_time)); + if (($active) && ($allowed)) { + $row.= ''; + } else { + if ($active) { + $row.=' '; } else { - $row.=' '; + $row.=&mt('expired or revoked'); } - my $plaintext=''; - if (!$croletitle) { - $plaintext=&Apache::lonnet::plaintext($role_code,$class) - } else { - $plaintext= + } + $row.=' | '; + if ($allowed && !$active) { + $row.= ''; + } else { + $row.=' '; + } + $row.=' | ';
+ if ($delallowed) {
+ $row.= '';
+ } else {
+ $row.=' ';
+ }
+ my $plaintext='';
+ if (!$croletitle) {
+ $plaintext=&Apache::lonnet::plaintext($role_code,$class)
+ } else {
+ $plaintext=
"Customrole '$croletitle' defined by $croleuname\@$croleudom"; + } + $row.= ' | '.$plaintext. + ' | '.$area. + ' | '.($role_start_time?&Apache::lonlocal::locallocaltime($role_start_time) + : ' ' ). + ' | '.($role_end_time ?&Apache::lonlocal::locallocaltime($role_end_time) + : ' ' ) + ." | "; + $sortrole{$sortkey}=$envkey; + $roletext{$envkey}=$row; + $roleclass{$envkey}=$class; + $rolepriv{$envkey}=$allowed; + } # end of foreach (table building loop) + + my $rolesdisplay = 0; + my %output = (); + foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') { + $output{$type} = ''; + foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) { + if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) { + $output{$type}.= + &Apache::loncommon::start_data_table_row(). + $roletext{$sortrole{$which}}. + &Apache::loncommon::end_data_table_row(); } - $row.= ''.$plaintext. - ' | '.$area. - ' | '.($role_start_time?&Apache::lonlocal::locallocaltime($role_start_time) - : ' ' ). - ' | '.($role_end_time ?&Apache::lonlocal::locallocaltime($role_end_time) - : ' ' ) - ." | "; - $sortrole{$sortkey}=$envkey; - $roletext{$envkey}=$row; - $roleclass{$envkey}=$class; - $rolepriv{$envkey}=$allowed; - #$r->print($row); - } # end of foreach (table building loop) - my $rolesdisplay = 0; - my %output = (); - foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') { - $output{$type} = ''; - foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) { - if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) { - $output{$type}.= - &Apache::loncommon::start_data_table_row(). - $roletext{$sortrole{$which}}. - &Apache::loncommon::end_data_table_row(); - } - } - unless($output{$type} eq '') { - $output{$type} = '|
".&mt($type)." | ||||||||||||||||||||
".&mt($type)." | '.$lt{'rev'}.' | '.$lt{'ren'}.' | '.$lt{'del'}. ' | '.$lt{'rol'}.' | '.$lt{'ext'}. ' | '.$lt{'sta'}.' | '.$lt{'end'}.' | '. &Apache::loncommon::end_data_table_header_row()); - foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') { - if ($output{$type}) { - $r->print($output{$type}."\n"); - } + foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') { + if ($output{$type}) { + $r->print($output{$type}."\n"); } - $r->print(&Apache::loncommon::end_data_table()); } - } # End of check for keys in rolesdump + $r->print(&Apache::loncommon::end_data_table()); + } return; } @@ -2083,7 +2189,8 @@ sub get_inststatuses { # ================================================================= Phase Three sub update_user_data { - my ($r,$context,$crstype) = @_; + my ($r,$context,$crstype) = @_; + my $is_custom = &Apache::loncommon::needs_gci_custom(); my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'}, $env{'form.ccdomain'}); # Error messages @@ -2136,7 +2243,13 @@ sub update_user_data { if ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', + my $title = 'User Management'; + if ($context eq 'course') { + if ($is_custom) { + $title = 'Enrollment and Student Activity'; + } + } + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, $helpitem)); $r->print(&update_result_form($uhome)); # Check Inputs @@ -2206,7 +2319,7 @@ sub update_user_data { $env{'form.ccuname'}, $env{'form.ccdomain'}).''); my (%alerts,%rulematch,%inst_results,%curr_rules); my @usertools = ('aboutme','blog','portfolio'); - my @requestcourses = ('official','unofficial'); + my @requestcourses = ('official','unofficial','community'); my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'}); if ($env{'form.makeuser'}) { @@ -2607,11 +2720,13 @@ sub update_user_data { ($env{'user.domain'} eq $env{'form.ccdomain'})) { my %newenvhash; foreach my $key (keys(%changed)) { - if (($key eq 'official') || ($key eq 'unofficial')) { + if (($key eq 'official') || ($key eq 'unofficial') + || ($key eq 'community')) { $newenvhash{'environment.requestcourses.'.$key} = $changeHash{'requestcourses.'.$key}; if ($changeHash{'requestcourses.'.$key} ne '') { - $newenvhash{'environment.canrequest.'.$key} = 1; + $newenvhash{'environment.canrequest.'.$key} = + $changeHash{'requestcourses.'.$key}; } else { $newenvhash{'environment.canrequest.'.$key} = &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, @@ -2625,7 +2740,8 @@ sub update_user_data { $changeHash{'tools.'.$key}; } else { $newenvhash{'environment.availabletools.'.$key} = - &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, $key,'reload','tools'); + &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, + $key,'reload','tools'); } } } @@ -2668,6 +2784,7 @@ sub update_user_data { 'portfolio' => 'Portfolio Availability', 'official' => 'Can Request Official Courses', 'unofficial' => 'Can Request Unofficial Courses', + 'community' => 'Can Request Communities', 'inststatus' => "Affiliation", 'prvs' => 'Previous Value:', 'chto' => 'Changed To:' @@ -2821,6 +2938,7 @@ END 'portfolio' => "Portfolio Availability", 'official' => "Can Request Official Courses", 'unofficial' => "Can Request Unofficial Courses", + 'community' => "Can Request Communities", 'inststatus' => "Affiliation", ); $r->print(<<"END"); @@ -3412,8 +3530,8 @@ sub enroll_single_student { $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.')); } 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(''); + } + $r->print(''); } } else { $r->print(&mt('unable to enroll').": ".$enroll_result); @@ -3539,7 +3657,7 @@ sub build_roles { sub custom_role_editor { my ($r) = @_; my $action = $env{'form.customroleaction'}; - my $rolename; + my $rolename; if ($action eq 'new') { $rolename=$env{'form.newrolename'}; } else { @@ -3559,6 +3677,13 @@ sub custom_role_editor { $context = 'domain'; $crstype = $env{'form.templatecrstype'}; } + my $is_custom = &Apache::loncommon::needs_gci_custom(); + my $title = 'User Management'; + if ($context eq 'course') { + if ($is_custom) { + $title = 'Enrollment and Student Activity'; + } + } # ------------------------------------------------------- What can be assigned? my %full=(); my %courselevel=(); @@ -3567,7 +3692,6 @@ sub custom_role_editor { my $dompriv=''; my $coursepriv=''; my $body_top; - my ($disp_dummy,$disp_roles) = &Apache::lonnet::get('roles',["st"]); my ($rdummy,$roledef)= &Apache::lonnet::get('roles',["rolesdef_$rolename"]); # ------------------------------------------------------- Does this role exist? @@ -3577,7 +3701,7 @@ sub custom_role_editor { # ------------------------------------------------- Get current role privileges ($syspriv,$dompriv,$coursepriv)=split(/\_/,$roledef); if ($crstype eq 'Community') { - $syspriv =~ s/bre\&S//; + $syspriv =~ s/bre\&S//; } } else { $body_top .= &mt('New Role').' "'; @@ -3618,8 +3742,8 @@ sub custom_role_editor { my ($jsback,$elements) = &crumb_utilities(); my $button_code = "\n"; my $head_script = "\n"; - $head_script .= ''."\n"; + + $head_script .= "\n".$jsback."\n" + .'// ]]>'."\n" + .''."\n"; $r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script)); - &Apache::lonhtmlcommon::add_breadcrumb + &Apache::lonhtmlcommon::add_breadcrumb ({href=>"javascript:backPage(document.form1,'pickrole','')", text=>"Pick custom role", faq=>282,bug=>'Instructor Interface',}, {href=>"javascript:backPage(document.form1,'','')", text=>"Edit custom role", faq=>282,bug=>'Instructor Interface',}); - $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', + $r->print(&Apache::lonhtmlcommon::breadcrumbs($title, 'Course_Editing_Custom_Roles')); $r->print($body_top); @@ -3684,6 +3809,7 @@ sub custom_role_editor { 'dml' => "Domain Level", 'ssl' => "System Level"); + $r->print('
---|