--- loncom/interface/loncreateuser.pm 2010/10/08 01:59:39 1.351 +++ loncom/interface/loncreateuser.pm 2012/06/01 11:39:24 1.361 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.351 2010/10/08 01:59:39 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.361 2012/06/01 11:39:24 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -223,6 +223,7 @@ sub build_tools_display { my %lt = &Apache::lonlocal::texthash ( 'blog' => "Personal User Blog", 'aboutme' => "Personal Information Page", + 'webdav' => "WebDAV access to authoring spaces (if SSL and author/co-author)", 'portfolio' => "Personal User Portfolio", 'avai' => "Available", 'cusa' => "availability", @@ -248,8 +249,9 @@ sub build_tools_display { $isadv = &Apache::lonnet::is_advanced_user($ccuname,$ccdomain); } else { %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname, - 'tools.aboutme','tools.portfolio','tools.blog'); - @usertools = ('aboutme','blog','portfolio'); + 'tools.aboutme','tools.portfolio','tools.blog', + 'tools.webdav'); + @usertools = ('aboutme','blog','webdav','portfolio'); } foreach my $item (@usertools) { my ($custom_access,$curr_access,$cust_on,$cust_off,$tool_on,$tool_off, @@ -356,7 +358,7 @@ sub build_tools_display { $currdisp = ($curr_access?&mt('Yes'):&mt('No')); $custdisp = '<span class="LC_nobreak"><label>'. '<input type="radio" name="'.$context.'_'.$item.'"'. - ' value="1"'. $tool_on.'/>'.&mt('On').'</label> <label>'. + ' value="1" '.$tool_on.'/>'.&mt('On').'</label> <label>'. '<input type="radio" name="'.$context.'_'.$item.'" value="0" '. $tool_off.'/>'.&mt('Off').'</label></span>'; $custradio = (' 'x2).'--'.$lt{'cusa'}.': '.$custdisp. @@ -638,7 +640,6 @@ END sub entry_form { my ($dom,$srch,$forcenewuser,$context,$responsemsg,$crstype) = @_; - my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom); my ($usertype,$inexact); if (ref($srch) eq 'HASH') { if (($srch->{'srchin'} eq 'dom') && @@ -646,9 +647,10 @@ sub entry_form { ($srch->{'srchtype'} eq 'exact') && ($srch->{'srchdomain'} ne '') && ($srch->{'srchterm'} ne '')) { + my (%curr_rules,%got_rules); my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($srch->{'srchdomain'},'username'); - $usertype = &Apache::lonuserutils::check_usertype($srch->{'srchdomain'},$srch->{'srchterm'},$rules); + $usertype = &Apache::lonuserutils::check_usertype($srch->{'srchdomain'},$srch->{'srchterm'},$rules,\%curr_rules,\%got_rules); } else { $inexact = 1; } @@ -742,19 +744,13 @@ sub user_modification_js { <script type="text/javascript" language="Javascript"> // <![CDATA[ - function pclose() { - parmwin=window.open("/adm/rat/empty.html","LONCAPAparms", - "height=350,width=350,scrollbars=no,menubar=no"); - parmwin.close(); - } - $pjump_def $dc_setcourse_code function dateset() { eval("document.cu."+document.cu.pres_marker.value+ ".value=document.cu.pres_value.value"); - pclose(); + modalWindow.close(); } $nondc_setsection_code @@ -942,7 +938,8 @@ sub print_user_modification_page { my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($ccdomain,'username'); $usertype = - &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules); + &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules, + \%curr_rules,\%got_rules); my $cancreate = &Apache::lonuserutils::can_create_user($ccdomain,$context, $usertype); @@ -1261,7 +1258,7 @@ ENDNOPORTPRIV if (&Apache::lonnet::allowed('mut',$env{'request.role.domain'})) { my %lt=&Apache::lonlocal::texthash( 'utav' => "User Tools Availability", - 'yodo' => "You do not have privileges to modify Portfolio, Blog or Personal Information Page settings for this user.", + 'yodo' => "You do not have privileges to modify Portfolio, Blog, WebDAV, or Personal Information Page settings for this user.", 'ifch' => "If a change is required, contact a domain coordinator for the domain", ); $user_tools_text = <<ENDNOTOOLSPRIV; @@ -1321,7 +1318,7 @@ ENDNOTOOLSPRIV $addrolesdisplay = &new_coauthor_roles($r,$ccuname,$ccdomain); } if ($context eq 'domain') { - my $add_domainroles = &new_domain_roles($r); + my $add_domainroles = &new_domain_roles($r,$ccdomain); if (!$addrolesdisplay) { $addrolesdisplay = $add_domainroles; } @@ -1346,7 +1343,7 @@ ENDNOTOOLSPRIV } $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain'])); $r->print('<input type="hidden" name="currstate" value="" />'); - $r->print('<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" />'); + $r->print('<input type="hidden" name="prevphase" value="'.$env{'form.phase'}.'" /></form>'); return; } @@ -1470,8 +1467,7 @@ sub display_existing_roles { $rolesdump{$newkey} = $newvalue; } } else { - my $extra = &Apache::lonnet::freeze_escape({'skipcheck' => 1}); - %rolesdump=&Apache::lonnet::dump('roles',$ccdomain,$ccuname,'.',undef,$extra); + %rolesdump=&Apache::lonnet::dump('roles',$ccdomain,$ccuname); } # Build up table of user roles to allow revocation and re-enabling of roles. my ($tmp) = keys(%rolesdump); @@ -1764,7 +1760,7 @@ sub new_coauthor_roles { } sub new_domain_roles { - my ($r) = @_; + my ($r,$ccdomain) = @_; my $addrolesdisplay = 0; # # Domain level @@ -1782,6 +1778,7 @@ sub new_domain_roles { foreach my $thisdomain (sort(&Apache::lonnet::all_domains())) { foreach my $role (@allroles) { next if ($role eq 'ad'); + next if (($role eq 'au') && ($ccdomain ne $thisdomain)); if (&Apache::lonnet::allowed('c'.$role,$thisdomain)) { my $plrole=&Apache::lonnet::plaintext($role); my %lt=&Apache::lonlocal::texthash( @@ -2317,7 +2314,7 @@ sub update_user_data { my (%alerts,%rulematch,%inst_results,%curr_rules); my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id'); - my @usertools = ('aboutme','blog','portfolio'); + my @usertools = ('aboutme','blog','webdav','portfolio'); my @requestcourses = ('official','unofficial','community'); my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'}); @@ -2470,10 +2467,10 @@ sub update_user_data { my %userenv = &Apache::lonnet::get ('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'], + 'tools.blog','tools.webdav','tools.portfolio', + 'requestcourses.official','requestcourses.unofficial', + 'requestcourses.community','reqcrsotherdom.official', + 'reqcrsotherdom.unofficial','reqcrsotherdom.community'], $env{'form.ccdomain'},$env{'form.ccuname'}); my ($tmp) = keys(%userenv); if ($tmp =~ /^(con_lost|error)/i) { @@ -2923,6 +2920,7 @@ sub display_userinfo { 'permanentemail' => 'Permanent e-mail address', 'quota' => 'Disk space allocated to portfolio files', 'blog' => 'Blog Availability', + 'webdav' => 'WebDAV Availability', 'aboutme' => 'Personal Information Page Availability', 'portfolio' => 'Portfolio Availability', 'official' => 'Can Request Official Courses', @@ -3929,21 +3927,22 @@ sub set_custom_role { .$jsback."\n" .'// ]]>'."\n" .'</script>'."\n"; - my $brcrum = [{href => "javascript:backPage(document.customresult,'pickrole','')", - text => "Pick custom role", - faq => 282, - bug => 'Instructor Interface',}, - {href => "javascript:backPage(document.customresult,'selected_custom_edit','')", - text => "Edit custom role", - faq => 282, - bug => 'Instructor Interface',}, - {href => "javascript:backPage(document.customresult,'set_custom_roles','')", - text => "Result", - faq => 282, - bug => 'Instructor Interface', - help => 'Course_Editing_Custom_Roles'}, - ]; - my $args = { bread_crumbs => $brcrum, + push(@{$brcrum}, + {href => "javascript:backPage(document.customresult,'pickrole','')", + text => "Pick custom role", + faq => 282, + bug => 'Instructor Interface',}, + {href => "javascript:backPage(document.customresult,'selected_custom_edit','')", + text => "Edit custom role", + faq => 282, + bug => 'Instructor Interface',}, + {href => "javascript:backPage(document.customresult,'set_custom_roles','')", + text => "Result", + faq => 282, + bug => 'Instructor Interface', + help => 'Course_Editing_Custom_Roles'}, + ); + my $args = { bread_crumbs => $brcrum, bread_crumbs_component => 'User Management'}; $r->print(&Apache::loncommon::start_page('Save Custom Role',$jscript,$args)); @@ -4039,6 +4038,10 @@ sub handler { my ($permission,$allowed) = &Apache::lonuserutils::get_permission($context,$crstype); if (!$allowed) { + if ($context eq 'course') { + $r->internal_redirect('/adm/viewclasslist'); + return OK; + } $env{'user.error.msg'}= "/adm/createuser:cst:0:0:Cannot create/modify user data ". "or view user status."; @@ -4383,12 +4386,12 @@ sub print_main_menu { course => { upload => 'Upload a File of Course Users', singleuser => 'Add/Modify a Course User', - listusers => 'Manage Course Users', + listusers => 'List and Modify Multiple Course Users', }, community => { upload => 'Upload a File of Community Users', singleuser => 'Add/Modify a Community User', - listusers => 'Manage Community Users', + listusers => 'List and Modify Multiple Community Users', }, ); my %linktitles = ( @@ -6205,8 +6208,8 @@ sub course_level_dc { my $hiddenitems = '<input type="hidden" name="dcdomain" value="'.$dcdom.'" />'. '<input type="hidden" name="origdom" value="'.$dcdom.'" />'. '<input type="hidden" name="dccourse" value="" />'; - my $courseform='<b>'.&Apache::loncommon::selectcourse_link - ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course/Community','crstype').'</b>'; + my $courseform=&Apache::loncommon::selectcourse_link + ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Select','crstype'); my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu','role','Course/Community Browser'); my %lt=&Apache::lonlocal::texthash( 'rol' => "Role", @@ -6216,15 +6219,17 @@ sub course_level_dc { 'sta' => "Start", 'end' => "End", 'ssd' => "Set Start Date", - 'sed' => "Set End Date" + 'sed' => "Set End Date", + 'scc' => "Course/Community" ); my $header = '<h4>'.&mt('Course/Community Level').'</h4>'. &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(). - '<th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'. + '<th>'.$lt{'scc'}.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'. &Apache::loncommon::end_data_table_header_row(); my $otheritems = &Apache::loncommon::start_data_table_row()."\n". - '<td><br /><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc','','','','crstype'".')" /></td>'."\n". + '<td><br /><span class="LC_nobreak"><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc','','','','crstype'".')" />'. + $courseform.(' ' x4).'</span></td>'."\n". '<td valign><br /><select name="role">'."\n"; foreach my $role (@roles) { my $plrole=&Apache::lonnet::plaintext($role);