--- loncom/interface/loncreateuser.pm 2007/06/07 22:34:56 1.151 +++ loncom/interface/loncreateuser.pm 2007/07/20 23:55:12 1.158 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.151 2007/06/07 22:34:56 albertel Exp $ +# $Id: loncreateuser.pm,v 1.158 2007/07/20 23:55:12 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -65,7 +65,6 @@ use Apache::lonnet; use Apache::loncommon; use Apache::lonlocal; use Apache::longroup; -use lib '/home/httpd/lib/perl/'; use LONCAPA qw(:DEFAULT :match); my $loginscript; # piece of javascript used in two separate instances @@ -222,10 +221,10 @@ sub print_username_entry_form { $r->print(<<"ENDDOCUMENT"); $start_page <form action="/adm/createuser" method="post" name="crtuser"> -<input type="hidden" name="phase" value="get_user_info"> +<input type="hidden" name="phase" value="get_user_info" /> <h2>$lt{siur}$helpsiur</h2> <table> -<tr><td>$lt{usr}:</td><td><input type="text" size="15" name="ccuname"> +<tr><td>$lt{usr}:</td><td><input type="text" size="15" name="ccuname" /> </td><td rowspan="2">$sellink</td></tr><tr><td> $lt{'dom'}:</td><td>$domform</td></tr> </table> @@ -235,7 +234,7 @@ ENDDOCUMENT if (&Apache::lonnet::allowed('mcr','/')) { $r->print(<<ENDCUSTOM); <form action="/adm/createuser" method="post" name="docustom"> -<input type="hidden" name="phase" value="selected_custom_edit"> +<input type="hidden" name="phase" value="selected_custom_edit" /> <h2>$lt{'ecrp'}$helpecpr</h2> $lt{'nr'}: $choice <input type="text" size="15" name="newrolename" /><br /> <input name="customeditor" type="submit" value="$lt{'cre'}" /> @@ -429,9 +428,8 @@ ENDSCRIPT var checkcurr = str.match(re1); if (checkcurr != null) { if (document.cu.elements[i-1].checked == true) { - var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/; - match = re2.exec(str); - var role = match[1]; + var match = str.split('_'); + var role = match[3]; if (role == 'cc') { alert("Section designations do not apply to Course Coordinator roles.\\nA course coordinator role will be added with access to all sections."); } @@ -506,12 +504,12 @@ ENDSECCODE my $forminfo =<<"ENDFORMINFO"; <form action="/adm/createuser" method="post" name="cu"> -<input type="hidden" name="phase" value="update_user_data"> -<input type="hidden" name="ccuname" value="$ccuname"> -<input type="hidden" name="ccdomain" value="$ccdomain"> -<input type="hidden" name="pres_value" value="" > -<input type="hidden" name="pres_type" value="" > -<input type="hidden" name="pres_marker" value="" > +<input type="hidden" name="phase" value="update_user_data" /> +<input type="hidden" name="ccuname" value="$ccuname" /> +<input type="hidden" name="ccdomain" value="$ccdomain" /> +<input type="hidden" name="pres_value" value="" /> +<input type="hidden" name="pres_type" value="" /> +<input type="hidden" name="pres_marker" value="" /> ENDFORMINFO my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain); my %inccourses; @@ -730,7 +728,7 @@ END my $active=1; $active=0 if (($role_end_time) && ($now>$role_end_time)); if (($active) && ($allowed)) { - $row.= '<input type="checkbox" name="rev:'.$thisrole.'">'; + $row.= '<input type="checkbox" name="rev:'.$thisrole.'" />'; } else { if ($active) { $row.=' '; @@ -740,13 +738,13 @@ END } $row.='</td><td>'; if ($allowed && !$active) { - $row.= '<input type="checkbox" name="ren:'.$thisrole.'">'; + $row.= '<input type="checkbox" name="ren:'.$thisrole.'" />'; } else { $row.=' '; } $row.='</td><td>'; if ($delallowed) { - $row.= '<input type="checkbox" name="del:'.$thisrole.'">'; + $row.= '<input type="checkbox" name="del:'.$thisrole.'" />'; } else { $row.=' '; } @@ -999,13 +997,13 @@ ENDNOPRIV $num_domain_level ++; $domaintext .= &Apache::loncommon::start_data_table_row(). -'<td><input type=checkbox name="act_'.$thisdomain.'_'.$role.'"></td> +'<td><input type=checkbox name="act_'.$thisdomain.'_'.$role.'" /></td> <td>'.$plrole.'</td> <td>'.$thisdomain.'</td> -<td><input type=hidden name="start_'.$thisdomain.'_'.$role.'" value=""> +<td><input type=hidden name="start_'.$thisdomain.'_'.$role.'" value="" /> <a href= "javascript:pjump('."'date_start','Start Date $plrole',document.cu.start_$thisdomain\_$role.value,'start_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'ssd'}.'</a></td> -<td><input type=hidden name="end_'.$thisdomain.'_'.$role.'" value=""> +<td><input type=hidden name="end_'.$thisdomain.'_'.$role.'" value="" /> <a href= "javascript:pjump('."'date_end','End Date $plrole',document.cu.end_$thisdomain\_$role.value,'end_$thisdomain\_$role','cu.pres','dateset'".')">'.$lt{'sed'}.'</a></td>'. &Apache::loncommon::end_data_table_row(); @@ -1022,10 +1020,10 @@ ENDNOPRIV if ($env{'request.role'} =~ m{^dc\./($match_domain)/$}) { $r->print(&course_level_dc($1,'Course')); - $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()">'."\n"); + $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()" />'."\n"); } else { $r->print(&course_level_table(%inccourses)); - $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setSections()">'."\n"); + $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setSections()" />'."\n"); } $r->print("</form>".&Apache::loncommon::end_page()); } @@ -1611,43 +1609,29 @@ sub custom_role_editor { &print_username_entry_form($r); return; } - my $head_script = <<END_SCRIPT; - <script type="text/javascript"> - function setchecks() { - document.form1.bre_c.checked = false; - } - </script> -END_SCRIPT - - $r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script)); +# ------------------------------------------------------- What can be assigned? + my %full=(); + my %courselevel=(); + my %courselevelcurrent=(); my $syspriv=''; 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? - $r->print('<h2>'); + $body_top .= '<h2>'; if (($rdummy ne 'con_lost') && ($roledef ne '')) { - $r->print(&mt('Existing Role').' "'); + $body_top .= &mt('Existing Role').' "'; # ------------------------------------------------- Get current role privileges ($syspriv,$dompriv,$coursepriv)=split(/\_/,$roledef); } else { - $r->print(&mt('New Role').' "'); + $body_top .= &mt('New Role').' "'; $roledef=''; } - $r->print($rolename.'"</h2>'); -# ------------------------------------------------------- What can be assigned? - my %full=(); - my %courselevel=(); - my %courselevelcurrent=(); - my @roles = ("st:c","st:d"); - #foreach my $item (@roles) { - # &Apache::lonnet::logthis(" roles for $item: ".$Apache::lonnet::pr{$item}); - #} - + $body_top .= $rolename.'"</h2>'; foreach my $item (split(/\:/,$Apache::lonnet::pr{'cr:c'})) { - my ($priv,$restrict)=split(/\&/,$item); if (!$restrict) { $restrict='F'; } $courselevel{$priv}=$restrict; @@ -1678,12 +1662,26 @@ END_SCRIPT } $full{$priv}=1; } + my $button_code = "\n"; + my $head_script = "\n"; + $head_script .= '<script type="text/javascript">'."\n"; + my @template_roles = ("cc","in","ta","ep","st"); + foreach my $role (@template_roles) { + $head_script .= &make_script_template($role); + $button_code .= &make_button_code($role); + } + $head_script .= '</script>'."\n"; + $r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script)); + $r->print($body_top); my %lt=&Apache::lonlocal::texthash( 'prv' => "Privilege", 'crl' => "Course Level", 'dml' => "Domain Level", 'ssl' => "System Level"); - $r->print('<form action=""><input type="button" onClick="setchecks()" value="Click" /></form>'); + $r->print('Select a Template<br />'); + $r->print('<form action="">'); + $r->print($button_code); + $r->print('</form>'); $r->print(<<ENDCCF); <form name=form1 method="post"> <input type="hidden" name="phase" value="set_custom_roles" /> @@ -1710,10 +1708,81 @@ ENDCCF &Apache::loncommon::end_data_table_row()); } $r->print(&Apache::loncommon::end_data_table(). - '<input type="submit" value="'.&mt('Define Role').'" /></form>'. + '<input type="reset" value="'.&mt("Reset").'" /><input type="submit" value="'.&mt('Define Role').'" /></form>'. &Apache::loncommon::end_page()); } - +# -------------------------------------------------------- +sub make_script_template { + my ($role) = @_; + my %full_c=(); + my %full_d=(); + my %full_s=(); + my $return_script; + foreach my $item (split(/\:/,$Apache::lonnet::pr{'cr:c'})) { + my ($priv,$restrict)=split(/\&/,$item); + $full_c{$priv}=1; + } + foreach my $item (split(/\:/,$Apache::lonnet::pr{'cr:d'})) { + my ($priv,$restrict)=split(/\&/,$item); + $full_d{$priv}=1; + } + foreach my $item (split(/\:/,$Apache::lonnet::pr{'cr:s'})) { + my ($priv,$restrict)=split(/\&/,$item); + $full_s{$priv}=1; + } + $return_script .= 'function set_'.$role.'() {'."\n"; + my @temp = split(/:/,$Apache::lonnet::pr{$role.':c'}); + my %role_c; + foreach my $priv (@temp) { + my ($priv_item, $dummy) = split(/\&/,$priv); + $role_c{$priv_item} = 1; + } + foreach my $priv_item (keys(%full_c)) { + my ($priv, $dummy) = split(/\&/,$priv_item); + if (exists($role_c{$priv})) { + $return_script .= "document.form1.$priv"."_c.checked = true;\n"; + } else { + $return_script .= "document.form1.$priv"."_c.checked = false;\n"; + } + } + my %role_d; + @temp = split(/:/,$Apache::lonnet::pr{$role.':d'}); + foreach my $priv(@temp) { + my ($priv_item, $dummy) = split(/\&/,$priv); + $role_d{$priv_item} = 1; + } + foreach my $priv_item (keys(%full_d)) { + my ($priv, $dummy) = split(/\&/,$priv_item); + if (exists($role_d{$priv})) { + $return_script .= "document.form1.$priv"."_d.checked = true;\n"; + } else { + $return_script .= "document.form1.$priv"."_d.checked = false;\n"; + } + } + my %role_s; + @temp = split(/:/,$Apache::lonnet::pr{$role.':s'}); + foreach my $priv(@temp) { + my ($priv_item, $dummy) = split(/\&/,$priv); + $role_s{$priv_item} = 1; + } + foreach my $priv_item (keys(%full_s)) { + my ($priv, $dummy) = split(/\&/,$priv_item); + if (exists($role_s{$priv})) { + $return_script .= "document.form1.$priv"."_s.checked = true;\n"; + } else { + $return_script .= "document.form1.$priv"."_s.checked = false;\n"; + } + } + $return_script .= '}'."\n"; + return ($return_script); +} +# ---------------------------------------------------------- +sub make_button_code { + my ($role) = @_; + my $label = &Apache::lonnet::plaintext($role); + my $button_code = '<input type="button" onClick="set_'.$role.'()" value="'.$label.'" />'; + return ($button_code); +} # ---------------------------------------------------------- Call to definerole sub set_custom_role { my ($r) = @_; @@ -1862,7 +1931,7 @@ sub course_level_table { if (&Apache::lonnet::allowed('c'.$role,$thiscourse)) { my $plrole=&Apache::lonnet::plaintext($role); $table .= &Apache::loncommon::start_data_table_row(). -'<td><input type="checkbox" name="act_'.$protectedcourse.'_'.$role.'"></td> +'<td><input type="checkbox" name="act_'.$protectedcourse.'_'.$role.'" /></td> <td>'.$plrole.'</td> <td>'.$area.'<br />Domain: '.$domain.'</td>'."\n"; if ($role ne 'cc') { @@ -1875,22 +1944,22 @@ sub course_level_table { $currsec.'</td>'. '<td> </td>'. '<td valign="top"> '.$lt{'new'}.'<br />'. - '<input type="text" name="newsec_'.$protectedcourse.'_'.$role.'" value="" /></td>'. + '<input type="text" name="newsec_'.$protectedcourse.'_'.$role.'" value="" />'. '<input type="hidden" '. - 'name="sec_'.$protectedcourse.'_'.$role.'"></td>'. + 'name="sec_'.$protectedcourse.'_'.$role.'" /></td>'. '</tr></table></td>'; } else { $table .= '<td><input type="text" size="10" '. - 'name="sec_'.$protectedcourse.'_'.$role.'"></td>'; + 'name="sec_'.$protectedcourse.'_'.$role.'" /></td>'; } } else { $table .= '<td> </td>'; } $table .= <<ENDTIMEENTRY; -<td><input type=hidden name="start_$protectedcourse\_$role" value=''> +<td><input type=hidden name="start_$protectedcourse\_$role" value='' /> <a href= "javascript:pjump('date_start','Start Date $plrole',document.cu.start_$protectedcourse\_$role.value,'start_$protectedcourse\_$role','cu.pres','dateset')">$lt{'ssd'}</a></td> -<td><input type=hidden name="end_$protectedcourse\_$role" value=''> +<td><input type=hidden name="end_$protectedcourse\_$role" value='' /> <a href= "javascript:pjump('date_end','End Date $plrole',document.cu.end_$protectedcourse\_$role.value,'end_$protectedcourse\_$role','cu.pres','dateset')">$lt{'sed'}</a></td> ENDTIMEENTRY @@ -1903,7 +1972,7 @@ ENDTIMEENTRY my $customrole=$protectedcourse.'_cr_cr_'.$env{'user.domain'}. '_'.$env{'user.name'}.'_'.$plrole; $table .= &Apache::loncommon::start_data_table_row(). -'<td><input type="checkbox" name="act_'.$customrole.'"></td> +'<td><input type="checkbox" name="act_'.$customrole.'" /></td> <td>'.$plrole.'</td> <td>'.$area.'</td>'."\n"; if (%sections_count) { @@ -1916,17 +1985,17 @@ ENDTIMEENTRY '<td valign="top"> '.$lt{'new'}.'<br />'. '<input type="text" name="newsec_'.$customrole.'" value="" /></td>'. '<input type="hidden" '. - 'name="sec_'.$customrole.'"></td>'. + 'name="sec_'.$customrole.'" /></td>'. '</tr></table></td>'; } else { $table .= '<td><input type="text" size="10" '. - 'name="sec_'.$customrole.'"></td>'; + 'name="sec_'.$customrole.'" /></td>'; } $table .= <<ENDENTRY; -<td><input type=hidden name="start_$customrole" value=''> +<td><input type=hidden name="start_$customrole" value='' /> <a href= "javascript:pjump('date_start','Start Date $plrole',document.cu.start_$customrole.value,'start_$customrole','cu.pres','dateset')">$lt{'ssd'}</a></td> -<td><input type=hidden name="end_$customrole" value=''> +<td><input type=hidden name="end_$customrole" value='' /> <a href= "javascript:pjump('date_end','End Date $plrole',document.cu.end_$customrole.value,'end_$customrole','cu.pres','dateset')">$lt{'sed'}</a></td> ENDENTRY @@ -1943,9 +2012,7 @@ ENDENTRY '<th>'.$lt{'act'}.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}.'</th> <th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'. &Apache::loncommon::end_data_table_header_row(). -&Apache::loncommon::start_data_table_row(). $table. -&Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table(); return $result; } @@ -2020,10 +2087,10 @@ sub course_level_dc { '<input type="hidden" name="groups" value="" /></td>'. '</tr></table></td>'; $otheritems .= <<ENDTIMEENTRY; -<td><input type=hidden name="start" value=''> +<td><input type=hidden name="start" value='' /> <a href= "javascript:pjump('date_start','Start Date',document.cu.start.value,'start','cu.pres','dateset')">$lt{'ssd'}</a></td> -<td><input type=hidden name="end" value=''> +<td><input type=hidden name="end" value='' /> <a href= "javascript:pjump('date_end','End Date',document.cu.end.value,'end','cu.pres','dateset')">$lt{'sed'}</a></td> ENDTIMEENTRY