%% %% This is file `eq-pin2corr.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% eq-pin2corr.dtx (with options: `copyright,package') %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% eq-pin2corr.sty package, %% %% Copyright (C) 2021 D. P. Story %% %% dpstory@uakron.edu dpstory@acrotex.net %% %% %% %% This program can redistributed and/or modified under %% %% the terms of the LaTeX Project Public License %% %% Distributed from CTAN archives in directory %% %% macros/latex/base/lppl.txt; either version 1.2 of the %% %% License, or (at your option) any later version. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{eq-pin2corr} [2021/05/29 v2.0 Applies PIN security to quizzes] \newif\ifPINshowScore \PINshowScorefalse \DeclareOption{showscore}{\PINshowScoretrue} \DeclareOption{!showscore}{\PINshowScorefalse} \ProcessOptions\relax \RequirePackage{exerquiz}[2021/05/21] \RequirePackage{eq-save}[2021/04/27] \def\showScoreOn{\PINshowScoretrue} \def\showScoreOff{\PINshowScorefalse} \flJSStr[noquotes]{\SaveAndSendMsg}{Success! % Now save and send to the instructor} \begin{defineJS*}[\makeesc\@\makecmt\%]{\postSubmitQuizPIN} // Begin post submit quiz code% @ifPINSecurity% @ifPINshowScore@else var f = this.getField("ScoreField.@oField"); if ( f!=null ) { f.textSize=0; f.value = "@SaveAndSendMsg"; } else { var f = this.getField("PointsField.@oField"); if (f!=null) { f.textSize=0; f.value = "@SaveAndSendMsg"; } }@fi@fi oRecordOfQuizData["ScoreData.@oField"]=% [1*Score,1*NQuestions,1*ptScore,1*NPointTotal]; oRecordOfQuizData["RightWrong.@oField"]=% eval(RightWrong.toSource()); oRecordOfQuizData["ProbDist.@oField"]=% eval(ProbDist.toSource()); cntCorrectResponses(); \end{defineJS*} \let\eQzBtnActnsSave\eQzBtnActns \def\makeEndQuizPIN{% \let\eQzBtnActns\eQzBtnActnsPIN \let\postSubmitQuiz\postSubmitQuizPIN } \def\eQzBtnActnsPIN{\ifPINshowScore\else var bDisplaySilent=true;\r\fi \eQzBtnActnsSave } \let\CorrBtnActionsJSSave\CorrBtnActionsJS \newif\ifPINSecurity \PINSecurityfalse \def\usePINCorrBtn{\PINSecuritytrue \makeEndQuizPIN % dps5-25 \let\CorrBtnActionsJS\CorrBtnActionsPwdJS} \def\restoreCorrBtn{\PINshowScoretrue\PINSecurityfalse \restoreEndQuiz % dps5-25 \let\CorrBtnActionsJS\CorrBtnActionsJSSave} \def\classPINVar#1{\def\PINclassPV{#1}} \let\PINclassPV\@empty \newif\ifFreezeQuiz\FreezeQuizfalse \def\FreezeThisQuiz{\FreezeQuiztrue} \def\FreezeThisQuizNot{\FreezeQuizfalse} \begin{defineJS*}[\makeesc\|\makecmt\%]{\CorrBtnActionsPwdJS} |ifx|PINclassPV|@empty% var userPIN = "";|else% var userPIN = "|PINclassPV";|fi if (userPIN == "") userPIN = undefined; try { if ( typeof eval(userPIN) == "undefined") userPIN = undefined; } catch(e) { userPIN = undefined; } if (typeof userPIN == "undefined") { var resp=app.response({ cQuestion: "Enter the PIN number", cTitle: "View Answers", bPassword: true }); var _resp=Collab.hashString(resp); if (resp != null) var _bQzResults = ( _resp ==_PinCode ); } else var _bQzResults = ( eval(userPIN) ==_PinCode ); if (_bQzResults) { if (typeof oRecordOfQuizData["ScoreData.|currQuiz"]!="undefined") { RightWrong=eval("RightWrong.|currQuiz"); ProbDist=eval("ProbDist.|currQuiz"); correctQuiz("|currQuiz",3); DisplayQuizResults("|currQuiz",3,3); if (typeof correctSumryTbl == "function") correctSumryTbl("|currQuiz",3);% |ifFreezeQuiz var aFrzExt=new Array("obj.","grpobj.","essay.",% "beginQuiz.","endQuiz."); for (var i=0; i