+ % elif status == 'incomplete':
+
+ % endif
+
+
+
+
+
+
+ % if status == 'unsubmitted':
+ unanswered
+ % elif status == 'correct':
+ correct
+ % elif status == 'incorrect':
+ incorrect
+ % elif status == 'incomplete':
+ incomplete
+ % endif
+
+
+
+ % if status in ['unsubmitted', 'correct', 'incorrect', 'incomplete']:
+
+% endif
+
diff --git a/common/static/applets/capa/Protex.jar b/common/static/applets/capa/Protex.jar
new file mode 100644
index 0000000000..2c6a819ec5
Binary files /dev/null and b/common/static/applets/capa/Protex.jar differ
diff --git a/common/static/js/capa/design-protein-2d.js b/common/static/js/capa/design-protein-2d.js
new file mode 100644
index 0000000000..e4e37995d3
--- /dev/null
+++ b/common/static/js/capa/design-protein-2d.js
@@ -0,0 +1,27 @@
+(function () {
+ var timeout = 1000;
+
+ function initializeApplet(applet) {
+ console.log("Initializing " + applet);
+ waitForApplet(applet);
+ }
+
+ function waitForApplet(applet) {
+ if (applet.isActive && applet.isActive()) {
+ console.log("Applet is ready.");
+ var answerStr = applet.checkAnswer();
+ console.log(answerStr);
+ var input = $('.designprotein2dinput input');
+ console.log(input);
+ input.val(answerStr);
+ } else if (timeout > 30 * 1000) {
+ console.error("Applet did not load on time.");
+ } else {
+ console.log("Waiting for applet...");
+ setTimeout(function() { waitForApplet(applet); }, timeout);
+ }
+ }
+
+ var applets = $('.designprotein2dinput object');
+ applets.each(function(i, el) { initializeApplet(el); });
+}).call(this);