From 0db9be4512866a024679e32120a9eca6d76eccfb Mon Sep 17 00:00:00 2001 From: Kaleb Murphy Date: Mon, 9 Mar 2009 17:23:06 +0000 Subject: [PATCH] Added goto to sections and questions. Order of precedence is answer, question, then section. --- lib/WebGUI/Asset/Wobject/Survey.pm | 30 +++++++++++++++++- .../Asset/Wobject/Survey/ResponseJSON.pm | 24 ++++++++++++-- lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm | 3 ++ ..._import_survey_default-question-edit.wgpkg | Bin 0 -> 2138 bytes root_import_survey_default-section-edit.wgpkg | Bin 0 -> 2099 bytes www/extras/wobject/Survey/administersurvey.js | 6 ++-- 6 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 root_import_survey_default-question-edit.wgpkg create mode 100644 root_import_survey_default-section-edit.wgpkg diff --git a/lib/WebGUI/Asset/Wobject/Survey.pm b/lib/WebGUI/Asset/Wobject/Survey.pm index 773609dd8..4f4befd74 100644 --- a/lib/WebGUI/Asset/Wobject/Survey.pm +++ b/lib/WebGUI/Asset/Wobject/Survey.pm @@ -1065,7 +1065,7 @@ sub www_loadQuestions { my @questions; eval { @questions = $self->responseJSON->nextQuestions(); }; - + my $section = $self->responseJSON->nextResponseSection(); #return $self->prepareShowSurveyTemplate($section,$questions); @@ -1073,6 +1073,7 @@ sub www_loadQuestions { $section->{wasRestarted} = $wasRestarted; my $text = $self->prepareShowSurveyTemplate( $section, \@questions ); + return $text; } @@ -1697,4 +1698,31 @@ sub loadTempReportTable { return 1; } +#------------------------------------------------------------------- + +=head2 www_editDefaultQuestions + +Allows a user to edit the *site wide* default multiple choice questions displayed when adding questions to a survey. + +=cut + +sub www_editDefaultQuestions{ + my $self = shift; + my $warning = shift; + my $session = $self->session; + my ($output); + my $bundleId = $session->form->process("bundleId"); + + if($bundleId eq 'new'){ + + + + } + + if($warning){$output .= "$warning";} +# $output .= $tabForm->print; + + +} + 1; diff --git a/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm index ab56e6091..bd810df4e 100644 --- a/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm +++ b/lib/WebGUI/Asset/Wobject/Survey/ResponseJSON.pm @@ -469,6 +469,9 @@ sub recordResponses { my $section = $self->nextResponseSection(); my @questions = $self->nextQuestions(); + #GOTO jumps in the Survey. Order of precedence is Answer, Question, then Section. + my ($goto, $gotoExpression); + # Handle terminal Section.. my $terminalUrl; my $sTerminal = 0; @@ -476,6 +479,15 @@ sub recordResponses { $sTerminal = 1; $terminalUrl = $section->{terminalUrl}; } + # ..and also gotos.. + elsif ( $section->{goto} =~ /\w/ ) { + $goto = $section->{goto}; + } + # .. and also gotoExpressions.. + elsif ( $section->{gotoExpression} =~ /\w/ ) { + $gotoExpression = $section->{gotoExpression}; + } + # Handle empty Section.. if ( !@questions ) { @@ -487,7 +499,6 @@ sub recordResponses { # Process Questions in Section.. my $terminal = 0; my $allRequiredQsAnswered = 1; - my ($goto, $gotoExpression); for my $question (@questions) { my $aAnswered = 0; @@ -496,6 +507,14 @@ sub recordResponses { $terminal = 1; $terminalUrl = $question->{terminalUrl}; } + # ..and also gotos.. + elsif ( $question->{goto} =~ /\w/ ) { + $goto = $question->{goto}; + } + # .. and also gotoExpressions.. + elsif ( $question->{gotoExpression} =~ /\w/ ) { + $gotoExpression = $question->{gotoExpression}; + } # Record Question comment $self->responses->{ $question->{id} }->{comment} = $responses->{ $question->{id} . 'comment' }; @@ -896,7 +915,6 @@ sub nextQuestions { my $section = $self->nextResponseSection(); my $sectionIndex = $self->nextResponseSectionIndex; my $questionsPerPage = $self->survey->section( [ $self->nextResponseSectionIndex ] )->{questionsPerPage}; - # Get all of the existing question responses (so that we can do Section and Question [[var]] replacements my $recordedResponses = $self->recordedResponses(); @@ -907,6 +925,7 @@ sub nextQuestions { my @questions; for my $i (1 .. $questionsPerPage ) { my $address = $self->surveyOrder->[ $self->lastResponse + $i ]; + last if(! defined $address); my ($sIndex, $qIndex) = (sIndex($address), qIndex($address)); # Skip if this is a Section without a Question @@ -1009,6 +1028,7 @@ equal to the number of sections in the survey order. sub surveyEnd { my $self = shift; + return 1 if ( $self->lastResponse >= $#{ $self->surveyOrder } ); return 0; } diff --git a/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm index 97140d484..d440466f4 100644 --- a/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm +++ b/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm @@ -852,6 +852,7 @@ sub newSection { terminal => 0, terminalUrl => q{}, goto => q{}, + gotoExpression => q{}, timeLimit => 0, type => 'section', questions => [], @@ -881,6 +882,8 @@ sub newQuestion { textInButton => 0, type => 'question', answers => [], + goto => q{}, + gotoExpression => q{}, }; } diff --git a/root_import_survey_default-question-edit.wgpkg b/root_import_survey_default-question-edit.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..9d8572c9f20a840d3c08d49cff72c9721c309018 GIT binary patch literal 2138 zcmV-g2&MNQiwFP!000001MOP-bK5o&_Rsw*IQoTmGj;TqPpYgN*J&E};kaix>CNfR z1Cfw~gd$l2l&swJfA20pkl;g+m)S1>vX=XYUYuTRvIROB;XM){=@v0LIM<22+jKa7QixPbK%Iy(`|T-#a^FNTVt02m%u zB!c0O_Ui0Xj|yr_xb$x&tdWgjyKW~4H>$JxRq86p)T5as5sikzP2V+25~(mP##emM zVGKuc(4(?fYIkFE*MFkiJBc$}pt z#2dvQ5oQh{z!6C>(X(reL&#AxrHEv)7X)D%B(ZU2TM1Plr%pLUq36IoDrT{nrR<>Y zNdFktr7AWXLD0~FP4*hrmC#D1NjJ2xR6ndM;kk+W_;VZ}RaGtwdN`>uuz8u(=CBVs-^A>kIFnk6%FGLh7OHAtvkh$+?V|`GOw}Y-pF4ps2!nknNT^;YbH;uWo9h00 z>K4gS&9Tb;g!CwV3M0ySRi0&cAbmfBrzarzL6L*R&GQYX_1%2F0&rJt|_=C)x8 zz9CoAXrCVukVva9g@ZCgCO0Mmy{0`0V%&5eIuYyzTF6+vX1=l~$2NG2Gt} zSd0`KV&8)aYHc+})sISU@^>r*nkDFZe4a%G0!Q;D%s`9yd`+W0AV5_Iv7xBqh+$;A zH?-2LWLSC=m!n6a(PyDaL1)U_5?u-nOU50GHWdp__RxpQnR&oT~Jy{NAN>Rg~ zBZ>-~(uS=x(HdW>Q*G)DlO=YsQOOgy%|CK9DeBbpEwW^{amS*`bD|4h1ZxY|J-Caq zrm+xJ_YkIF^cFsc#Fq*srzZ{$>c;<84M{u4WR2P2a}dVVm(sY%7PC>wsACYt^yR*B zg?O-cvz%bLg!{|m2bG-o(-T9gyG{mEMGUh+$p;5Tl6?Z4sckDQ%tj@XjzJ5Y($Aqr zLJA;pZg zI7Y$x6F8=PIwbm{$bCV~6jYs;p9A1OKzk8DEVDw6Ko}!^*yiLSnOUe4k2?+^r1-SQPwy}q!Hfi=D|*)LvmTDt~NSd zyg^7VHXvs&uM^abgtlr7QgT-eD5vUTVOYoe6X}-BsO(pkdu0BCMoc_J-m55B-hqj} zN>CcPOAl_rlJs#+em+p~K|v-_UM$^0&QRt#-_hy!4>yB>%smbUW1Z^EXO6EI#Gh|V zJO3QGY{np=tn#MqUa#5jw)>ez!Gx!@y;ONy>z5>NYsq|Tsw+vtzGYOUqAxNTjAK(w zI2Dt+`~wSb0|6#DGLb6l4Rm175|8(_0Q2OrOk3AT2s!wbnJ1UY>w7qfOBENbj*)*4 zNd)O|S+NDu!Ql1y=by>|GyYS67auC8pUc`ao&Z)HlT7C)PLXx}{zbpvy=WQZj_8Wv zo#RWLxo)<~u3`L+I3F~5j8r*p*>C(;KvIQS01v|=2><{9 literal 0 HcmV?d00001 diff --git a/root_import_survey_default-section-edit.wgpkg b/root_import_survey_default-section-edit.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..0fb21ed35a30ff4de64956f0bc9b32c749ce9baf GIT binary patch literal 2099 zcmV-32+a2%iwFP!000001MOPtZ`(Ey&*%LWguiG5mRj-?@f;6b*N3q-$(D2v%v+#H zjLlY-G?I$r4*TDCM~V_{$%)g%*$UJ^VoN0Nj=y{G$m5f}-G5xy?RUF-d+_b{-13_g zA9v65yl%JEbvvE*9`QW4)!HL4WcQy;NS}jfe(DD^x|!c??Kn9%pB#RFA|EBSSN?Aw zsNel3??e(m&>VnbuhS{@jvUYqwEA0KyWL;Yf2ZB*?~zAAaaa0(@<8D2n9Sc_fEF4; zCfuLW1{sjw|M*(HN_mn}E*Ta0R&~Rk0jIvC;de`X+h{jbXKaXkA)jBT35V9FYD}C( zQPB)uCKdfgnq5Rp%xGASjp^bS7Kh0~5p~N3v5b>cuqwG^5mWwFP(BXV1)&`U zp83=2Kwk(d^Fdzn-A^Jo8V4_q$NTB?Gyd#Yq)$uk8IKfko+Pr#<~X;e$oLgqHbZ*p zXOY|&G>|Nb_i4yvIgp80EDUL^Mtk=A6Q0OKE>jJKHPb0ivUD6iM>>eC*D8leI!_}5 z-!NoXgoTGr&e|DG_#{?u1JHpubY`J5`g0sh%3~je^P?}FG@`zsgyLJ0k0dO& zalUq*A~NTvYJSdF-wd0;s6zV!Xd^##-64)9u|KDW4*qn=oXS}OqMaO{o;k!<&>TA7 zUS@G{D6)$=lgAhD05P1UMTf;{CJCYf!YkmMoGc3+a^*)EGz=wxaDL@;nEdFL!3a-C zBPyvOWS%rJx12*AZyX*Z>Cz0=zt@KrFi8I*qNAbY@E0n|rb(fc7R>MwKd7vVhKy3; zY<@v`RUbA@O-2(UTI-X>V!A&|t|*_;D4jHJp-)080?tyjk1DTH_lA=aTUi7t6%jH4 zcDbbCIjF>zZ`dp+z4E?%Z3y3t1=vgk zU>_hVcy5lRgJ9MGZV&*>wPwrG_ssHIoP zWke4rjTvRrnH-Rgn_fc@woOO(-VpuYW%HECWIH1%xNaHxbK)Ok9g0%lqUw{s>LkK@dZNa`FpUF8UlH<^_odpZ!Y(QFWFTMVT82{?F@d?u% zu&u>_=(KTz(uZg`K5SfU(L-vzHLc@PiQMeELxor7?ELL2?te(jBOa3 zz;B~V{Dw%>ge21>nxY7PTRR3vcxR! z1=}CZ3T%=BuUu8Cokj!>e}eZkB-Zk>zKL2=aXU_V_|m(XEk$#4(Xu!KhbCKyr+bbn zS$=%W5@PI2uWQD9Y9dc<*eMowlElR>a@Wbt8ms#oQJ&-ESw!gr$MLD&&0~^N_^R%W zNNv_^fy)Ys((sIJRn&E(MctpXTVZ&Ueb~6rNIWP66+w1Ab5b~Th4oDs6dq9|nI`%w z3&{7irT3J-RQr|zSnUGQhbSyy%N=bGYM4B@?H`$L7t4&4EGeWW+Q$VYYti{pRd3l{&Kx`M^W z{U3V*pEEeJH|f>w38z|ka96cuVh$C66%G&X1%|<$9KZ~E6x&~C_K0S`&UyzHzs};* zF?IqKw?{B|;BtSXH_M&9E5MDuK4UOCcnhqmMS$D`q0y>jDL=LfC-`jEQoZSK>PnM& zX};HXZ?!u&Q(Zy{Z%6np`+S@7T~S><|G>RzIb(BZV$N*v8BS`-D!`=Ca=X3CNl~YZ z2Qv9N5nOCgr!)G1Cl~chQL+wfkaXQKO#yHdPo-2iD<#&y$|5a`XOuGuI(@;D`3W31 z#k!Jf6?r2#SA=9)6?oM(i<*lUB}Em_kDy4U`u{>NUcMa<2C7Uu7@V1!@M?wq+02ip zo67TVl8{|8D7@y|?5bGS618a4nr7`!@r^STNz6R#6IAksGF-sQX_yw4!M#E~tV{!qPnluc$uHRhMBaH*T zOeJpM)aJ5dPKf{l>DVFBjwPqSPxBr%M4>6xJ!Ii5a}?n<8K$ z>YhlQk*Mn>t7x=(u6xkySoa}7iQrthc-@Qm=!2w3{YCpI{^4N$qVp?zHf`V?mVdtZ dXUDf^K9m29z-I(LBk<`W@GnZRf#Cow007C#`Sbt) literal 0 HcmV?d00001 diff --git a/www/extras/wobject/Survey/administersurvey.js b/www/extras/wobject/Survey/administersurvey.js index ea165c431..bf837e1fa 100644 --- a/www/extras/wobject/Survey/administersurvey.js +++ b/www/extras/wobject/Survey/administersurvey.js @@ -318,9 +318,11 @@ if (typeof Survey === "undefined") { var qs = params.questions; var s = params.section; sliders = []; + console.log("Can are farking at least get here?"); //What to show and where document.getElementById('survey').innerHTML = params.html; + console.log("How about farking here"); //var te = document.createElement('span'); //te.innerHTML = ""; //document.getElementById('survey').appendChild(te); @@ -333,7 +335,7 @@ if (typeof Survey === "undefined") { if (lastSection !== s.id || s.everyPageText === '1') { document.getElementById('headertext').style.display = 'block'; } - + console.log(s.questionsOnSectionPage + " wtf"); if (lastSection !== s.id && s.questionsOnSectionPage !== '1') { var span = document.createElement("div"); span.innerHTML = ""; @@ -500,4 +502,4 @@ if (typeof Survey === "undefined") { YAHOO.util.Event.onDOMReady(function(){ // Survey.Comm.setUrl('/' + document.getElementById('assetPath').value); Survey.Comm.callServer('', 'loadQuestions'); -}); \ No newline at end of file +});