version 1.512.2.9, 2015/03/11 14:50:10
|
version 1.536, 2015/04/21 12:28:05
|
Line 270 sub homework_js {
|
Line 270 sub homework_js {
|
$jstimeout = 1000 * $timeout; |
$jstimeout = 1000 * $timeout; |
} |
} |
return &Apache::loncommon::resize_textarea_js(). |
return &Apache::loncommon::resize_textarea_js(). |
|
&Apache::loncommon::colorfuleditor_js(). |
&setmode_javascript(). |
&setmode_javascript(). |
<<"JS"; |
<<"JS"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
Line 316 var keypresshandled = 0;
|
Line 317 var keypresshandled = 0;
|
var postsubmit = '$postsubmit'; |
var postsubmit = '$postsubmit'; |
|
|
\$(document).ready(function(){ |
\$(document).ready(function(){ |
if (postsubmit != 'off') { |
if (postsubmit != 'off') { |
\$(document).keypress(function(event){ |
\$(document).keypress(function(event){ |
var keycode = (event.keyCode ? event.keyCode : event.which); |
var keycode = (event.keyCode ? event.keyCode : event.which); |
if ((keycode == '13') && (keypresshandled == 0)) { |
if ((keycode == '13') && (keypresshandled == 0)) { |
Line 751 sub problem_edit_action_button {
|
Line 752 sub problem_edit_action_button {
|
|
|
sub problem_edit_buttons { |
sub problem_edit_buttons { |
my ($mode)=@_; |
my ($mode)=@_; |
|
# Buttons that save |
|
my $result = '<div style="float:right">'; |
|
if ($mode eq 'editxml') { |
|
$result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML'); |
|
$result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View'); |
|
} else { |
|
$result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit'); |
|
$result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View'); |
|
} |
|
$result.="\n</div>\n"; |
# Buttons that do not save |
# Buttons that do not save |
my $result='<div class="LC_edit_problem_discards">'. |
$result .= '<div>'. |
&problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1); |
&problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1); |
if ($mode eq 'editxml') { |
if ($mode eq 'editxml') { |
$result.=&problem_edit_action_button('subedit','edit','e','Edit',1); |
$result.=&problem_edit_action_button('subedit','edit','e','Edit',1); |
Line 763 sub problem_edit_buttons {
|
Line 774 sub problem_edit_buttons {
|
$result.=&problem_edit_action_button('subundo','undo','u','Undo',1); |
$result.=&problem_edit_action_button('subundo','undo','u','Undo',1); |
} |
} |
$result.="\n</div>"; |
$result.="\n</div>"; |
# Buttons that save |
|
$result.='<div class="LC_edit_problem_saves">'; |
|
if ($mode eq 'editxml') { |
|
$result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML'); |
|
$result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View'); |
|
} else { |
|
$result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit'); |
|
$result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View'); |
|
} |
|
$result.="\n</div>\n"; |
|
return $result; |
return $result; |
} |
} |
|
|
sub problem_edit_header { |
sub problem_edit_header { |
return '<input type="hidden" name="submitted" value="edit" />'. |
my ($mode)=@_; |
|
my $return = '<input type="hidden" name="submitted" value="edit" />'. |
&remember_problem_state('edit').' |
&remember_problem_state('edit').' |
<div class="LC_edit_problem_header"> |
<div class="LC_edit_problem_header"> |
<div class="LC_edit_problem_header_title"> |
<div class="LC_edit_problem_header_title"> |
'.&mt('Problem Editing').&Apache::loncommon::help_open_menu('Problem Editing','Problem_Editor_XML_Index',5,'Authoring').' |
'.&mt('Problem Editing').$mode.&Apache::loncommon::help_open_menu('Problem Editing','Problem_Editor_XML_Index',5,'Authoring').' |
</div>'. |
</div><div class="LC_edit_actionbar" id="actionbar">'. |
'<input type="hidden" name="problemmode" value="saveedit" />'. |
'<input type="hidden" name="problemmode" value="saveedit" />'. |
&problem_edit_buttons().' |
&problem_edit_buttons(); |
<hr style="clear:both;" /> |
|
'.&Apache::lonxml::message_location().' |
$return .= '</div></div>' . &Apache::lonxml::message_location(); |
</div> |
$return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" /> |
'. |
<script type="text/javascript" src="/adm/codemirror/codemirror-compressed-colorful.js"></script>'; |
'<table id="LC_edit_problem_colorful" border="0" width="100%"><tr><td bgcolor="#F8F8F8">'; |
|
|
$return .= '<script type="text/javascript" src="/adm/jQuery/addons/jquery-scrolltofixed.js"></script> |
|
<script type="text/javascript"> |
|
// unless internet explorer |
|
if (!(window.navigator.appName == "Microsoft Internet Explorer" && (document.documentMode || document.compatMode))){ |
|
$(document).ready( |
|
function() { |
|
$(\'.LC_edit_actionbar\').scrollToFixed( |
|
{ |
|
fixed: function(){ |
|
//$(this).find(\'.LC_edit_actionbar\').css(\'height\', \'31px\'); |
|
$(this).find(\'.LC_edit_actionbar\'); |
|
} |
|
} |
|
); |
|
} |
|
); |
|
} |
|
</script> |
|
<table id="LC_edit_problem_colorful" border="0" width="100%"><tr><td bgcolor="#F8F8F8">'; |
|
return $return; |
} |
} |
|
|
sub problem_edit_footer { |
sub problem_edit_footer { |
|
my $resource = $env{'request.ambiguous'}; |
return '</td></tr></table><br /> |
return '</td></tr></table><br /> |
<div class="LC_edit_problem_footer"> |
<div class="LC_edit_problem_footer"> |
<hr />'. |
<hr />'. |
&problem_edit_buttons().' |
&problem_edit_buttons().' |
<hr style="clear:both;" /> |
<hr style="clear:both;" /> |
|
<script type="text/javascript"> |
|
restoreState("'.$resource.'"); |
|
restoreScrollPosition("'.$resource.'"); |
|
</script> |
</div> |
</div> |
'. |
'. |
"\n</form>\n".&Apache::loncommon::end_page(); |
"\n</form>\n".&Apache::loncommon::end_page(); |
Line 862 sub problem_web_to_edit_header {
|
Line 889 sub problem_web_to_edit_header {
|
".&mt("Problem Type:")." |
".&mt("Problem Type:")." |
<select name='problemtype'> |
<select name='problemtype'> |
<option value=''></option> |
<option value=''></option> |
".&option('exam' ,'problemtype').&mt("Exam Problem")."</option> |
".&option('exam' ,'problemtype').&mt("Bubblesheet Exam Problem")."</option> |
".&option('problem','problemtype').&mt("Homework Problem")."</option> |
".&option('problem','problemtype').&mt("Homework Problem")."</option> |
".&option('survey' ,'problemtype').&mt("Survey Question")."</option> |
".&option('survey' ,'problemtype').&mt("Survey Question")."</option> |
".&option('surveycred' ,'problemtype').&mt("Survey Question (with credit)")."</option> |
".&option('surveycred' ,'problemtype').&mt("Survey Question (with credit)")."</option> |
Line 982 sub initialize_storage {
|
Line 1009 sub initialize_storage {
|
} |
} |
%Apache::lonhomework::history= |
%Apache::lonhomework::history= |
&Apache::lonnet::tmprestore($namespace,'',$domain,$name); |
&Apache::lonnet::tmprestore($namespace,'',$domain,$name); |
my ($temp)=keys(%Apache::lonhomework::history); |
my ($temp)=keys(%Apache::lonhomework::history) ; |
&Apache::lonxml::debug("Return message of $temp"); |
&Apache::lonxml::debug("Return message of $temp"); |
} else { |
} else { |
%Apache::lonhomework::history= |
%Apache::lonhomework::history= |
Line 1005 sub initialize_storage {
|
Line 1032 sub initialize_storage {
|
&check_correctness_changes() is called in two circumstances |
&check_correctness_changes() is called in two circumstances |
in which the results hash is to be stored permanently, for |
in which the results hash is to be stored permanently, for |
grading triggered by a student's submission, where feedback on |
grading triggered by a student's submission, where feedback on |
correctness is to be provided to the student. |
correctness is to be provided to the student. |
|
|
1. Immediately prior to storing the results hash |
1. Immediately prior to storing the results hash |
|
|
To handle the case where a student's submission (and award) were |
To handle the case where a student's submission (and award) were |
stored after history was retrieved in &initialize_storage(), e.g., |
stored after history was retrieved in &initialize_storage(), e.g., |
if a student submitted answers in quick succession (e.g., from |
if a student submitted answers in quick succession (e.g., from |
multiple tabs). &Apache::inputtags::hidealldata() is called for |
multiple tabs). &Apache::inputtags::hidealldata() is called for |
any parts with out-of-order storage (i.e., correct then incorrect, |
any parts with out-of-order storage (i.e., correct then incorrect, |
where awarded >= 1 when correct). |
where awarded >= 1 when correct). |
Line 1021 sub initialize_storage {
|
Line 1048 sub initialize_storage {
|
To handle the case where lond on the student's homeserver returns |
To handle the case where lond on the student's homeserver returns |
delay:N -- where N is the number of transactions between the last |
delay:N -- where N is the number of transactions between the last |
retrieved in &initialize_storage() and the last stored immediately |
retrieved in &initialize_storage() and the last stored immediately |
before permanent storage of the current transaction via |
before permanent storage of the current transaction via |
lond::store_handler(). &Apache::grades::makehidden() is called |
lond::store_handler(). &Apache::grades::makehidden() is called |
for any parts with out-of-order storage (i.e., correct then incorrect, |
for any parts with out-of-order storage (i.e., correct then incorrect, |
where awarded >= 1 when correct). |
where awarded >= 1 when correct). |
|
|
Will call &store_aggregates() to increment totals for attempts, |
Will call &store_aggregates() to increment totals for attempts, |
students, and corrects, if running user has student role. |
students, and corrects, if running user has student role. |
|
|
=cut |
=cut |
|
|
|
|
Line 1149 sub finalize_storage {
|
Line 1176 sub finalize_storage {
|
=item check_correctness_changes() |
=item check_correctness_changes() |
|
|
For all parts for which current results contain a solved status |
For all parts for which current results contain a solved status |
of "incorrect_attempted", check if there was a transaction in which |
of "incorrect_attempted", check if there was a transaction in which |
solved was set to "correct_by_student" in the time since the last |
solved was set to "correct_by_student" in the time since the last |
transaction (retrieved when &initialize_storage() was called i.e., |
transaction (retrieved when &initialize_storage() was called i.e., |
when &start_problem() was called), unless: |
when &start_problem() was called), unless: |
(a) questiontype parameter is set to survey or anonymous survey (+/- credit) |
(a) questiontype parameter is set to survey or anonymous survey (+/- credit) |
(b) problemstatus is set to no or no_feedback_ever |
(b) problemstatus is set to no or no_feedback_ever |
If such a transaction exists, and did not occur after "reset status" |
If such a transaction exists, and did not occur after "reset status" |
by a user with grading privileges, then the current transaction is an |
by a user with grading privileges, then the current transaction is an |
example of an out-of-order transaction (i.e., incorrect occurring after |
example of an out-of-order transaction (i.e., incorrect occurring after |
correct). Accordingly, the current transaction should be hidden. |
correct). Accordingly, the current transaction should be hidden. |
Line 1283 sub checkout_msg {
|
Line 1310 sub checkout_msg {
|
'resource'=>'The resource needs to be checked out', |
'resource'=>'The resource needs to be checked out', |
'id_expln'=>'As a resource gets checked out, a unique timestamped ID is given to it, and a permanent record is left in the system.', |
'id_expln'=>'As a resource gets checked out, a unique timestamped ID is given to it, and a permanent record is left in the system.', |
'warning'=>'Checking out resources is subject to course policies, and may exclude future credit even if done erroneously.', |
'warning'=>'Checking out resources is subject to course policies, and may exclude future credit even if done erroneously.', |
'checkout'=>'Check out Exam for Viewing', |
'checkout'=>'Check out Bubblesheet Exam for Viewing', |
'checkout?'=>'Check out Exam?'); |
'checkout?'=>'Check out Bubblesheet Exam?'); |
my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'}); |
my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'}); |
return (<<ENDCHECKOUT); |
return (<<ENDCHECKOUT); |
<h2>$lt{'resource'}</h2> |
<h2>$lt{'resource'}</h2> |
Line 1361 sub init_problem_globals {
|
Line 1388 sub init_problem_globals {
|
@Apache::inputtags::importlist = (); |
@Apache::inputtags::importlist = (); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous_version=(); |
@Apache::inputtags::previous_version=(); |
|
$Apache::inputtags::leniency=''; |
$Apache::structuretags::printanswer='No'; |
$Apache::structuretags::printanswer='No'; |
@Apache::structuretags::whileconds=(); |
@Apache::structuretags::whileconds=(); |
@Apache::structuretags::whilebody=(); |
@Apache::structuretags::whilebody=(); |
Line 1376 sub reset_problem_globals {
|
Line 1404 sub reset_problem_globals {
|
undef(%Apache::lonhomework::history); |
undef(%Apache::lonhomework::history); |
undef(%Apache::lonhomework::results); |
undef(%Apache::lonhomework::results); |
undef($Apache::inputtags::part); |
undef($Apache::inputtags::part); |
|
undef($Apache::inputtags::leniency); |
if ($type eq 'Task') { |
if ($type eq 'Task') { |
undef($Apache::inputtags::slot_name); |
undef($Apache::inputtags::slot_name); |
} elsif ($type eq 'problem') { |
} elsif ($type eq 'problem') { |
Line 2579 sub start_part {
|
Line 2608 sub start_part {
|
my $id= &Apache::lonxml::get_id($parstack,$safeeval); |
my $id= &Apache::lonxml::get_id($parstack,$safeeval); |
$Apache::inputtags::part=$id; |
$Apache::inputtags::part=$id; |
push(@Apache::inputtags::partlist,$id); |
push(@Apache::inputtags::partlist,$id); |
|
$Apache::inputtags::leniency=''; |
@Apache::inputtags::response=(); |
@Apache::inputtags::response=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous_version=(); |
@Apache::inputtags::previous_version=(); |
Line 2744 sub end_part {
|
Line 2774 sub end_part {
|
} |
} |
pop @Apache::inputtags::status; |
pop @Apache::inputtags::status; |
$Apache::inputtags::part=''; |
$Apache::inputtags::part=''; |
|
$Apache::inputtags::leniency=''; |
$Apache::lonhomework::type = $Apache::lonhomework::default_type; |
$Apache::lonhomework::type = $Apache::lonhomework::default_type; |
return $result; |
return $result; |
} |
} |
Line 2851 sub start_problemtype {
|
Line 2882 sub start_problemtype {
|
['hide','Hide']] |
['hide','Hide']] |
,$token); |
,$token); |
$result .=&Apache::edit::checked_arg('When used as type(s):','for', |
$result .=&Apache::edit::checked_arg('When used as type(s):','for', |
[ ['exam','Exam/Quiz Problem'], |
[ ['exam','Bubblesheet Exam/Quiz Problem'], |
['survey','Survey'], |
['survey','Survey'], |
['surveycred','Survey (with credit)'], |
['surveycred','Survey (with credit)'], |
['anonsurvey','Anonymous Survey'], |
['anonsurvey','Anonymous Survey'], |
Line 2894 sub end_startouttext {
|
Line 2925 sub end_startouttext {
|
if ($target eq 'edit') { |
if ($target eq 'edit') { |
my $areaid = 'homework_edit_'.$Apache::lonxml::curdepth; |
my $areaid = 'homework_edit_'.$Apache::lonxml::curdepth; |
$text=&Apache::lonxml::get_all_text("endouttext",$parser,$style); |
$text=&Apache::lonxml::get_all_text("endouttext",$parser,$style); |
$result.=&Apache::edit::start_table($token)."<tr><td>".&mt('Text Block')."</td>" |
$result.=&Apache::edit::start_table($token)."<tr><td>".&Apache::loncommon::insert_folding_button() |
|
." ".&mt('Text Block')."</td>" |
.'<td><span class="LC_nobreak">'.&mt('Delete?').' ' |
.'<td><span class="LC_nobreak">'.&mt('Delete?').' ' |
.&Apache::edit::deletelist($target,$token) |
.&Apache::edit::deletelist($target,$token) |
.'</span></td>' |
.'</span></td>' |