1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
%%
%% 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'.
|