adding grade book view to Survey
This commit is contained in:
parent
d24079f2ca
commit
a612b56e92
4 changed files with 99 additions and 17 deletions
Binary file not shown.
|
|
@ -15,6 +15,7 @@ use Tie::IxHash;
|
||||||
use JSON;
|
use JSON;
|
||||||
use WebGUI::International;
|
use WebGUI::International;
|
||||||
use WebGUI::Form::File;
|
use WebGUI::Form::File;
|
||||||
|
use WebGUI::Utility;
|
||||||
use base 'WebGUI::Asset::Wobject';
|
use base 'WebGUI::Asset::Wobject';
|
||||||
use WebGUI::Asset::Wobject::Survey::SurveyJSON;
|
use WebGUI::Asset::Wobject::Survey::SurveyJSON;
|
||||||
use WebGUI::Asset::Wobject::Survey::ResponseJSON;
|
use WebGUI::Asset::Wobject::Survey::ResponseJSON;
|
||||||
|
|
@ -589,6 +590,27 @@ returns the output.
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub view {
|
sub view {
|
||||||
|
my $self = shift;
|
||||||
|
my $var = $self->getMenuVars;
|
||||||
|
|
||||||
|
my ( $code, $overTakeLimit ) = $self->getResponseInfoForView();
|
||||||
|
$var->{'lastResponseCompleted'} = $code;
|
||||||
|
$var->{'lastResponseTimedOut'} = $code > 1 ? 1 : 0;
|
||||||
|
$var->{'maxResponsesSubmitted'} = $overTakeLimit;
|
||||||
|
my $out = $self->processTemplate( $var, undef, $self->{_viewTemplate} );
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
} ## end sub view
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getMenuVars ( )
|
||||||
|
|
||||||
|
Returns the top menu template variables as a hashref.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getMenuVars {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my %var;
|
my %var;
|
||||||
|
|
||||||
|
|
@ -601,15 +623,9 @@ sub view {
|
||||||
$var{'user_canTakeSurvey'} = $self->session->user->isInGroup( $self->get("groupToTakeSurvey") );
|
$var{'user_canTakeSurvey'} = $self->session->user->isInGroup( $self->get("groupToTakeSurvey") );
|
||||||
$var{'user_canViewReports'} = $self->session->user->isInGroup( $self->get("groupToViewReports") );
|
$var{'user_canViewReports'} = $self->session->user->isInGroup( $self->get("groupToViewReports") );
|
||||||
$var{'user_canEditSurvey'} = $self->session->user->isInGroup( $self->get("groupToEditSurvey") );
|
$var{'user_canEditSurvey'} = $self->session->user->isInGroup( $self->get("groupToEditSurvey") );
|
||||||
$var{'user_canEditSurvey'} = $self->session->user->isInGroup( $self->get("groupToEditSurvey") );
|
|
||||||
my ( $code, $overTakeLimit ) = $self->getResponseInfoForView();
|
|
||||||
$var{'lastResponseCompleted'} = $code;
|
|
||||||
$var{'lastResponseTimedOut'} = $code > 1 ? 1 : 0;
|
|
||||||
$var{'maxResponsesSubmitted'} = $overTakeLimit;
|
|
||||||
my $out = $self->processTemplate( \%var, undef, $self->{_viewTemplate} );
|
|
||||||
|
|
||||||
return $out;
|
return \%var;
|
||||||
} ## end sub view
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -1116,22 +1132,51 @@ sub canTakeSurvey {
|
||||||
} ## end sub canTakeSurvey
|
} ## end sub canTakeSurvey
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 www_viewGradeBook (){
|
||||||
|
|
||||||
|
Returns the Grade Book screen.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
sub www_viewGradeBook {
|
sub www_viewGradeBook {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
my $db = $self->session->db;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient()
|
return $self->session->privilege->insufficient()
|
||||||
unless ( $self->session->user->isInGroup( $self->get("groupToViewReports") ) );
|
unless ( $self->session->user->isInGroup( $self->get("groupToViewReports") ) );
|
||||||
|
|
||||||
|
my $var = $self->getMenuVars;
|
||||||
|
|
||||||
$self->loadTempReportTable();
|
$self->loadTempReportTable();
|
||||||
|
|
||||||
my @peoples
|
my $paginator = WebGUI::Paginator->new($self->session,$self->getUrl('func=viewGradebook'));
|
||||||
= $self->session->db->quickArray( "SELECT UNIQUE(Survey_responseId) from Survey_tempReport where assetId = ?",
|
$paginator->setDataByQuery("select userId,username,ipAddress,Survey_responseId,startDate,endDate
|
||||||
[ $self->getId() ] );
|
from Survey_response
|
||||||
for my $people (@peoples) {
|
where assetId=".$db->quote($self->getId)." order by username,ipAddress,startDate");
|
||||||
|
my $users = $paginator->getPageData;
|
||||||
|
|
||||||
#my $
|
$self->loadSurveyJSON();
|
||||||
|
$var->{question_count} = $self->survey->questionCount;
|
||||||
|
|
||||||
|
my @responseloop;
|
||||||
|
foreach my $user (@$users) {
|
||||||
|
my ($correctCount) = $db->quickArray("select count(*) from Survey_tempReport
|
||||||
|
where Survey_responseId=? and isCorrect=1",[$user->{Survey_responseId}]);
|
||||||
|
push(@responseloop, {
|
||||||
|
# response_url is left out because it looks like Survey doesn't have a viewIndividualSurvey feature
|
||||||
|
# yet.
|
||||||
|
#'response_url'=>$self->getUrl('func=viewIndividualSurvey;responseId='.$user->{Survey_responseId}),
|
||||||
|
'response_user_name'=>($user->{userId} eq '1') ? $user->{ipAddress} : $user->{username},
|
||||||
|
'response_count_correct' => $correctCount,
|
||||||
|
'response_percent' => round(($correctCount/$var->{question_count})*100)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
$var->{response_loop} = \@responseloop;
|
||||||
|
$paginator->appendTemplateVars($var);
|
||||||
|
|
||||||
|
my $out = $self->processTemplate( $var, $self->get("gradebookTemplateId") );
|
||||||
|
return $self->session->style->process( $out, $self->get("styleTemplateId") );
|
||||||
|
|
||||||
} ## end sub www_viewGradeBook
|
} ## end sub www_viewGradeBook
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -975,6 +975,25 @@ sub question {
|
||||||
return $self->{sections}->[ $$address[0] ]->{questions}->[ $$address[1] ];
|
return $self->{sections}->[ $$address[0] ]->{questions}->[ $$address[1] ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 questionCount (){
|
||||||
|
|
||||||
|
Return the total number of questions in this survey.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub questionCount {
|
||||||
|
my $self = shift;
|
||||||
|
my $count;
|
||||||
|
for ( my $s = 0; $s <= $#{ $self->sections() }; $s++ ) {
|
||||||
|
$count = $count + scalar @{$self->questions( [$s] )};
|
||||||
|
}
|
||||||
|
return $count;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 answers ($address)
|
=head2 answers ($address)
|
||||||
|
|
||||||
Return a reference to all answers from a particular question.
|
Return a reference to all answers from a particular question.
|
||||||
|
|
|
||||||
|
|
@ -497,6 +497,24 @@ our $I18N = {
|
||||||
lastUpdated => 0,
|
lastUpdated => 0,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'percentage label' => {
|
||||||
|
message => q|Percentage|,
|
||||||
|
context => q|Label for the Percentage column on the gradebook screen.|,
|
||||||
|
lastUpdated => 0
|
||||||
|
},
|
||||||
|
|
||||||
|
'user label' => {
|
||||||
|
message => q|User|,
|
||||||
|
context => q|Label for the User column on the gradebook screen.|,
|
||||||
|
lastUpdated => 0
|
||||||
|
},
|
||||||
|
|
||||||
|
'score label' => {
|
||||||
|
message => q|Score|,
|
||||||
|
context => q|Label for the Score column on the gradebook screen.|,
|
||||||
|
lastUpdated => 0
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue