Commit d8b22ff1 by ichuang

add hidden attribute to textline and textbox inputtypes, for javascript problems

parent 1f29403a
...@@ -182,7 +182,8 @@ def textline(element, value, status, render_template, msg=""): ...@@ -182,7 +182,8 @@ def textline(element, value, status, render_template, msg=""):
raise Exception(msg) raise Exception(msg)
count = int(eid.split('_')[-2])-1 # HACK count = int(eid.split('_')[-2])-1 # HACK
size = element.get('size') size = element.get('size')
context = {'id':eid, 'value':value, 'state':status, 'count':count, 'size': size, 'msg': msg} hidden = element.get('hidden','') # if specified, then textline is hidden and id is stored in div of name given by hidden
context = {'id':eid, 'value':value, 'state':status, 'count':count, 'size': size, 'msg': msg, 'hidden': hidden}
html = render_template("textinput.html", context) html = render_template("textinput.html", context)
return etree.XML(html) return etree.XML(html)
...@@ -203,8 +204,9 @@ def textline_dynamath(element, value, status, render_template, msg=''): ...@@ -203,8 +204,9 @@ def textline_dynamath(element, value, status, render_template, msg=''):
eid=element.get('id') eid=element.get('id')
count = int(eid.split('_')[-2])-1 # HACK count = int(eid.split('_')[-2])-1 # HACK
size = element.get('size') size = element.get('size')
hidden = element.get('hidden','') # if specified, then textline is hidden and id is stored in div of name given by hidden
context = {'id':eid, 'value':value, 'state':status, 'count':count, 'size': size, context = {'id':eid, 'value':value, 'state':status, 'count':count, 'size': size,
'msg':msg, 'msg':msg, 'hidden' : hidden,
} }
html = render_template("textinput_dynamath.html", context) html = render_template("textinput_dynamath.html", context)
return etree.XML(html) return etree.XML(html)
...@@ -224,11 +226,13 @@ def textbox(element, value, status, render_template, msg=''): ...@@ -224,11 +226,13 @@ def textbox(element, value, status, render_template, msg=''):
rows = element.get('rows') or '30' rows = element.get('rows') or '30'
cols = element.get('cols') or '80' cols = element.get('cols') or '80'
mode = element.get('mode') or 'python' # mode for CodeMirror, eg "python" or "xml" mode = element.get('mode') or 'python' # mode for CodeMirror, eg "python" or "xml"
hidden = element.get('hidden','') # if specified, then textline is hidden and id is stored in div of name given by hidden
linenumbers = element.get('linenumbers') # for CodeMirror linenumbers = element.get('linenumbers') # for CodeMirror
if not value: value = element.text # if no student input yet, then use the default input given by the problem if not value: value = element.text # if no student input yet, then use the default input given by the problem
context = {'id':eid, 'value':value, 'state':status, 'count':count, 'size': size, 'msg':msg, context = {'id':eid, 'value':value, 'state':status, 'count':count, 'size': size, 'msg':msg,
'mode':mode, 'linenumbers':linenumbers, 'mode':mode, 'linenumbers':linenumbers,
'rows':rows, 'cols':cols, 'rows':rows, 'cols':cols,
'hidden' : hidden,
} }
html = render_template("textbox.html", context) html = render_template("textbox.html", context)
try: try:
......
<section id="textbox_${id}" class="textbox"> <section id="textbox_${id}" class="textbox">
<textarea rows="${rows}" cols="${cols}" name="input_${id}" id="input_${id}">${value|h}</textarea> <textarea rows="${rows}" cols="${cols}" name="input_${id}" id="input_${id}"
% if hidden:
style="display:none;"
% endif
>${value|h}</textarea>
<span id="answer_${id}"></span> <span id="answer_${id}"></span>
...@@ -12,6 +16,9 @@ ...@@ -12,6 +16,9 @@
% elif state == 'incomplete': % elif state == 'incomplete':
<span class="incorrect" id="status_${id}"></span> <span class="incorrect" id="status_${id}"></span>
% endif % endif
% if hidden:
<div style="display:none;" name="${hidden}" inputid="input_${id}" />
% endif
<br/> <br/>
<span class="debug">(${state})</span> <span class="debug">(${state})</span>
<br/> <br/>
......
...@@ -8,11 +8,17 @@ ...@@ -8,11 +8,17 @@
% elif state == 'incomplete': % elif state == 'incomplete':
<div class="incorrect" id="status_${id}"> <div class="incorrect" id="status_${id}">
% endif % endif
% if hidden:
<div style="display:none;" name="${hidden}" inputid="input_${id}" />
% endif
<input type="text" name="input_${id}" id="input_${id}" value="${value}" <input type="text" name="input_${id}" id="input_${id}" value="${value}"
% if size: % if size:
size="${size}" size="${size}"
% endif % endif
% if hidden:
style="display:none;"
% endif
/> />
<p class="status"> <p class="status">
......
...@@ -11,8 +11,15 @@ ...@@ -11,8 +11,15 @@
% elif state == 'incomplete': % elif state == 'incomplete':
<div class="incorrect" id="status_${id}"> <div class="incorrect" id="status_${id}">
% endif % endif
% if hidden:
<div style="display:none;" name="${hidden}" inputid="input_${id}" />
% endif
<input type="text" name="input_${id}" id="input_${id}" value="${value}" class="math" size="${size if size else ''}" /> <input type="text" name="input_${id}" id="input_${id}" value="${value}" class="math" size="${size if size else ''}"
% if hidden:
style="display:none;"
% endif
/>
<p class="status"> <p class="status">
% if state == 'unsubmitted': % if state == 'unsubmitted':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment