%% %% 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/02/20 v1.0 Applies PIN security to quizzes] \newif\ifPINshowScore \PINshowScorefalse \DeclareOption{showscore}{\PINshowScoretrue} \DeclareOption{!showscore}{\PINshowScorefalse} \ProcessOptions\relax \RequirePackage{exerquiz}[2021/02/17] \RequirePackage{eq-save}[2021/02/17] \def\showScoreOn{\PINshowScoretrue} \def\showScoreOff{\PINshowScorefalse} \flJSStr[noquotes]{\SaveAndSendMsg}{Success! % Now save and send to the instructor} \begin{defineJS*}[\makeesc\@\makecmt\%]{\postSubmitQuiz} // 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 = "Success! Now save and send to instructor"; } }@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\eQzBtnActns{\ifPINshowScore\else var bDisplaySilent=true;\r\fi \eQzBtnActnsSave } \let\CorrBtnActionsJSSave\CorrBtnActionsJS \newif\ifPINSecurity \PINSecurityfalse \def\usePINCorrBtn{\PINSecuritytrue \let\CorrBtnActionsJS\CorrBtnActionsPwdJS} \def\restoreCorrBtn{\PINshowScoretrue\PINSecurityfalse \let\CorrBtnActionsJS\CorrBtnActionsJSSave} \def\classPINVar#1{\def\PINclassPV{#1}} \let\PINclassPV\@empty \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); var _bQzResults = ( _resp ==_PinCode ); } else var _bQzResults = ( eval(userPIN) ==_PinCode ); if (_bQzResults) { RightWrong=eval("RightWrong.!currQuiz"); ProbDist=eval("ProbDist.!currQuiz"); correctQuiz("!currQuiz",3); DisplayQuizResults("!currQuiz",3,3); if (typeof correctSumryTbl == "function") correctSumryTbl("!currQuiz",3); } else { console.println("Something went wrong, \\ you entered an incorrect PIN Id, \\ or the class PIN Id (\\\\classPINVar) was incorrect or undefined"); console.show(); } \end{defineJS*} \def\declPINId#1#2{\def\numPINId{#1}\def\hashPINId{#2}} \@onlypreamble\declPINId \declPINId{5243}{02JRVZdRgYgCA-Rtje8VkD} % PIN Id, hash-str \begin{insDLJS}{pin}{Pin Code} var _PinCode = "\hashPINId"; \end{insDLJS} \endinput %% %% End of file `eq-pin2corr.sty'.