version 1.450, 2010/08/12 16:03:24
|
version 1.458, 2011/03/14 15:48:00
|
Line 609 sub getDescription {
|
Line 609 sub getDescription {
|
return &mt("Having technical difficulties; please check status later"); |
return &mt("Having technical difficulties; please check status later"); |
} |
} |
if ($status == $res->NOTHING_SET) { |
if ($status == $res->NOTHING_SET) { |
return &mt("Not currently assigned."); |
return &Apache::lonhtmlcommon::direct_parm_link(&mt("Not currently assigned.",$res->symb(),'opendate'),$part); |
} |
} |
if ($status == $res->OPEN_LATER) { |
if ($status == $res->OPEN_LATER) { |
return &mt("Open ") .timeToHumanString($open,'start'); |
return &mt("Open ") .&Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($open,'start'),$res->symb(),'opendate',$part); |
} |
} |
if ($res->simpleStatus($part) == $res->OPEN) { |
if ($res->simpleStatus($part) == $res->OPEN) { |
unless (&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) { |
unless (&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) { |
Line 646 sub getDescription {
|
Line 646 sub getDescription {
|
if ($status == $res->OPEN) { |
if ($status == $res->OPEN) { |
if ($due) { |
if ($due) { |
if ($res->is_practice()) { |
if ($res->is_practice()) { |
return &mt("Closes ")." " .timeToHumanString($due,'start'); |
return &mt("Closes ")." " .&Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($due,'start'),$res->symb(),'duedate',$part); |
} else { |
} else { |
return &mt("Due")." " .timeToHumanString($due,'end'); |
return &mt("Due")." " .&Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($due,'end'),$res->symb(),'duedate',$part); |
} |
} |
} else { |
} else { |
return &mt("Open, no due date"); |
return &Apache::lonhtmlcommon::direct_parm_link(&mt("Open, no due date"),$res->symb(),'duedate',$part); |
} |
} |
} |
} |
if ($status == $res->PAST_DUE_ANSWER_LATER) { |
if ($status == $res->PAST_DUE_ANSWER_LATER) { |
return &mt("Answer open")." " .timeToHumanString($answer,'start'); |
return &mt("Answer open")." " .&Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($answer,'start'),$res->symb(),'answerdate',$part); |
} |
} |
if ($status == $res->PAST_DUE_NO_ANSWER) { |
if ($status == $res->PAST_DUE_NO_ANSWER) { |
if ($res->is_practice()) { |
if ($res->is_practice()) { |
return &mt("Closed")." " . timeToHumanString($due,'start'); |
return &mt("Closed")." " . &Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($due,'start'),$res->symb(),'answerdate,duedate',$part); |
} else { |
} else { |
return &mt("Was due")." " . timeToHumanString($due,'end'); |
return &mt("Was due")." " .&Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($due,'end'),$res->symb(),'answerdate,duedate',$part); |
} |
} |
} |
} |
if (($status == $res->ANSWER_OPEN || $status == $res->PARTIALLY_CORRECT) |
if (($status == $res->ANSWER_OPEN || $status == $res->PARTIALLY_CORRECT) |
&& $res->handgrade($part) ne 'yes') { |
&& $res->handgrade($part) ne 'yes') { |
return &mt("Answer available"); |
return &Apache::lonhtmlcommon::direct_parm_link(&mt("Answer available"),$res->symb(),'answerdate,duedate',$part); |
} |
} |
if ($status == $res->EXCUSED) { |
if ($status == $res->EXCUSED) { |
return &mt("Excused by instructor"); |
return &mt("Excused by instructor"); |
Line 694 sub getDescription {
|
Line 694 sub getDescription {
|
} |
} |
} |
} |
if ($due) { |
if ($due) { |
return &mt("Due")." " . timeToHumanString($due,'end') . |
return &mt("Due")." " . &Apache::lonhtmlcommon::direct_parm_link(&timeToHumanString($due,'end'),$res->symb(),'duedate',$part) . |
" $triesString"; |
" $triesString"; |
} else { |
} else { |
return &mt("No due date")." $triesString"; |
return &Apache::lonhtmlcommon::direct_parm_link(&mt("No due date"),$res->symb(),'duedate',$part)." $triesString"; |
} |
} |
} |
} |
if ($status == $res->ANSWER_SUBMITTED) { |
if ($status == $res->ANSWER_SUBMITTED) { |
Line 945 sub render_resource {
|
Line 945 sub render_resource {
|
} |
} |
|
|
if ($resource->randomout()) { |
if ($resource->randomout()) { |
$nonLinkedText .= ' <i>('.&mt('hidden').')</i> '; |
$nonLinkedText .= ' <span class="LC_warning">('.&mt('hidden').')</span> '; |
} |
} |
if (!$resource->condval()) { |
if (!$resource->condval()) { |
$nonLinkedText .= ' <i>('.&mt('conditionally hidden').')</i> '; |
$nonLinkedText .= ' <span class="LC_info">('.&mt('conditionally hidden').')</span> '; |
} |
} |
if (($resource->is_practice()) && ($resource->is_raw_problem())) { |
if (($resource->is_practice()) && ($resource->is_raw_problem())) { |
$nonLinkedText .=' <font color="green"><b>'.&mt('not graded').'</b></font>'; |
$nonLinkedText .=' <font color="green"><b>'.&mt('not graded').'</b></font>'; |
Line 1090 sub render_long_status {
|
Line 1090 sub render_long_status {
|
} |
} |
} |
} |
|
|
if ($resource->kind() eq "res" && |
if (($resource->kind() eq "res" && |
($resource->is_problem() || $resource->is_practice()) && |
($resource->is_problem() || $resource->is_practice()) && |
!$firstDisplayed) { |
!$firstDisplayed) && |
|
$resource->is_raw_problem()) { |
if ($color) {$result .= "<font color=\"$color\"><b>"; } |
if ($color) {$result .= "<font color=\"$color\"><b>"; } |
$result .= getDescription($resource, $part); |
$result .= getDescription($resource, $part); |
if ($color) {$result .= "</b></font>"; } |
if ($color) {$result .= "</b></font>"; } |
Line 1930 sub new {
|
Line 1931 sub new {
|
my $class = ref($proto) || $proto; |
my $class = ref($proto) || $proto; |
my $self = {}; |
my $self = {}; |
|
|
|
$self->{USERNAME} = shift || $env{'user.name'}; |
|
$self->{DOMAIN} = shift || $env{'user.domain'}; |
|
|
# Resource cache stores navmap resources as we reference them. We generate |
# Resource cache stores navmap resources as we reference them. We generate |
# them on-demand so we don't pay for creating resources unless we use them. |
# them on-demand so we don't pay for creating resources unless we use them. |
$self->{RESOURCE_CACHE} = {}; |
$self->{RESOURCE_CACHE} = {}; |
Line 1968 sub generate_course_user_opt {
|
Line 1972 sub generate_course_user_opt {
|
my $self = shift; |
my $self = shift; |
if ($self->{COURSE_USER_OPT_GENERATED}) { return; } |
if ($self->{COURSE_USER_OPT_GENERATED}) { return; } |
|
|
my $uname=$env{'user.name'}; |
my $uname=$self->{USERNAME}; |
my $udom=$env{'user.domain'}; |
my $udom=$self->{DOMAIN}; |
|
|
my $cid=$env{'request.course.id'}; |
my $cid=$env{'request.course.id'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
Line 2012 sub generate_email_discuss_status {
|
Line 2017 sub generate_email_discuss_status {
|
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
my $cnum=$env{'course.'.$cid.'.num'}; |
|
|
my %emailstatus = &Apache::lonnet::dump('email_status'); |
my %emailstatus = &Apache::lonnet::dump('email_status',$self->{DOMAIN},$self->{USERNAME}); |
my $logoutTime = $emailstatus{'logout'}; |
my $logoutTime = $emailstatus{'logout'}; |
my $courseLeaveTime = $emailstatus{'logout_'.$env{'request.course.id'}}; |
my $courseLeaveTime = $emailstatus{'logout_'.$env{'request.course.id'}}; |
$self->{LAST_CHECK} = (($courseLeaveTime > $logoutTime) ? |
$self->{LAST_CHECK} = (($courseLeaveTime > $logoutTime) ? |
Line 2020 sub generate_email_discuss_status {
|
Line 2025 sub generate_email_discuss_status {
|
my %discussiontime = &Apache::lonnet::dump('discussiontimes', |
my %discussiontime = &Apache::lonnet::dump('discussiontimes', |
$cdom, $cnum); |
$cdom, $cnum); |
my %lastread = &Apache::lonnet::dump('nohist_'.$cid.'_discuss', |
my %lastread = &Apache::lonnet::dump('nohist_'.$cid.'_discuss', |
$env{'user.domain'},$env{'user.name'},'lastread'); |
$self->{DOMAIN},$self->{USERNAME},'lastread'); |
my %lastreadtime = (); |
my %lastreadtime = (); |
foreach my $key (keys %lastread) { |
foreach my $key (keys %lastread) { |
my $shortkey = $key; |
my $shortkey = $key; |
Line 2030 sub generate_email_discuss_status {
|
Line 2035 sub generate_email_discuss_status {
|
|
|
my %feedback=(); |
my %feedback=(); |
my %error=(); |
my %error=(); |
my @keys = &Apache::lonnet::getkeys('nohist_email',$env{'user.domain'}, |
my @keys = &Apache::lonnet::getkeys('nohist_email',$self->{DOMAIN}, |
$env{'user.name'}); |
$self->{USERNAME}); |
|
|
foreach my $msgid (@keys) { |
foreach my $msgid (@keys) { |
if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) { |
if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) { |
Line 2079 sub get_user_data {
|
Line 2084 sub get_user_data {
|
|
|
# Retrieve performance data on problems |
# Retrieve performance data on problems |
my %student_data = Apache::lonnet::currentdump($env{'request.course.id'}, |
my %student_data = Apache::lonnet::currentdump($env{'request.course.id'}, |
$env{'user.domain'}, |
$self->{DOMAIN}, |
$env{'user.name'}); |
$self->{USERNAME}); |
$self->{STUDENT_DATA} = \%student_data; |
$self->{STUDENT_DATA} = \%student_data; |
|
|
$self->{RETRIEVED_USER_DATA} = 1; |
$self->{RETRIEVED_USER_DATA} = 1; |
Line 2431 sub parmval_real {
|
Line 2436 sub parmval_real {
|
@cgrps = sort(@cgrps); |
@cgrps = sort(@cgrps); |
$cgroup = $cgrps[0]; |
$cgroup = $cgrps[0]; |
} |
} |
my $uname=$env{'user.name'}; |
my $uname=$self->{USERNAME}; |
my $udom=$env{'user.domain'}; |
my $udom=$self->{DOMAIN}; |
|
|
unless ($symb) { return ['']; } |
unless ($symb) { return ['']; } |
my $result=''; |
my $result=''; |
Line 2834 sub new {
|
Line 2839 sub new {
|
weaken($self->{NAV_MAP} = shift); |
weaken($self->{NAV_MAP} = shift); |
return undef unless ($self->{NAV_MAP}); |
return undef unless ($self->{NAV_MAP}); |
|
|
|
$self->{USERNAME} = $self->{NAV_MAP}->{USERNAME}; |
|
$self->{DOMAIN} = $self->{NAV_MAP}->{DOMAIN}; |
|
|
# Handle the parameters |
# Handle the parameters |
$self->{FIRST_RESOURCE} = shift || $self->{NAV_MAP}->firstResource(); |
$self->{FIRST_RESOURCE} = shift || $self->{NAV_MAP}->firstResource(); |
$self->{FINISH_RESOURCE} = shift || $self->{NAV_MAP}->finishResource(); |
$self->{FINISH_RESOURCE} = shift || $self->{NAV_MAP}->finishResource(); |
Line 3207 sub new {
|
Line 3215 sub new {
|
weaken($self->{NAV_MAP} = shift); |
weaken($self->{NAV_MAP} = shift); |
return undef unless ($self->{NAV_MAP}); |
return undef unless ($self->{NAV_MAP}); |
|
|
|
$self->{USERNAME} = $self->{NAV_MAP}->{USERNAME}; |
|
$self->{DOMAIN} = $self->{NAV_MAP}->{DOMAIN}; |
|
|
$self->{FIRST_RESOURCE} = shift || $self->{NAV_MAP}->firstResource(); |
$self->{FIRST_RESOURCE} = shift || $self->{NAV_MAP}->firstResource(); |
$self->{FINISH_RESOURCE} = shift || $self->{NAV_MAP}->finishResource(); |
$self->{FINISH_RESOURCE} = shift || $self->{NAV_MAP}->finishResource(); |
|
|
Line 3443 sub new {
|
Line 3454 sub new {
|
weaken($self->{NAV_MAP} = shift); |
weaken($self->{NAV_MAP} = shift); |
$self->{ID} = shift; |
$self->{ID} = shift; |
|
|
|
$self->{USERNAME} = $self->{NAV_MAP}->{USERNAME}; |
|
$self->{DOMAIN} = $self->{NAV_MAP}->{DOMAIN}; |
|
|
# Store this new resource in the parent nav map's cache. |
# Store this new resource in the parent nav map's cache. |
$self->{NAV_MAP}->{RESOURCE_CACHE}->{$self->{ID}} = $self; |
$self->{NAV_MAP}->{RESOURCE_CACHE}->{$self->{ID}} = $self; |
$self->{RESOURCE_ERROR} = 0; |
$self->{RESOURCE_ERROR} = 0; |
Line 3465 sub navHash {
|
Line 3479 sub navHash {
|
my $param = shift; |
my $param = shift; |
my $id = shift; |
my $id = shift; |
my $arg = $param . ($id?$self->{ID}:""); |
my $arg = $param . ($id?$self->{ID}:""); |
if (defined($arg)) { |
if (ref($self) && ref($self->{NAV_MAP}) && defined($arg)) { |
return $self->{NAV_MAP}->navhash($arg); |
return $self->{NAV_MAP}->navhash($arg); |
} |
} |
return; |
return; |
Line 4100 sub weight {
|
Line 4114 sub weight {
|
my $self = shift; my $part = shift; |
my $self = shift; my $part = shift; |
if (!defined($part)) { $part = '0'; } |
if (!defined($part)) { $part = '0'; } |
my $weight = &Apache::lonnet::EXT('resource.'.$part.'.weight', |
my $weight = &Apache::lonnet::EXT('resource.'.$part.'.weight', |
$self->symb(), $env{'user.domain'}, |
$self->symb(), $self->{DOMAIN}, |
$env{'user.name'}, |
$self->{USERNAME}, |
$env{'request.course.sec'}); |
$env{'request.course.sec'}); |
return $weight; |
return $weight; |
} |
} |
Line 4129 sub getReturnHash {
|
Line 4143 sub getReturnHash {
|
my $self = shift; |
my $self = shift; |
|
|
if (!defined($self->{RETURN_HASH})) { |
if (!defined($self->{RETURN_HASH})) { |
my %tmpHash = &Apache::lonnet::restore($self->symb()); |
my %tmpHash = &Apache::lonnet::restore($self->symb(),undef,$self->{DOMAIN},$self->{USERNAME}); |
$self->{RETURN_HASH} = \%tmpHash; |
$self->{RETURN_HASH} = \%tmpHash; |
} |
} |
} |
} |
Line 4954 sub check_for_slot {
|
Line 4968 sub check_for_slot {
|
my $taskstatus = $self->taskstatus(); |
my $taskstatus = $self->taskstatus(); |
$is_correct = (($taskstatus eq 'pass') || |
$is_correct = (($taskstatus eq 'pass') || |
($self->solved() =~ /^correct_/)); |
($self->solved() =~ /^correct_/)); |
$got_grade = ($self->solved() =~ /^(?:pass|fail)$/); |
$got_grade = ($taskstatus =~ /^(?:pass|fail)$/); |
} else { |
} else { |
$got_grade = 1; |
$got_grade = 1; |
$is_correct = ($self->solved() =~ /^correct_/); |
$is_correct = ($self->solved() =~ /^correct_/); |