version 1.206, 2008/09/03 04:28:22
|
version 1.209.2.1, 2009/01/05 16:50:02
|
Line 483 ENDHEADER
|
Line 483 ENDHEADER
|
my $advanced=$env{'user.adv'}; |
my $advanced=$env{'user.adv'}; |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['tryagain']); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['tryagain']); |
my $tryagain=$env{'form.tryagain'}; |
my $tryagain=$env{'form.tryagain'}; |
|
my $reinit=$env{'user.reinit'}; |
|
delete $env{'user.reinit'}; |
|
|
# -------------------------------------------------------- Generate Page Output |
# -------------------------------------------------------- Generate Page Output |
# --------------------------------------------------------------- Error Header? |
# --------------------------------------------------------------- Error Header? |
Line 512 ENDHEADER
|
Line 514 ENDHEADER
|
&Apache::lonenc::check_encrypt($fn)); |
&Apache::lonenc::check_encrypt($fn)); |
} else { |
} else { |
if ($env{'user.error.msg'}) { |
if ($env{'user.error.msg'}) { |
$r->print( |
if ($reinit) { |
|
$r->print( |
|
'<h3><span class="LC_error">'. |
|
&mt('As your session file for the course has expired, you will need to re-select the course.').'</span></h3>'); |
|
} else { |
|
$r->print( |
'<h3><span class="LC_error">'. |
'<h3><span class="LC_error">'. |
&mt('You need to choose another user role or enter a specific course for this function').'</span></h3>'); |
&mt('You need to choose another user role or enter a specific course for this function').'</span></h3>'); |
} |
} |
|
} |
} |
} |
# -------------------------------------------------------- Choice or no choice? |
# -------------------------------------------------------- Choice or no choice? |
if ($nochoose) { |
if ($nochoose) { |
Line 540 ENDHEADER
|
Line 548 ENDHEADER
|
my $possiblerole=''; |
my $possiblerole=''; |
my %futureroles; |
my %futureroles; |
my %roles_nextlogin; |
my %roles_nextlogin; |
|
my %timezones; |
foreach $envkey (sort keys %env) { |
foreach $envkey (sort keys %env) { |
my $button = 1; |
my $button = 1; |
my $switchserver=''; |
my $switchserver=''; |
Line 549 ENDHEADER
|
Line 558 ENDHEADER
|
my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont); |
my ($role,$where,$trolecode,$tstart,$tend,$tremark,$tstatus,$tpstart,$tpend,$tfont); |
&role_status($envkey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); |
&role_status($envkey,$then,$now,\$role,\$where,\$trolecode,\$tstatus,\$tstart,\$tend); |
next if (!defined($role) || $role eq '' || $role =~ /^gr/); |
next if (!defined($role) || $role eq '' || $role =~ /^gr/); |
|
my $timezone = &role_timezone($where,\%timezones); |
$tremark=''; |
$tremark=''; |
$tpstart=' '; |
$tpstart=' '; |
$tpend=' '; |
$tpend=' '; |
$tfont='#000000'; |
$tfont='#000000'; |
if ($tstart) { |
if ($tstart) { |
$tpstart=&Apache::lonlocal::locallocaltime($tstart); |
$tpstart=&Apache::lonlocal::locallocaltime($tstart,$timezone); |
} |
} |
if ($tend) { |
if ($tend) { |
$tpend=&Apache::lonlocal::locallocaltime($tend); |
$tpend=&Apache::lonlocal::locallocaltime($tend,$timezone); |
} |
} |
if ($env{'request.role'} eq $trolecode) { |
if ($env{'request.role'} eq $trolecode) { |
$tstatus='selected'; |
$tstatus='selected'; |
Line 689 ENDHEADER
|
Line 699 ENDHEADER
|
$twhere=&mt('system wide'); |
$twhere=&mt('system wide'); |
$sortkey=$role.$twhere; |
$sortkey=$role.$twhere; |
} |
} |
$roletext.=&build_roletext($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver); |
$roletext.=&build_roletext($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver,$reinit); |
$roletext{$envkey}=$roletext; |
$roletext{$envkey}=$roletext; |
if (!$sortkey) {$sortkey=$twhere."\0".$envkey;} |
if (!$sortkey) {$sortkey=$twhere."\0".$envkey;} |
$sortrole{$sortkey}=$envkey; |
$sortrole{$sortkey}=$envkey; |
Line 742 ENDHEADER
|
Line 752 ENDHEADER
|
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
return OK; |
return OK; |
# Is there only one choice? |
|
} elsif ($countactive==1) { |
|
my $needs_switchserver; |
|
if ($env{'user.author'}) { |
|
$needs_switchserver = &check_needs_switchserver($possiblerole); |
|
} |
|
if ((!$needs_switchserver) && ($env{'request.role'} eq 'cm')) { |
|
$r->print('<h3>'.&mt('Please stand by.').'</h3>'. |
|
'<input type="hidden" name="'.$possiblerole.'" value="1" />'. |
|
'<noscript><br /><input type="submit" name="submit" value="'.&mt('Continue').'" /></noscript>'); |
|
$r->print("</form>\n"); |
|
$r->rflush(); |
|
$r->print('<script type="text/javascript">document.forms.rolechoice.submit();</script>'); |
|
$r->print(&Apache::loncommon::end_page()); |
|
return OK; |
|
} |
|
if ($needs_switchserver) { |
|
$r->print("<h2>".&mt('Server Switch Required')."</h2>\n". |
|
&mt('Construction Space access is only available from '. |
|
'the home server of the corresponding Author.').'<br />'. |
|
&mt("Click the 'Switch Server' link to go there.").'<br />'); |
|
} |
|
} |
} |
# More than one possible role |
|
# ----------------------------------------------------------------------- Table |
# ----------------------------------------------------------------------- Table |
unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) { |
unless ((!&Apache::lonmenu::show_course()) || ($nochoose) || ($countactive==1)) { |
$r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n"); |
$r->print("<h2>".&mt('Select a Course to Enter')."</h2>\n"); |
Line 848 ENDHEADER
|
Line 835 ENDHEADER
|
return OK; |
return OK; |
} |
} |
|
|
|
sub role_timezone { |
|
my ($where,$timezones) = @_; |
|
my $timezone; |
|
if (ref($timezones) eq 'HASH') { |
|
if ($where =~ m{^/($match_domain)/($match_courseid)}) { |
|
my $cdom = $1; |
|
my $cnum = $2; |
|
if ($cdom && $cnum) { |
|
if (!exists($timezones->{$cdom.'_'.$cnum})) { |
|
my %timehash = |
|
&Apache::lonnet::get('environment',['timezone'],$cdom,$cnum); |
|
if ($timehash{'timezone'} eq '') { |
|
if (!exists($timezones->{$cdom})) { |
|
my %domdefaults = |
|
&Apache::lonnet::get_domain_defaults($cdom); |
|
if ($domdefaults{'timezone_def'} eq '') { |
|
$timezones->{$cdom} = 'local'; |
|
} else { |
|
$timezones->{$cdom} = $domdefaults{'timezone_def'}; |
|
} |
|
} |
|
$timezones->{$cdom.'_'.$cnum} = $timezones->{$cdom}; |
|
} else { |
|
$timezones->{$cdom.'_'.$cnum} = |
|
&Apache::lonlocal::gettimezone($timehash{'timezone'}); |
|
} |
|
} |
|
$timezone = $timezones->{$cdom.'_'.$cnum}; |
|
} |
|
} else { |
|
my ($tdom) = ($where =~ m{^/($match_domain)}); |
|
if ($tdom) { |
|
if (!exists($timezones->{$tdom})) { |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($tdom); |
|
if ($domdefaults{'timezone_def'} eq '') { |
|
$timezones->{$tdom} = 'local'; |
|
} else { |
|
$timezones->{$tdom} = $domdefaults{'timezone_def'}; |
|
} |
|
} |
|
$timezone = $timezones->{$tdom}; |
|
} |
|
} |
|
if ($timezone eq 'local') { |
|
$timezone = undef; |
|
} |
|
} |
|
return $timezone; |
|
} |
|
|
sub roletable_headers { |
sub roletable_headers { |
my ($r,$roleclass,$sortrole,$nochoose) = @_; |
my ($r,$roleclass,$sortrole,$nochoose) = @_; |
my $doheaders; |
my $doheaders; |
Line 1011 sub role_status {
|
Line 1048 sub role_status {
|
} |
} |
|
|
sub build_roletext { |
sub build_roletext { |
my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver) = @_; |
my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$tfont,$trole,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver,$reinit) = @_; |
my $roletext='<tr bgcolor="'.$tbg.'" class="LC_rolesmenu_'.$tstatus.'">'; |
my $roletext='<tr bgcolor="'.$tbg.'" class="LC_rolesmenu_'.$tstatus.'">'; |
my $is_dc=($trolecode =~ m/^dc\./); |
my $is_dc=($trolecode =~ m/^dc\./); |
my $rowspan=($is_dc) ? '' |
my $rowspan=($is_dc) ? '' |
Line 1041 sub build_roletext {
|
Line 1078 sub build_roletext {
|
'<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
'<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
&mt('Re-Initialize').'" onClick="javascript:enterrole(this.form,\''. |
&mt('Re-Initialize').'" onClick="javascript:enterrole(this.form,\''. |
$trolecode."','".$buttonname.'\');" /></td>'; |
$trolecode."','".$buttonname.'\');" /></td>'; |
|
} elsif ($reinit) { |
|
$roletext.= |
|
'<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
|
&mt('Re-Select').'" onClick="javascript:enterrole(this.form,\''. |
|
$trolecode."','".$buttonname.'\');" /></td>'; |
} else { |
} else { |
$roletext.='<td'.$rowspan.'> </td>'; |
$roletext.= |
|
'<td'.$rowspan.'><input name="'.$buttonname.'" type="button" value="'. |
|
&mt('Re-Initialize').'" onClick="javascript:enterrole(this.form,\''. |
|
$trolecode."','".$buttonname.'\');" /></td>'; |
} |
} |
} |
} |
if ($trolecode !~ m/^(dc|ca|au|aa)\./) { |
if ($trolecode !~ m/^(dc|ca|au|aa)\./) { |
Line 1159 sub adhoc_course_role {
|
Line 1204 sub adhoc_course_role {
|
return; |
return; |
} |
} |
} |
} |
my (%userroles,%newrole,%newgroups); |
my (%userroles,%newrole,%newgroups,%group_privs); |
|
my %cgroups = |
|
&Apache::lonnet::get_active_groups($env{'user.domain'}, |
|
$env{'user.name'},$cdom,$cnum); |
|
foreach my $group (keys(%cgroups)) { |
|
$group_privs{$group} = |
|
$env{'user.priv.cc./'.$cdom.'/'.$cnum.'./'.$cdom.'/'.$cnum.'/'.$group}; |
|
} |
|
$newgroups{'/'.$cdom.'/'.$cnum} = \%group_privs; |
my $area = '/'.$cdom.'/'.$cnum; |
my $area = '/'.$cdom.'/'.$cnum; |
my $spec = $role.'.'.$area; |
my $spec = $role.'.'.$area; |
if ($usec ne '') { |
if ($usec ne '') { |
Line 1167 sub adhoc_course_role {
|
Line 1220 sub adhoc_course_role {
|
$area .= '/'.$usec; |
$area .= '/'.$usec; |
} |
} |
&Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,$area); |
&Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,$area); |
&Apache::lonnet::set_userprivs(\%userroles,\%newrole,%newgroups); |
&Apache::lonnet::set_userprivs(\%userroles,\%newrole,\%newgroups); |
my $adhocstart = $then-1; |
my $adhocstart = $then-1; |
$userroles{'user.role.'.$spec} = $adhocstart.'.'; |
$userroles{'user.role.'.$spec} = $adhocstart.'.'; |
&Apache::lonnet::appenv(\%userroles,[$role,'cm']); |
&Apache::lonnet::appenv(\%userroles,[$role,'cm']); |