--- 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
- +

$lt{siur}$helpsiur

-
$lt{usr}: +
$lt{usr}: $sellink
$lt{'dom'}:$domform
@@ -235,7 +234,7 @@ ENDDOCUMENT if (&Apache::lonnet::allowed('mcr','/')) { $r->print(< - +

$lt{'ecrp'}$helpecpr

$lt{'nr'}: $choice
@@ -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"; - - - - - - + + + + + + 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.= ''; + $row.= ''; } else { if ($active) { $row.=' '; @@ -740,13 +738,13 @@ END } $row.=''; if ($allowed && !$active) { - $row.= ''; + $row.= ''; } else { $row.=' '; } $row.=''; if ($delallowed) { - $row.= ''; + $row.= ''; } else { $row.=' '; } @@ -999,13 +997,13 @@ ENDNOPRIV $num_domain_level ++; $domaintext .= &Apache::loncommon::start_data_table_row(). -' +' '.$plrole.' '.$thisdomain.' - + '.$lt{'ssd'}.' - + '.$lt{'sed'}.''. &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('
'."\n"); + $r->print('
'."\n"); } else { $r->print(&course_level_table(%inccourses)); - $r->print('
'."\n"); + $r->print('
'."\n"); } $r->print("".&Apache::loncommon::end_page()); } @@ -1611,43 +1609,29 @@ sub custom_role_editor { &print_username_entry_form($r); return; } - my $head_script = < - function setchecks() { - document.form1.bre_c.checked = false; - } - -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('

'); + $body_top .= '

'; 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.'"

'); -# ------------------------------------------------------- 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.'"'; 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 .= ''."\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('
'); + $r->print('Select a Template
'); + $r->print('
'); + $r->print($button_code); + $r->print('
'); $r->print(< @@ -1710,10 +1708,81 @@ ENDCCF &Apache::loncommon::end_data_table_row()); } $r->print(&Apache::loncommon::end_data_table(). - ''. + ''. &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 = ''; + 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(). -' +' '.$plrole.' '.$area.'
Domain: '.$domain.''."\n"; if ($role ne 'cc') { @@ -1875,22 +1944,22 @@ sub course_level_table { $currsec.''. '  '. ' '.$lt{'new'}.'
'. - ''. + ''. ''. + 'name="sec_'.$protectedcourse.'_'.$role.'" />'. ''; } else { $table .= ''; + 'name="sec_'.$protectedcourse.'_'.$role.'" />'; } } else { $table .= ' '; } $table .= < + $lt{'ssd'} - + $lt{'sed'} 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(). -' +' '.$plrole.' '.$area.''."\n"; if (%sections_count) { @@ -1916,17 +1985,17 @@ ENDTIMEENTRY ' '.$lt{'new'}.'
'. ''. ''. + 'name="sec_'.$customrole.'" />'. ''; } else { $table .= ''; + 'name="sec_'.$customrole.'" />'; } $table .= < + $lt{'ssd'} - + $lt{'sed'} ENDENTRY @@ -1943,9 +2012,7 @@ ENDENTRY ''.$lt{'act'}.''.$lt{'rol'}.''.$lt{'ext'}.' '.$lt{'grs'}.''.$lt{'sta'}.''.$lt{'end'}.''. &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 { ''. ''; $otheritems .= < + $lt{'ssd'} - + $lt{'sed'} ENDTIMEENTRY