add xqa interface to staff_problem_info, make staff_debug a modal
window, add xqa modal window, add xqa_key to course metadata
This commit is contained in:
@@ -69,14 +69,14 @@ def grade_histogram(module_id):
|
||||
return grades
|
||||
|
||||
|
||||
def add_histogram(get_html, module):
|
||||
def add_histogram(get_html, module, user):
|
||||
"""
|
||||
Updates the supplied module with a new get_html function that wraps
|
||||
the output of the old get_html function with additional information
|
||||
for admin users only, including a histogram of student answers and the
|
||||
definition of the xmodule
|
||||
|
||||
Does nothing if module is a SequenceModule
|
||||
Does nothing if module is a SequenceModule or a VerticalModule.
|
||||
"""
|
||||
@wraps(get_html)
|
||||
def _get_html():
|
||||
@@ -104,8 +104,12 @@ def add_histogram(get_html, module):
|
||||
|
||||
staff_context = {'definition': module.definition.get('data'),
|
||||
'metadata': json.dumps(module.metadata, indent=4),
|
||||
'element_id': module.location.html_id(),
|
||||
'location': module.location,
|
||||
'xqa_key': module.metadata.get('xqa_key',''),
|
||||
'category': str(module.__class__.__name__),
|
||||
'element_id': module.location.html_id().replace('-','_'),
|
||||
'edit_link': edit_link,
|
||||
'user': user,
|
||||
'histogram': json.dumps(histogram),
|
||||
'render_histogram': render_histogram,
|
||||
'module_content': get_html()}
|
||||
|
||||
@@ -319,7 +319,8 @@ class XModuleDescriptor(Plugin, HTMLSnippet):
|
||||
# A list of metadata that this module can inherit from its parent module
|
||||
inheritable_metadata = (
|
||||
'graded', 'start', 'due', 'graceperiod', 'showanswer', 'rerandomize',
|
||||
|
||||
# TODO (ichuang): used for Fall 2012 xqa server access
|
||||
'xqa_key',
|
||||
# TODO: This is used by the XMLModuleStore to provide for locations for
|
||||
# static files, and will need to be removed when that code is removed
|
||||
'data_dir'
|
||||
|
||||
@@ -80,6 +80,7 @@ class XmlDescriptor(XModuleDescriptor):
|
||||
metadata_attributes = ('format', 'graceperiod', 'showanswer', 'rerandomize',
|
||||
'start', 'due', 'graded', 'display_name', 'url_name', 'hide_from_toc',
|
||||
'ispublic', # if True, then course is listed for all users; see
|
||||
'xqa_key', # for xqaa server access
|
||||
# VS[compat] Remove once unused.
|
||||
'name', 'slug')
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@ def get_module(user, request, location, student_module_cache, position=None):
|
||||
|
||||
if settings.MITX_FEATURES.get('DISPLAY_HISTOGRAMS_TO_STAFF'):
|
||||
if has_staff_access_to_course(user, module.location.course):
|
||||
module.get_html = add_histogram(module.get_html, module)
|
||||
module.get_html = add_histogram(module.get_html, module, user)
|
||||
|
||||
return module
|
||||
|
||||
|
||||
@@ -1,15 +1,121 @@
|
||||
${module_content}
|
||||
%if edit_link:
|
||||
<div><a href="${edit_link}">Edit</a></div>
|
||||
<div><a href="${edit_link}">Edit</a> / <a href="#${element_id}_xqa-modal" onclick="getlog_${element_id}()" id="${element_id}_xqa_log">QA</a></div>
|
||||
% endif
|
||||
<div><a href="javascript:void(0)" onclick="javascript:$('#${element_id}_debug').slideToggle()">Staff Debug Info</a></div>
|
||||
<div><a href="#${element_id}_debug" id="${element_id}_trig">Staff Debug Info</a></div>
|
||||
|
||||
<span style="display:none" id="${element_id}_debug">
|
||||
<div class="staff_info">
|
||||
<section id="${element_id}_xqa-modal" class="modal xqa-modal" style="width:80%; left:20%; height:80%; overflow:auto" >
|
||||
<div class="inner-wrapper">
|
||||
<header>
|
||||
<h2>edX Content Quality Assessment</h2>
|
||||
</header>
|
||||
|
||||
<form id="${element_id}_xqa_form" class="xqa_form">
|
||||
<label>Comment</label>
|
||||
<input id="${element_id}_xqa_entry" type="text" placeholder="comment">
|
||||
<label>Tag</label>
|
||||
<span style="color:black;vertical-align: -10pt">Optional tag (eg "done" or "broken"): </span>
|
||||
<input id="${element_id}_xqa_tag" type="text" placeholder="tag" style="width:80px;display:inline">
|
||||
<div class="submit">
|
||||
<button name="submit" type="submit">Add comment</button>
|
||||
</div>
|
||||
<hr>
|
||||
<div id="${element_id}_xqa_log_data"></div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="modal staff-modal" id="${element_id}_debug" style="width:80%; left:20%; height:80%; overflow:auto;" >
|
||||
<div class="inner-wrapper" style="color:black">
|
||||
<header>
|
||||
<h2>Staff Debug</h2>
|
||||
</header>
|
||||
<div class="staff_info">
|
||||
location = ${location | h}
|
||||
github = <a href="${edit_link}">${edit_link | h}</a>
|
||||
definition = <pre>${definition | h}</pre>
|
||||
metadata = ${metadata | h}
|
||||
</div>
|
||||
%if render_histogram:
|
||||
<div id="histogram_${element_id}" class="histogram" data-histogram="${histogram}"></div>
|
||||
%endif
|
||||
</span>
|
||||
category = ${category | h}
|
||||
</div>
|
||||
%if render_histogram:
|
||||
<div id="histogram_${element_id}" class="histogram" data-histogram="${histogram}"></div>
|
||||
%endif
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div id="${element_id}_setup"></div>
|
||||
|
||||
## leanModal needs to be included here otherwise this breaks when in a <vertical>
|
||||
<script type="text/javascript" src="/static/js/vendor/jquery.leanModal.min.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
function setup_debug_${element_id}(){
|
||||
$('#${element_id}_trig').leanModal();
|
||||
$('#${element_id}_xqa_log').leanModal();
|
||||
$('#${element_id}_xqa_form').submit(sendlog_${element_id});
|
||||
}
|
||||
|
||||
setup_debug_${element_id}();
|
||||
|
||||
function sendlog_${element_id}(){
|
||||
|
||||
var xqaLog = {authkey: '${xqa_key}',
|
||||
location: '${location}',
|
||||
%if edit_link:
|
||||
giturl: '${edit_link}',
|
||||
%endif
|
||||
category : '${category}',
|
||||
username : '${user.username}',
|
||||
return : 'query',
|
||||
format : 'html',
|
||||
email : '${user.email}',
|
||||
tag:$('#${element_id}_xqa_tag').val(),
|
||||
entry: $('#${element_id}_xqa_entry').val()};
|
||||
|
||||
$.ajax({
|
||||
url: 'http://zion.ike.net:9001/log',
|
||||
type: 'GET',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(xqaLog),
|
||||
crossDomain: true,
|
||||
dataType: 'jsonp',
|
||||
timeout : 1000,
|
||||
success: function(result) {
|
||||
$('#${element_id}_xqa_log_data').html(result);
|
||||
},
|
||||
error: function() {
|
||||
alert('Error: cannot connect to XQA server');
|
||||
console.log('error!');
|
||||
}
|
||||
});
|
||||
return false;
|
||||
};
|
||||
|
||||
function getlog_${element_id}(){
|
||||
|
||||
var xqaQuery = {authkey: '${xqa_key}',
|
||||
location: '${location}',
|
||||
format: 'html'};
|
||||
|
||||
$.ajax({
|
||||
url: 'http://zion.ike.net:9001/query',
|
||||
type: 'GET',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(xqaQuery),
|
||||
crossDomain: true,
|
||||
dataType: 'jsonp',
|
||||
timeout : 1000,
|
||||
success: function(result) {
|
||||
$('#${element_id}_xqa_log_data').html(result);
|
||||
},
|
||||
error: function() {
|
||||
alert('Error: cannot connect to XQA server');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user