From 5a2f514a5a7e63336cb2d8d92a9fdd7447646b25 Mon Sep 17 00:00:00 2001 From: Patrick Donelan Date: Wed, 11 Feb 2009 09:27:54 +0000 Subject: [PATCH] Added Delete Responses back into Survey template (with i18n) --- lib/WebGUI/Asset/Wobject/Survey.pm | 58 ++++++------------------ lib/WebGUI/i18n/English/Asset_Survey.pm | 4 ++ root_import_survey.wgpkg | Bin 10490 -> 10634 bytes 3 files changed, 17 insertions(+), 45 deletions(-) diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm index a290d2cb5..977128d42 100644 --- a/lib/WebGUI/Asset/Wobject/Survey.pm +++ b/lib/WebGUI/Asset/Wobject/Survey.pm @@ -443,9 +443,6 @@ sub www_jumpTo { $self->session->db->write( 'delete from Survey_response where assetId = ? and userId = ?', [ $self->getId, $self->session->user->userId() ] ); - # Create a new response -# $self->responseId(); - # Break the $id down into sIndex and qIndex my ($sIndex, $qIndex) = split /-/, $id; @@ -843,6 +840,7 @@ sub getMenuVars { $var{'edit_survey_url'} = $self->getUrl('func=editSurvey'); $var{'take_survey_url'} = $self->getUrl('func=takeSurvey'); + $var{'delete_responses_url'} = $self->getUrl('func=deleteResponses'); $var{'view_simple_results_url'} = $self->getUrl('func=exportSimpleResults'); $var{'view_transposed_results_url'} = $self->getUrl('func=exportTransposedResults'); $var{'view_statistical_overview_url'} = $self->getUrl('func=viewStatisticalOverview'); @@ -930,61 +928,31 @@ See WebGUI::Asset::Wobject::www_view() for details. sub www_view { my $self = shift; - $self->SUPER::www_view(@_); + return $self->SUPER::www_view(@_); } #------------------------------------------------------------------- =head2 www_takeSurvey -Returns the template needed to take the survey. This template dynamically loads the survey via async requests. +The take survey page does very little. It is a simple shell (controlled by surveyTakeTemplateId). + +Survey questions are loaded asynchronously via javascript calls to L<"www_loadQuestions">. =cut sub www_takeSurvey { my $self = shift; - my %var; - - eval { - my $responseId = $self->responseId(); - if ( !$responseId ) { - $self->session->log->debug('No responseId, surveyEnd'); - - # return $self->surveyEnd(); # disabled. let the js handle the exitUrl redirection - } - else { - $self->session->log->debug("ResponseId: $responseId"); - } - }; - - $self->session->style->setScript($self->session->url->extras('yui/build/utilities/utilities.js'), {type => - 'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('yui/build/container/container-min.js'), {type => - 'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('yui/build/menu/menu-min.js'), {type => - 'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('yui/build/button/button-min.js'), {type => - 'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('yui/build/calendar/calendar-min.js'), {type => - 'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('yui/build/json/json-min.js'), {type => - 'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('yui/build/logger/logger-min.js'), {type => - 'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('yui/build/resize/resize-min.js'), {type => - 'text/javascript'}); - $self->session->style->setScript($self->session->url->extras('yui/build/slider/slider-min.js'), {type => - 'text/javascript'}); - - my $out = $self->processTemplate( \%var, $self->get("surveyTakeTemplateId") ); - return $self->session->style->process( $out, $self->get("styleTemplateId") ); -} ## end sub www_takeSurvey + + my $out = $self->processTemplate( {}, $self->get('surveyTakeTemplateId') ); + return $self->session->style->process( $out, $self->get('styleTemplateId') ); +} #------------------------------------------------------------------- =head2 www_deleteResponses -Deletes all the responses from the survey. +Deletes all responses from this survey instance. =cut @@ -992,7 +960,7 @@ sub www_deleteResponses { my $self = shift; return $self->session->privilege->insufficient() - unless ( $self->session->user->isInGroup( $self->get('groupToEditSurvey') ) ); + if !$self->session->user->isInGroup( $self->get('groupToEditSurvey') ); $self->session->db->write( 'delete from Survey_response where assetId = ?', [ $self->getId ] ); @@ -1086,7 +1054,7 @@ sub www_loadQuestions { return $self->surveyEnd(); } - my $responseId = $self->responseId(); #also loads the survey and response + my $responseId = $self->responseId(); if ( !$responseId ) { $self->session->log->debug('No responseId, surveyEnd'); return $self->surveyEnd(); @@ -1142,7 +1110,7 @@ sub surveyEnd { $completeCode = defined $completeCode ? $completeCode : 1; - if ( my $responseId = $self->responseId() ) { #also loads the survey and response + if ( my $responseId = $self->responseId ) { # $self->session->db->write("update Survey_response set endDate = ? and isComplete > 0 where Survey_responseId = ?",[WebGUI::DateTime->now->toDatabase,$responseId]); $self->session->db->setRow( "Survey_response", diff --git a/lib/WebGUI/i18n/English/Asset_Survey.pm b/lib/WebGUI/i18n/English/Asset_Survey.pm index 233a9b58a..2c61b4611 100644 --- a/lib/WebGUI/i18n/English/Asset_Survey.pm +++ b/lib/WebGUI/i18n/English/Asset_Survey.pm @@ -31,6 +31,10 @@ our $I18N = { message => q|View Grade Book|, lastUpdated => 1224686319 }, + 'delete responses' => { + message => q|Delete Responses|, + lastUpdated => 0 + }, 'continue button' => { message => q|Continue|, lastUpdated => 1224686319 diff --git a/root_import_survey.wgpkg b/root_import_survey.wgpkg index 8691beeb78149fe16c6401068f67b19b7025deb4..21d1c03d54eefb29f91e211b5924333bc1f1802f 100644 GIT binary patch delta 10253 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 T2MXj<;Qs*#vulr}00aR5IDyTp delta 10036 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 Kfz==Y0s#OV8jz9z