Merge branch 'master' into WebGUI8

This commit is contained in:
Graham Knop 2010-04-13 07:50:02 -05:00
commit 2400f19099
797 changed files with 33894 additions and 27196 deletions

View file

@ -35,6 +35,13 @@ property timeLimit => (
label => ['timelimit', 'Asset_Survey'],
hoverHelp => ['timelimit hoverHelp', 'Asset_Survey'],
);
property maxResponsesPerUser => (
fieldType => 'integer',
tab => 'properties',
default => 1,
label => ['Max user responses', 'Asset_Survey'],
hoverHelp => ['Max user responses help', 'Asset_Survey'],
);
property doAfterTimeLimit => (
fieldType => 'selectBox',
default => 'exitUrl',
@ -209,13 +216,6 @@ property groupToViewReports => (
label => ['Group to view reports', 'Asset_Survey'],
hoverHelp => ['Group to view reports help', 'Asset_Survey'],
);
property maxResponsesPerUser => (
fieldType => 'integer',
tab => 'security',
default => 1,
label => ['Max user responses', 'Asset_Survey'],
hoverHelp => ['Max user responses help', 'Asset_Survey'],
);
# Other
property surveyJSON => (
@ -236,11 +236,6 @@ use Text::CSV_XS;
use Params::Validate qw(:all);
Params::Validate::validation_options( on_fail => sub { WebGUI::Error::InvalidParam->throw( error => shift ) } );
my $TAP_PARSER_MISSING = <<END_WARN;
The Survey Test Suite feature requires TAP::Parser and TAP::Parser::Aggregator CPAN modules.
These will be installed as a dependency if you upgrade to Test::Harness 3.x
END_WARN
#-------------------------------------------------------------------
=head2 surveyJSON_update ( )
@ -668,15 +663,18 @@ test suite.
sub getAdminConsole {
my $self = shift;
my $ac = WebGUI::AdminConsole->new( $self->session, 'Survey' );
my $i18n = WebGUI::International->new($self->session, "Asset_Survey");
$ac->addSubmenuItem($self->session->url->page("func=edit"), WebGUI::International->new($self->session, "WebGUI")->get(575));
$ac->addSubmenuItem($self->session->url->page("func=editSurvey"), $i18n->get('edit survey'));
$ac->addSubmenuItem($self->session->url->page("func=takeSurvey"), $i18n->get('take survey'));
$ac->addSubmenuItem($self->session->url->page("func=graph"), $i18n->get('visualize'));
$ac->addSubmenuItem($self->session->url->page("func=editTestSuite"), $i18n->get("test suite"));
$ac->addSubmenuItem($self->session->url->page("func=runTests"), $i18n->get("run all tests"));
$ac->addSubmenuItem($self->session->url->page("func=runTests;format=tap"), $i18n->get("run all tests") . " (TAP)");
my $ac = $self->SUPER::getAdminConsole;
unless ($self->{_modifiedAdminConsole}) {
my $i18n = WebGUI::International->new($self->session, "Asset_Survey");
$ac->addSubmenuItem($self->session->url->page("func=edit"), WebGUI::International->new($self->session, "WebGUI")->get(575));
$ac->addSubmenuItem($self->session->url->page("func=editSurvey"), $i18n->get('edit survey'));
$ac->addSubmenuItem($self->session->url->page("func=takeSurvey"), $i18n->get('take survey'));
$ac->addSubmenuItem($self->session->url->page("func=graph"), $i18n->get('visualize'));
$ac->addSubmenuItem($self->session->url->page("func=editTestSuite"), $i18n->get("test suite"));
$ac->addSubmenuItem($self->session->url->page("func=runTests"), $i18n->get("run all tests"));
$ac->addSubmenuItem($self->session->url->page("func=runTests;format=tap"), $i18n->get("run all tests") . " (TAP)");
$self->{_modifiedAdminConsole} = 1;
}
return $ac;
}
@ -1233,6 +1231,8 @@ sub www_loadSurvey {
$editHtml = $self->processTemplate( $var, $self->answerEditTemplateId );
}
WebGUI::Macro::process($self->session, \$editHtml);
# Generate the list of valid goto targets
my $gotoTargets = $self->getSurveyJSON->getGotoTargets;
@ -1962,6 +1962,7 @@ sub prepareShowSurveyTemplate {
$section->{allowBackBtn} = $self->allowBackBtn;
my $out = $self->processTemplate( $section, $self->surveyQuestionsId );
WebGUI::Macro::process($self->session, \$out);
$self->session->http->setMimeType('application/json');
return to_json( { type => 'displayquestions', section => $section, questions => $questions, html => $out } );
@ -2256,6 +2257,9 @@ END_SQL
}
$var->{response_loop} = \@responseloop;
$paginator->appendTemplateVars($var);
# Clean up
$self->clearTempReportTable;
my $out = $self->processTemplate( $var, $self->gradebookTemplateId );
return $self->processStyle($out);
@ -2346,6 +2350,9 @@ sub www_viewStatisticalOverview {
$var->{question_loop} = \@questionloop;
$paginator->appendTemplateVars($var);
# Clean up
$self->clearTempReportTable;
my $out = $self->processTemplate( $var, $self->overviewTemplateId );
return $self->processStyle($out);
@ -2401,6 +2408,9 @@ sub export {
$content = $self->session->db->$method( $opts{sql}, $opts{sqlParams} );
}
# Clean up
$self->clearTempReportTable;
my $filename = $self->session->url->escape( $self->title . "_$opts{name}.$format" );
$self->session->http->setFilename($filename,"text/$format");
return $content;
@ -2541,6 +2551,21 @@ END_HTML
#-------------------------------------------------------------------
=head2 clearTempReportTable
Clears the Survey_tempReport table
Typically called after L<loadTempReportTable> has been used
=cut
sub clearTempReportTable {
my $self = shift;
$self->session->db->write( 'delete from Survey_tempReport where assetId = ?', [ $self->getId() ] );
}
#-------------------------------------------------------------------
=head2 loadTempReportTable
Loads the responses from the survey into the Survey_tempReport table, so that other or custom reports can be ran against this data.
@ -2563,7 +2588,7 @@ sub loadTempReportTable {
my %opts = validate(@_, { ignoreRevisionDate => 0 });
# Remove old temp report data
$self->session->db->write( 'delete from Survey_tempReport where assetId = ?', [ $self->getId() ] );
$self->clearTempReportTable;
# Build the sql that will select all responses
my $sql = 'select * from Survey_response where assetId = ?';
@ -2879,11 +2904,7 @@ sub www_runTest {
my $i18n = WebGUI::International->new($session, 'Asset_Survey');
my $ac = $self->getAdminConsole;
eval { require TAP::Parser };
if ($@) {
$self->session->log->warn($TAP_PARSER_MISSING);
return $ac->render($TAP_PARSER_MISSING, $i18n->get('test results'));
}
require TAP::Parser;
my $testId = $session->form->get("testId");
@ -2915,11 +2936,7 @@ all interesting TAP::Parser and TAP::Parser::Result properties) and the template
sub parseTap {
my ($self, $tap) = @_;
eval { require TAP::Parser };
if ($@) {
$self->session->log->warn($TAP_PARSER_MISSING);
return;
}
require TAP::Parser;
my $parser = TAP::Parser->new( { tap => $tap } );
# Expose TAP::Parser and TAP::Parser::Result info as template variables
@ -3014,16 +3031,8 @@ sub www_runTests {
my @parsers;
eval { require TAP::Parser };
if ($@) {
$self->session->log->warn($TAP_PARSER_MISSING);
return $ac->render($TAP_PARSER_MISSING, $i18n->get('test results'));
}
eval { require TAP::Parser::Aggregator };
if ($@) {
$self->session->log->warn($TAP_PARSER_MISSING);
return $ac->render($TAP_PARSER_MISSING, $i18n->get('test results'));
}
require TAP::Parser;
require TAP::Parser::Aggregator;
my $aggregate = TAP::Parser::Aggregator->new;
$aggregate->start;