version 1.269, 2005/07/05 18:59:03
|
version 1.275, 2005/10/04 16:34:40
|
Line 152 BEGIN {
|
Line 152 BEGIN {
|
my $designdir=$Apache::lonnet::perlvar{'lonTabDir'}.'/lonDomColors'; |
my $designdir=$Apache::lonnet::perlvar{'lonTabDir'}.'/lonDomColors'; |
opendir(DIR,$designdir); |
opendir(DIR,$designdir); |
while ($filename=readdir(DIR)) { |
while ($filename=readdir(DIR)) { |
|
if ($filename!~/\.tab$/) { next; } |
my ($domain)=($filename=~/^(\w+)\./); |
my ($domain)=($filename=~/^(\w+)\./); |
{ |
{ |
my $designfile = $designdir.'/'.$filename; |
my $designfile = $designdir.'/'.$filename; |
if ( open (my $fh,"<$designfile") ) { |
if ( open (my $fh,"<$designfile") ) { |
while (<$fh>) { |
while (<$fh>) { |
next if /^\#/; |
next if /^\#/; |
chomp; |
chomp; |
my ($key,$val)=(split(/\=/,$_)); |
my ($key,$val)=(split(/\=/,$_)); |
if ($val) { $designhash{$domain.'.'.$key}=$val; } |
if ($val) { $designhash{$domain.'.'.$key}=$val; } |
} |
} |
close($fh); |
close($fh); |
} |
} |
} |
} |
|
|
} |
} |
closedir(DIR); |
closedir(DIR); |
Line 418 sub selectcourse_link {
|
Line 419 sub selectcourse_link {
|
'","'.$udomele.'","'.$desc.'","'.$extra_element.'");'."'>".&mt('Select Course')."</a>"; |
'","'.$udomele.'","'.$desc.'","'.$extra_element.'");'."'>".&mt('Select Course')."</a>"; |
} |
} |
|
|
|
sub check_uncheck_jscript { |
|
my $jscript = <<"ENDSCRT"; |
|
function checkAll(field) { |
|
if (field.length > 0) { |
|
for (i = 0; i < field.length; i++) { |
|
field[i].checked = true ; |
|
} |
|
} else { |
|
field.checked = true |
|
} |
|
} |
|
|
|
function uncheckAll(field) { |
|
if (field.length > 0) { |
|
for (i = 0; i < field.length; i++) { |
|
field[i].checked = false ; |
|
} } else { |
|
field.checked = false ; |
|
} |
|
} |
|
ENDSCRT |
|
return $jscript; |
|
} |
|
|
|
|
=pod |
=pod |
|
|
=item * linked_select_forms(...) |
=item * linked_select_forms(...) |
Line 2688 other decorations will be returned.
|
Line 2714 other decorations will be returned.
|
=cut |
=cut |
|
|
sub bodytag { |
sub bodytag { |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle)=@_; |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle,$notopbar)=@_; |
$title=&mt($title); |
$title=&mt($title); |
$function = &get_users_function() if (!$function); |
$function = &get_users_function() if (!$function); |
my $img=&designparm($function.'.img',$domain); |
my $img=&designparm($function.'.img',$domain); |
Line 2793 ENDROLE
|
Line 2819 ENDROLE
|
} |
} |
my $titletable = '<table bgcolor="'.$pgbg.'" width="100%" border="0" '. |
my $titletable = '<table bgcolor="'.$pgbg.'" width="100%" border="0" '. |
'cellspacing="3" cellpadding="3">'. |
'cellspacing="3" cellpadding="3">'. |
'<tr><td rowspan="3" bgcolor="'.$tabbg.'">'. |
'<tr><td bgcolor="'.$tabbg.'">'. |
$titleinfo.'</td>'.$roleinfo.'</tr></table>'; |
$titleinfo.'</td>'.$roleinfo.'</tr></table>'; |
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,'web',$forcereg,$titletable); |
if ($notopbar) { |
|
$bodytag .= $titletable; |
|
} else { |
|
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,'web',$forcereg,$titletable); |
|
} |
} else { |
} else { |
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,'web',$forcereg). |
if ($notopbar) { |
|
$bodytag .= $titletable; |
|
} else { |
|
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,'web',$forcereg). |
$titletable; |
$titletable; |
|
} |
} |
} |
return $bodytag; |
return $bodytag; |
} |
} |
Line 2912 sub get_users_function {
|
Line 2946 sub get_users_function {
|
|
|
=pod |
=pod |
|
|
|
=item check_user_status |
|
|
|
Determines current status of supplied role for a |
|
specific user. Roles can be active, previous or future. |
|
|
|
Inputs: |
|
user's domain, user's username, course's domain, |
|
course's number, optional section/group. |
|
|
|
Outputs: |
|
role status: active, previous or future. |
|
|
|
=cut |
|
|
|
sub check_user_status { |
|
my ($udom,$uname,$cdom,$crs,$role,$secgrp) = @_; |
|
my %userinfo = &Apache::lonnet::dump('roles',$udom,$uname); |
|
my @uroles = keys %userinfo; |
|
my $srchstr; |
|
my $active_chk = 'none'; |
|
if (@uroles > 0) { |
|
if (($role eq 'cc') || ($secgrp eq '') || (!defined($secgrp))) { |
|
$srchstr = '/'.$cdom.'/'.$crs.'_'.$role; |
|
} else { |
|
$srchstr = '/'.$cdom.'/'.$crs.'/'.$secgrp.'_'.$role; } |
|
if (grep/^$srchstr$/,@uroles) { |
|
my $role_end = 0; |
|
my $role_start = 0; |
|
$active_chk = 'active'; |
|
if ($userinfo{$srchstr} =~ m/^($role)_(\d+)/) { |
|
$role_end = $2; |
|
if ($userinfo{$srchstr} =~ m/^($role)_($role_end)_(\d+)$/) { |
|
$role_start = $3; |
|
} |
|
} |
|
if ($role_start > 0) { |
|
if (time < $role_start) { |
|
$active_chk = 'future'; |
|
} |
|
} |
|
if ($role_end > 0) { |
|
if (time > $role_end) { |
|
$active_chk = 'previous'; |
|
} |
|
} |
|
} |
|
} |
|
return $active_chk; |
|
} |
|
|
|
############################################### |
|
|
|
=pod |
|
|
=item get_sections |
=item get_sections |
|
|
Determines all the sections for a course including |
Determines all the sections for a course including |
Line 2964 sub get_sections {
|
Line 3052 sub get_sections {
|
return $numsections; |
return $numsections; |
} |
} |
|
|
|
############################################### |
|
|
|
=pod |
|
|
|
=item get_course_users |
|
|
|
Retrieves usernames:domains for users in the specified course |
|
with specific role(s), and access status. |
|
|
|
Incoming parameters: |
|
1. course_id |
|
2. course domain |
|
3. course number |
|
4. access status: users must have - either active, |
|
previous, future, or all. |
|
5. reference to array of permissible roles |
|
6. reference to results object (hash of hashes). |
|
Keys of top level hash are roles. |
|
Keys of inner hashes are username:domain, with |
|
values set to access type. |
|
|
|
=cut |
|
|
|
############################################### |
|
|
|
sub get_course_users { |
|
my ($course_id,$cdom,$cnum,$types,$roles,$users) = @_; |
|
if (grep/^st$/,@{$roles}) { |
|
my $statusidx = &Apache::loncoursedata::CL_STATUS; |
|
my $startidx = &Apache::loncoursedata::CL_START; |
|
my $endidx = &Apache::loncoursedata::CL_END; |
|
my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist($course_id,$cdom,$cnum); |
|
foreach my $student (keys (%{$classlist})) { |
|
if (defined($$types{'active'})) { |
|
if ($$classlist{$student}[$statusidx] eq 'Active') { |
|
push(@{$$users{st}{$student}},'active'); |
|
} |
|
} |
|
if (defined($$types{'previous'})) { |
|
if ($$classlist{$student}[$endidx] <= time) { |
|
push(@{$$users{st}{$student}},'previous'); |
|
} |
|
} |
|
if (defined($$types{'future'})) { |
|
if (($$classlist{$student}[$startidx] > 0) && ($$classlist{$student}[$endidx] > time) || ($$classlist{$student}[$endidx] == 0) || ($$classlist{$student}[$endidx] eq '')) { |
|
push(@{$$users{st}{$student}},'future'); |
|
} |
|
} |
|
} |
|
} |
|
if ((@{$roles} > 0) && (@{$roles} ne "st")) { |
|
my ($cdom,$cnum) = split/_/,$course_id; |
|
my @coursepersonnel = &Apache::lonnet::getkeys('nohist_userroles',$cdom,$cnum); |
|
foreach my $person (@coursepersonnel) { |
|
my ($role,$user) = ($person =~ /^([^:]*):([^:]+:[^:]+)/); |
|
$user =~ s/:$//; |
|
if (($role) && (grep/^$role$/,@{$roles})) { |
|
my ($uname,$udom) = split/:/,$user; |
|
if ($uname ne '' && $udom ne '') { |
|
my $status = &check_user_status($udom,$uname,$cdom,$cnum,$role); |
|
foreach my $type (keys %{$types}) { |
|
if ($status eq $type) { |
|
$$users{$role}{$user} = $type; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
|
|
|
|
############################################### |
|
|
sub get_posted_cgi { |
sub get_posted_cgi { |
my $r=shift; |
my $r=shift; |
Line 3059 sub get_unprocessed_cgi {
|
Line 3222 sub get_unprocessed_cgi {
|
if (!defined($possible_names) || (grep {$_ eq $name} @$possible_names)) { |
if (!defined($possible_names) || (grep {$_ eq $name} @$possible_names)) { |
$value =~ tr/+/ /; |
$value =~ tr/+/ /; |
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
&Apache::lonxml::debug("Seting :$name: to :$value:"); |
|
unless (defined($env{'form.'.$name})) { &add_to_env('form.'.$name,$value) }; |
unless (defined($env{'form.'.$name})) { &add_to_env('form.'.$name,$value) }; |
} |
} |
} |
} |