version 1.727, 2014/11/21 17:59:11
|
version 1.736, 2015/06/09 21:22:48
|
Line 406 sub cleanRecord {
|
Line 406 sub cleanRecord {
|
$env{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : ''; |
$env{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : ''; |
$env{'form.'.$symb} = 1; # so that we don't have to read it from disk for multiple sub of the same prob. |
$env{'form.'.$symb} = 1; # so that we don't have to read it from disk for multiple sub of the same prob. |
} |
} |
return '<br /><br /><blockquote><tt>'.&keywords_highlight(&HTML::Entities::encode($answer, '"<>&')).'</tt></blockquote>'; |
return '<br /><br /><blockquote><tt>'.&keywords_highlight($answer).'</tt></blockquote>'; |
|
|
} elsif ( $response eq 'organic') { |
} elsif ( $response eq 'organic') { |
my $result=&mt('Smile representation: [_1]', |
my $result=&mt('Smile representation: [_1]', |
Line 857 sub listStudents {
|
Line 857 sub listStudents {
|
my $res_error; |
my $res_error; |
my ($partlist,$handgrade,$responseType) = &response_type($symb,\$res_error); |
my ($partlist,$handgrade,$responseType) = &response_type($symb,\$res_error); |
|
|
my %lt = &Apache::lonlocal::texthash ( |
my %js_lt = &Apache::lonlocal::texthash ( |
'multiple' => 'Please select a student or group of students before clicking on the Next button.', |
'multiple' => 'Please select a student or group of students before clicking on the Next button.', |
'single' => 'Please select the student before clicking on the Next button.', |
'single' => 'Please select the student before clicking on the Next button.', |
); |
); |
|
&js_escape(\%js_lt); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<LISTJAVASCRIPT)); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<LISTJAVASCRIPT)); |
function checkSelect(checkBox) { |
function checkSelect(checkBox) { |
var ctr=0; |
var ctr=0; |
Line 871 sub listStudents {
|
Line 872 sub listStudents {
|
ctr++; |
ctr++; |
} |
} |
} |
} |
sense = '$lt{'multiple'}'; |
sense = '$js_lt{'multiple'}'; |
} else { |
} else { |
if (checkBox.checked) { |
if (checkBox.checked) { |
ctr = 1; |
ctr = 1; |
} |
} |
sense = '$lt{'single'}'; |
sense = '$js_lt{'single'}'; |
} |
} |
if (ctr == 0) { |
if (ctr == 0) { |
alert(sense); |
alert(sense); |
Line 1177 sub processGroup {
|
Line 1178 sub processGroup {
|
#--- Javascript to handle the submission page functionality --- |
#--- Javascript to handle the submission page functionality --- |
sub sub_page_js { |
sub sub_page_js { |
my $request = shift; |
my $request = shift; |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
|
&js_escape(\$alertmsg); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<SUBJAVASCRIPT)); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<SUBJAVASCRIPT)); |
function updateRadio(formname,id,weight) { |
function updateRadio(formname,id,weight) { |
var gradeBox = formname["GD_BOX"+id]; |
var gradeBox = formname["GD_BOX"+id]; |
Line 1422 INNERJS
|
Line 1424 INNERJS
|
|
|
my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); |
my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); |
$docopen=~s/^document\.//; |
$docopen=~s/^document\.//; |
my %lt = &Apache::lonlocal::texthash( |
my %js_lt = &Apache::lonlocal::texthash( |
keyw => 'Keywords list, separated by a space. Add/delete to list if desired.', |
keyw => 'Keywords list, separated by a space. Add/delete to list if desired.', |
plse => 'Please select a word or group of words from document and then click this link.', |
plse => 'Please select a word or group of words from document and then click this link.', |
adds => 'Add selection to keyword list? Edit if desired.', |
adds => 'Add selection to keyword list? Edit if desired.', |
|
col1 => 'red', |
|
col2 => 'green', |
|
col3 => 'blue', |
|
siz1 => 'normal', |
|
siz2 => '+1', |
|
siz3 => '+2', |
|
sty1 => 'normal', |
|
sty2 => 'italic', |
|
sty3 => 'bold', |
|
); |
|
my %html_js_lt = &Apache::lonlocal::texthash( |
comp => 'Compose Message for: ', |
comp => 'Compose Message for: ', |
incl => 'Include', |
incl => 'Include', |
type => 'Type', |
type => 'Type', |
Line 1438 INNERJS
|
Line 1451 INNERJS
|
txtc => 'Text Color', |
txtc => 'Text Color', |
font => 'Font Size', |
font => 'Font Size', |
fnst => 'Font Style', |
fnst => 'Font Style', |
col1 => 'red', |
|
col2 => 'green', |
|
col3 => 'blue', |
|
siz1 => 'normal', |
|
siz2 => '+1', |
|
siz3 => '+2', |
|
sty1 => 'normal', |
|
sty2 => 'italic', |
|
sty3 => 'bold', |
|
); |
); |
|
&js_escape(\%js_lt); |
|
&html_escape(\%html_js_lt); |
|
&js_escape(\%html_js_lt); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<SUBJAVASCRIPT)); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<SUBJAVASCRIPT)); |
|
|
//===================== Show list of keywords ==================== |
//===================== Show list of keywords ==================== |
function keywords(formname) { |
function keywords(formname) { |
var nret = prompt("$lt{'keyw'}",formname.keywords.value); |
var nret = prompt("$js_lt{'keyw'}",formname.keywords.value); |
if (nret==null) return; |
if (nret==null) return; |
formname.keywords.value = nret; |
formname.keywords.value = nret; |
|
|
Line 1479 INNERJS
|
Line 1486 INNERJS
|
else return; |
else return; |
var cleantxt = txt.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g')," "); |
var cleantxt = txt.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g')," "); |
if (cleantxt=="") { |
if (cleantxt=="") { |
alert("$lt{'plse'}"); |
alert("$js_lt{'plse'}"); |
return; |
return; |
} |
} |
var nret = prompt("$lt{'adds'}",cleantxt); |
var nret = prompt("$js_lt{'adds'}",cleantxt); |
if (nret==null) return; |
if (nret==null) return; |
document.SCORE.keywords.value = document.SCORE.keywords.value+" "+nret; |
document.SCORE.keywords.value = document.SCORE.keywords.value+" "+nret; |
if (document.SCORE.keywords.value != "") { |
if (document.SCORE.keywords.value != "") { |
Line 1562 INNERJS
|
Line 1569 INNERJS
|
|
|
pDoc.write("<form action=\\"inactive\\" name=\\"msgcenter\\">"); |
pDoc.write("<form action=\\"inactive\\" name=\\"msgcenter\\">"); |
pDoc.write("<input value=\\""+usrctr+"\\" name=\\"usrctr\\" type=\\"hidden\\">"); |
pDoc.write("<input value=\\""+usrctr+"\\" name=\\"usrctr\\" type=\\"hidden\\">"); |
pDoc.write("<h1> $lt{'comp'}\"+fullname+\"<\\/h1>"); |
pDoc.write("<h1> $html_js_lt{'comp'}\"+fullname+\"<\\/h1>"); |
|
|
pDoc.write('<table style="border:1px solid black;"><tr>'); |
pDoc.write('<table style="border:1px solid black;"><tr>'); |
pDoc.write("<td><b>$lt{'incl'}<\\/b><\\/td><td><b>$lt{'type'}<\\/b><\\/td><td><b>$lt{'mesa'}<\\/td><\\/tr>"); |
pDoc.write("<td><b>$html_js_lt{'incl'}<\\/b><\\/td><td><b>$html_js_lt{'type'}<\\/b><\\/td><td><b>$html_js_lt{'mesa'}<\\/td><\\/tr>"); |
} |
} |
function displaySubject(msg,shwsel) { |
function displaySubject(msg,shwsel) { |
pDoc = pWin.document; |
pDoc = pWin.document; |
pDoc.write("<tr>"); |
pDoc.write("<tr>"); |
pDoc.write("<td align=\\"center\\"><input name=\\"subchk\\" type=\\"checkbox\\"" +shwsel+"><\\/td>"); |
pDoc.write("<td align=\\"center\\"><input name=\\"subchk\\" type=\\"checkbox\\"" +shwsel+"><\\/td>"); |
pDoc.write("<td>$lt{'subj'}<\\/td>"); |
pDoc.write("<td>$html_js_lt{'subj'}<\\/td>"); |
pDoc.write("<td><input name=\\"msgsub\\" type=\\"text\\" value=\\""+msg+"\\"size=\\"40\\" maxlength=\\"80\\"><\\/td><\\/tr>"); |
pDoc.write("<td><input name=\\"msgsub\\" type=\\"text\\" value=\\""+msg+"\\"size=\\"40\\" maxlength=\\"80\\"><\\/td><\\/tr>"); |
} |
} |
|
|
Line 1587 INNERJS
|
Line 1594 INNERJS
|
pDoc = pWin.document; |
pDoc = pWin.document; |
pDoc.write("<tr>"); |
pDoc.write("<tr>"); |
pDoc.write("<td align=\\"center\\"><input name=\\"newmsgchk\\" type=\\"checkbox\\"" +shwsel+"><\\/td>"); |
pDoc.write("<td align=\\"center\\"><input name=\\"newmsgchk\\" type=\\"checkbox\\"" +shwsel+"><\\/td>"); |
pDoc.write("<td align=\\"center\\">$lt{'new'}<\\/td>"); |
pDoc.write("<td align=\\"center\\">$html_js_lt{'new'}<\\/td>"); |
pDoc.write("<td><textarea name=\\"newmsg\\" cols=\\"60\\" rows=\\"3\\" onchange=\\"javascript:this.form.newmsgchk.checked=true\\" >"+newmsg+"<\\/textarea><\\/td><\\/tr>"); |
pDoc.write("<td><textarea name=\\"newmsg\\" cols=\\"60\\" rows=\\"3\\" onchange=\\"javascript:this.form.newmsgchk.checked=true\\" >"+newmsg+"<\\/textarea><\\/td><\\/tr>"); |
} |
} |
|
|
Line 1595 INNERJS
|
Line 1602 INNERJS
|
pDoc = pWin.document; |
pDoc = pWin.document; |
//pDoc.write("<\\/table>"); |
//pDoc.write("<\\/table>"); |
pDoc.write("<\\/td><\\/tr><\\/table> "); |
pDoc.write("<\\/td><\\/tr><\\/table> "); |
pDoc.write("<input type=\\"button\\" value=\\"$lt{'save'}\\" onclick=\\"javascript:checkInput()\\"> "); |
pDoc.write("<input type=\\"button\\" value=\\"$html_js_lt{'save'}\\" onclick=\\"javascript:checkInput()\\"> "); |
pDoc.write("<input type=\\"button\\" value=\\"$lt{'canc'}\\" onclick=\\"self.close()\\"><br /><br />"); |
pDoc.write("<input type=\\"button\\" value=\\"$html_js_lt{'canc'}\\" onclick=\\"self.close()\\"><br /><br />"); |
pDoc.write("<\\/form>"); |
pDoc.write("<\\/form>"); |
pDoc.write('$end_page_msg_central'); |
pDoc.write('$end_page_msg_central'); |
pDoc.close(); |
pDoc.close(); |
Line 1610 INNERJS
|
Line 1617 INNERJS
|
var redsel = ""; |
var redsel = ""; |
var grnsel = ""; |
var grnsel = ""; |
var blusel = ""; |
var blusel = ""; |
var txtcol1 = "$lt{'col1'}"; |
var txtcol1 = "$js_lt{'col1'}"; |
var txtcol2 = "$lt{'col2'}"; |
var txtcol2 = "$js_lt{'col2'}"; |
var txtcol3 = "$lt{'col3'}"; |
var txtcol3 = "$js_lt{'col3'}"; |
var txtsiz1 = "$lt{'siz1'}"; |
var txtsiz1 = "$js_lt{'siz1'}"; |
var txtsiz2 = "$lt{'siz2'}"; |
var txtsiz2 = "$js_lt{'siz2'}"; |
var txtsiz3 = "$lt{'siz3'}"; |
var txtsiz3 = "$js_lt{'siz3'}"; |
var txtsty1 = "$lt{'sty1'}"; |
var txtsty1 = "$js_lt{'sty1'}"; |
var txtsty2 = "$lt{'sty2'}"; |
var txtsty2 = "$js_lt{'sty2'}"; |
var txtsty3 = "$lt{'sty3'}"; |
var txtsty3 = "$js_lt{'sty3'}"; |
if (kwclr=="red") {var redsel="checked='checked'"}; |
if (kwclr=="red") {var redsel="checked='checked'"}; |
if (kwclr=="green") {var grnsel="checked='checked'"}; |
if (kwclr=="green") {var grnsel="checked='checked'"}; |
if (kwclr=="blue") {var blusel="checked='checked'"}; |
if (kwclr=="blue") {var blusel="checked='checked'"}; |
Line 1655 INNERJS
|
Line 1662 INNERJS
|
hDoc.$docopen; |
hDoc.$docopen; |
hDoc.write('$start_page_highlight_central'); |
hDoc.write('$start_page_highlight_central'); |
hDoc.write("<form action=\\"inactive\\" name=\\"hlCenter\\">"); |
hDoc.write("<form action=\\"inactive\\" name=\\"hlCenter\\">"); |
hDoc.write("<h1>$lt{'kehi'}<\\/h1>"); |
hDoc.write("<h1>$html_js_lt{'kehi'}<\\/h1>"); |
|
|
hDoc.write('<table border="0" width="100%"><tr style="background-color:#A1D676">'); |
hDoc.write('<table border="0" width="100%"><tr style="background-color:#A1D676">'); |
hDoc.write("<th>$lt{'txtc'}<\\/th><th>$lt{'font'}<\\/th><th>$lt{'fnst'}<\\/th><\\/tr>"); |
hDoc.write("<th>$html_js_lt{'txtc'}<\\/th><th>$html_js_lt{'font'}<\\/th><th>$html_js_lt{'fnst'}<\\/th><\\/tr>"); |
} |
} |
|
|
function highlightbody(clrval,clrtxt,clrsel,szval,sztxt,szsel,syval,sytxt,sysel) { |
function highlightbody(clrval,clrtxt,clrsel,szval,sztxt,szsel,syval,sytxt,sysel) { |
Line 1676 INNERJS
|
Line 1683 INNERJS
|
function highlightend() { |
function highlightend() { |
var hDoc = hwdWin.document; |
var hDoc = hwdWin.document; |
hDoc.write("<\\/table><br \\/>"); |
hDoc.write("<\\/table><br \\/>"); |
hDoc.write("<input type=\\"button\\" value=\\"$lt{'save'}\\" onclick=\\"javascript:updateChoice(1)\\" \\/> "); |
hDoc.write("<input type=\\"button\\" value=\\"$html_js_lt{'save'}\\" onclick=\\"javascript:updateChoice(1)\\" \\/> "); |
hDoc.write("<input type=\\"button\\" value=\\"$lt{'canc'}\\" onclick=\\"self.close()\\" \\/><br /><br />"); |
hDoc.write("<input type=\\"button\\" value=\\"$html_js_lt{'canc'}\\" onclick=\\"self.close()\\" \\/><br /><br />"); |
hDoc.write("<\\/form>"); |
hDoc.write("<\\/form>"); |
hDoc.write('$end_page_highlight_central'); |
hDoc.write('$end_page_highlight_central'); |
hDoc.close(); |
hDoc.close(); |
Line 1811 sub handback_box {
|
Line 1818 sub handback_box {
|
if ($file =~ /\/portfolio\//) { |
if ($file =~ /\/portfolio\//) { |
$file_counter++; |
$file_counter++; |
my ($file_path, $file_disp) = ($file =~ m|(.+/)(.+)$|); |
my ($file_path, $file_disp) = ($file =~ m|(.+/)(.+)$|); |
my ($name,$version,$ext) = &file_name_version_ext($file_disp); |
my ($name,$version,$ext) = &Apache::lonnet::file_name_version_ext($file_disp); |
$file_disp = "$name.$ext"; |
$file_disp = "$name.$ext"; |
$file = $file_path.$file_disp; |
$file = $file_path.$file_disp; |
$result.=&mt('Return commented version of [_1] to student.', |
$result.=&mt('Return commented version of [_1] to student.', |
Line 2543 sub get_last_submission {
|
Line 2550 sub get_last_submission {
|
} |
} |
unless ($hide) { |
unless ($hide) { |
if (@randomize) { |
if (@randomize) { |
foreach my $id (@hidden) { |
foreach my $id (@randomize) { |
if ($key =~ /^\Q$id\E/) { |
if ($key =~ /^\Q$id\E/) { |
$hide = 'rand'; |
$hide = 'rand'; |
last; |
last; |
Line 3020 sub saveHandGrade {
|
Line 3027 sub saveHandGrade {
|
my $aggregateflag = 0; |
my $aggregateflag = 0; |
if ($env{'form.HIDE'.$newflg}) { |
if ($env{'form.HIDE'.$newflg}) { |
my ($version,$parts) = split(/:/,$env{'form.HIDE'.$newflg},2); |
my ($version,$parts) = split(/:/,$env{'form.HIDE'.$newflg},2); |
my $numchgs = &makehidden($version,$parts,\%record,$symb,$domain,$stuname); |
my $numchgs = &makehidden($version,$parts,\%record,$symb,$domain,$stuname,1); |
$totchg += $numchgs; |
$totchg += $numchgs; |
} |
} |
my @parts = split(/:/,$env{'form.partlist'.$newflg}); |
my @parts = split(/:/,$env{'form.partlist'.$newflg}); |
Line 3129 sub saveHandGrade {
|
Line 3136 sub saveHandGrade {
|
} |
} |
|
|
sub makehidden { |
sub makehidden { |
my ($version,$parts,$record,$symb,$domain,$stuname) = @_; |
my ($version,$parts,$record,$symb,$domain,$stuname,$tolog) = @_; |
return unless (ref($record) eq 'HASH'); |
return unless (ref($record) eq 'HASH'); |
my %modified; |
my %modified; |
my $numchanged = 0; |
my $numchanged = 0; |
Line 3150 sub makehidden {
|
Line 3157 sub makehidden {
|
} |
} |
if (keys(%modified)) { |
if (keys(%modified)) { |
if (&Apache::lonnet::putstore($env{'request.course.id'},$symb,$version,\%modified, |
if (&Apache::lonnet::putstore($env{'request.course.id'},$symb,$version,\%modified, |
$domain,$stuname) eq 'ok') { |
$domain,$stuname,$tolog) eq 'ok') { |
$numchanged ++; |
$numchanged ++; |
} |
} |
} |
} |
Line 3199 sub handback_files {
|
Line 3206 sub handback_files {
|
my ($directory,$answer_file) = |
my ($directory,$answer_file) = |
($env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$counter} =~ /^(.*?)([^\/]*)$/); |
($env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$counter} =~ /^(.*?)([^\/]*)$/); |
my ($answer_name,$answer_ver,$answer_ext) = |
my ($answer_name,$answer_ver,$answer_ext) = |
&file_name_version_ext($answer_file); |
&Apache::lonnet::file_name_version_ext($answer_file); |
my ($portfolio_path) = ($directory =~ /^.+$stuname\/portfolio(.*)/); |
my ($portfolio_path) = ($directory =~ /^.+$stuname\/portfolio(.*)/); |
my $getpropath = 1; |
my $getpropath = 1; |
my ($dir_list,$listerror) = |
my ($dir_list,$listerror) = |
&Apache::lonnet::dirlist($portfolio_root.$portfolio_path, |
&Apache::lonnet::dirlist($portfolio_root.$portfolio_path, |
$domain,$stuname,$getpropath); |
$domain,$stuname,$getpropath); |
my $version = &get_next_version($answer_name,$answer_ext,$dir_list); |
my $version = &Apache::lonnet::get_next_version($answer_name,$answer_ext,$dir_list); |
# fix filename |
# fix filename |
my ($save_file_name) = (($directory.$answer_name.".$version.".$answer_ext) =~ /^.+\/${stuname}\/(.*)/); |
my ($save_file_name) = (($directory.$answer_name.".$version.".$answer_ext) =~ /^.+\/${stuname}\/(.*)/); |
my $result=&Apache::lonnet::finishuserfileupload($stuname,$domain, |
my $result=&Apache::lonnet::finishuserfileupload($stuname,$domain, |
Line 3354 sub version_portfiles {
|
Line 3361 sub version_portfiles {
|
my $version_parts = join('|',@$v_flag); |
my $version_parts = join('|',@$v_flag); |
my @returned_keys; |
my @returned_keys; |
my $parts = join('|', @$parts_graded); |
my $parts = join('|', @$parts_graded); |
my $portfolio_root = '/userfiles/portfolio'; |
|
foreach my $key (keys(%$record)) { |
foreach my $key (keys(%$record)) { |
my $new_portfiles; |
my $new_portfiles; |
if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) { |
if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) { |
my @versioned_portfiles; |
my @versioned_portfiles; |
my @portfiles = split(/\s*,\s*/,$$record{$key}); |
my @portfiles = split(/\s*,\s*/,$$record{$key}); |
foreach my $file (@portfiles) { |
if (@portfiles) { |
&Apache::lonnet::unmark_as_readonly($domain,$stu_name,[$symb,$env{'request.course.id'}],$file); |
&Apache::lonnet::portfiles_versioning($symb,$domain,$stu_name,\@portfiles, |
my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*)$/); |
\@versioned_portfiles); |
my ($answer_name,$answer_ver,$answer_ext) = |
|
&file_name_version_ext($answer_file); |
|
my $getpropath = 1; |
|
my ($dir_list,$listerror) = |
|
&Apache::lonnet::dirlist($portfolio_root.$directory,$domain, |
|
$stu_name,$getpropath); |
|
my $version = &get_next_version($answer_name,$answer_ext,$dir_list); |
|
my $new_answer = &version_selected_portfile($domain, $stu_name, $directory, $answer_file, $version); |
|
if ($new_answer ne 'problem getting file') { |
|
push(@versioned_portfiles, $directory.$new_answer); |
|
&Apache::lonnet::mark_as_readonly($domain,$stu_name, |
|
[$directory.$new_answer], |
|
[$symb,$env{'request.course.id'},'graded']); |
|
} |
|
} |
} |
$$record{$key} = join(',',@versioned_portfiles); |
$$record{$key} = join(',',@versioned_portfiles); |
push(@returned_keys,$key); |
push(@returned_keys,$key); |
Line 3385 sub version_portfiles {
|
Line 3377 sub version_portfiles {
|
return (@returned_keys); |
return (@returned_keys); |
} |
} |
|
|
sub get_next_version { |
|
my ($answer_name, $answer_ext, $dir_list) = @_; |
|
my $version; |
|
if (ref($dir_list) eq 'ARRAY') { |
|
foreach my $row (@{$dir_list}) { |
|
my ($file) = split(/\&/,$row,2); |
|
my ($file_name,$file_version,$file_ext) = |
|
&file_name_version_ext($file); |
|
if (($file_name eq $answer_name) && |
|
($file_ext eq $answer_ext)) { |
|
# gets here if filename and extension match, |
|
# regardless of version |
|
if ($file_version ne '') { |
|
# a versioned file is found so save it for later |
|
if ($file_version > $version) { |
|
$version = $file_version; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
$version ++; |
|
return($version); |
|
} |
|
|
|
sub version_selected_portfile { |
|
my ($domain,$stu_name,$directory,$file_name,$version) = @_; |
|
my ($answer_name,$answer_ver,$answer_ext) = |
|
&file_name_version_ext($file_name); |
|
my $new_answer; |
|
$env{'form.copy'} = &Apache::lonnet::getfile("/uploaded/$domain/$stu_name/portfolio$directory$file_name"); |
|
if($env{'form.copy'} eq '-1') { |
|
$new_answer = 'problem getting file'; |
|
} else { |
|
$new_answer = $answer_name.'.'.$version.'.'.$answer_ext; |
|
my $copy_result = &Apache::lonnet::finishuserfileupload( |
|
$stu_name,$domain,'copy', |
|
'/portfolio'.$directory.$new_answer); |
|
} |
|
return ($new_answer); |
|
} |
|
|
|
sub file_name_version_ext { |
|
my ($file)=@_; |
|
my @file_parts = split(/\./, $file); |
|
my ($name,$version,$ext); |
|
if (@file_parts > 1) { |
|
$ext=pop(@file_parts); |
|
if (@file_parts > 1 && $file_parts[-1] =~ /^\d+$/) { |
|
$version=pop(@file_parts); |
|
} |
|
$name=join('.',@file_parts); |
|
} else { |
|
$name=join('.',@file_parts); |
|
} |
|
return($name,$version,$ext); |
|
} |
|
|
|
#-------------------------------------------------------------------------------------- |
#-------------------------------------------------------------------------------------- |
# |
# |
#-------------------------- Next few routines handles grading by section or whole class |
#-------------------------- Next few routines handles grading by section or whole class |
Line 3452 sub viewgrades_js {
|
Line 3386 sub viewgrades_js {
|
my ($request) = shift; |
my ($request) = shift; |
|
|
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
|
&js_escape(\$alertmsg); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<VIEWJAVASCRIPT)); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<VIEWJAVASCRIPT)); |
function writePoint(partid,weight,point) { |
function writePoint(partid,weight,point) { |
var radioButton = document.classgrade["RADVAL_"+partid]; |
var radioButton = document.classgrade["RADVAL_"+partid]; |
Line 4101 sub split_part_type {
|
Line 4036 sub split_part_type {
|
sub csvupload_javascript_reverse_associate { |
sub csvupload_javascript_reverse_associate { |
my $error1=&mt('You need to specify the username or the student/employee ID'); |
my $error1=&mt('You need to specify the username or the student/employee ID'); |
my $error2=&mt('You need to specify at least one grading field'); |
my $error2=&mt('You need to specify at least one grading field'); |
|
&js_escape(\$error1); |
|
&js_escape(\$error2); |
return(<<ENDPICK); |
return(<<ENDPICK); |
function verify(vf) { |
function verify(vf) { |
var foundsomething=0; |
var foundsomething=0; |
Line 4141 ENDPICK
|
Line 4078 ENDPICK
|
sub csvupload_javascript_forward_associate { |
sub csvupload_javascript_forward_associate { |
my $error1=&mt('You need to specify the username or the student/employee ID'); |
my $error1=&mt('You need to specify the username or the student/employee ID'); |
my $error2=&mt('You need to specify at least one grading field'); |
my $error2=&mt('You need to specify at least one grading field'); |
|
&js_escape(\$error1); |
|
&js_escape(\$error2); |
return(<<ENDPICK); |
return(<<ENDPICK); |
function verify(vf) { |
function verify(vf) { |
var foundsomething=0; |
var foundsomething=0; |
Line 4249 ENDPICK
|
Line 4188 ENDPICK
|
|
|
sub checkforfile_js { |
sub checkforfile_js { |
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
|
&js_escape(\$alertmsg); |
my $result = &Apache::lonhtmlcommon::scripttag(<<CSVFORMJS); |
my $result = &Apache::lonhtmlcommon::scripttag(<<CSVFORMJS); |
function checkUpload(formname) { |
function checkUpload(formname) { |
if (formname.upfile.value == "") { |
if (formname.upfile.value == "") { |
Line 4518 sub pickStudentPage {
|
Line 4458 sub pickStudentPage {
|
my ($request,$symb) = @_; |
my ($request,$symb) = @_; |
|
|
my $alertmsg = &mt('Please select the student you wish to grade.'); |
my $alertmsg = &mt('Please select the student you wish to grade.'); |
|
&js_escape(\$alertmsg); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<LISTJAVASCRIPT)); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<LISTJAVASCRIPT)); |
|
|
function checkPickOne(formname) { |
function checkPickOne(formname) { |
Line 4879 sub displaySubByDates {
|
Line 4820 sub displaySubByDates {
|
|
|
my $interaction; |
my $interaction; |
my $no_increment = 1; |
my $no_increment = 1; |
my %lastrndseed; |
my (%lastrndseed,%lasttype); |
for ($version=1;$version<=$$record{'version'};$version++) { |
for ($version=1;$version<=$$record{'version'};$version++) { |
my $timestamp = |
my $timestamp = |
&Apache::lonlocal::locallocaltime($$record{$version.':timestamp'}); |
&Apache::lonlocal::locallocaltime($$record{$version.':timestamp'}); |
Line 4937 sub displaySubByDates {
|
Line 4878 sub displaySubByDates {
|
} else { |
} else { |
$displaySub[0].=&mt('Trial: [_1]', |
$displaySub[0].=&mt('Trial: [_1]', |
$$record{"$where.$partid.tries"}); |
$$record{"$where.$partid.tries"}); |
if ($rndseed || $lastrndseed{$partid}) { |
if (($rndseed ne '') && ($lastrndseed{$partid} ne '')) { |
if ($rndseed ne $lastrndseed{$partid}) { |
if (($rndseed ne $lastrndseed{$partid}) && |
|
(($type eq 'randomizetry') || ($lasttype{$partid} eq 'randomizetry'))) { |
$newvariation = ' ('.&mt('New variation this try').')'; |
$newvariation = ' ('.&mt('New variation this try').')'; |
} |
} |
} |
} |
$lastrndseed{$partid} = $rndseed; |
$lastrndseed{$partid} = $rndseed; |
|
$lasttype{$partid} = $type; |
} |
} |
my $responseType=($isTask ? 'Task' |
my $responseType=($isTask ? 'Task' |
: $responseType->{$partid}->{$responseId}); |
: $responseType->{$partid}->{$responseId}); |
Line 5064 sub updateGradeByPage {
|
Line 5007 sub updateGradeByPage {
|
if ($env{'form.HIDE'.$prob}) { |
if ($env{'form.HIDE'.$prob}) { |
my %record = &Apache::lonnet::restore($symbx,$env{'request.course.id'},$udom,$uname); |
my %record = &Apache::lonnet::restore($symbx,$env{'request.course.id'},$udom,$uname); |
my ($version,$parts) = split(/:/,$env{'form.HIDE'.$prob},2); |
my ($version,$parts) = split(/:/,$env{'form.HIDE'.$prob},2); |
my $numchgs = &makehidden($version,$parts,\%record,$symbx,$udom,$uname); |
my $numchgs = &makehidden($version,$parts,\%record,$symbx,$udom,$uname,1); |
$hideflag += $numchgs; |
$hideflag += $numchgs; |
} |
} |
foreach my $partid (@{$parts}) { |
foreach my $partid (@{$parts}) { |
Line 5553 sub scantron_selectphase {
|
Line 5496 sub scantron_selectphase {
|
my $default_form_data=&defaultFormData($symb); |
my $default_form_data=&defaultFormData($symb); |
my $cdom= $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom= $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cnum= $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum= $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
|
&js_escape(\$alertmsg); |
$r->print(&Apache::lonhtmlcommon::scripttag(' |
$r->print(&Apache::lonhtmlcommon::scripttag(' |
function checkUpload(formname) { |
function checkUpload(formname) { |
if (formname.upfile.value == "") { |
if (formname.upfile.value == "") { |
alert("'.&mt('Please use the browse button to select a file from your local directory.').'"); |
alert("'.$alertmsg.'"); |
return false; |
return false; |
} |
} |
formname.submit(); |
formname.submit(); |
Line 5787 sub get_scantron_config {
|
Line 5732 sub get_scantron_config {
|
=item username_to_idmap |
=item username_to_idmap |
|
|
creates a hash keyed by student/employee ID with values of the corresponding |
creates a hash keyed by student/employee ID with values of the corresponding |
student username:domain. |
student username:domain. If a single ID occurs for more than one student, |
|
the status of the student is checked, and if Active, the value in the hash |
|
will be set to the Active student. |
|
|
Arguments: |
Arguments: |
|
|
Line 5805 sub username_to_idmap {
|
Line 5752 sub username_to_idmap {
|
my ($classlist)= @_; |
my ($classlist)= @_; |
my %idmap; |
my %idmap; |
foreach my $student (keys(%$classlist)) { |
foreach my $student (keys(%$classlist)) { |
$idmap{$classlist->{$student}->[&Apache::loncoursedata::CL_ID]}= |
my $id = $classlist->{$student}->[&Apache::loncoursedata::CL_ID]; |
$student; |
unless ($id eq '') { |
|
if (!exists($idmap{$id})) { |
|
$idmap{$id} = $student; |
|
} else { |
|
my $status = $classlist->{$student}->[&Apache::loncoursedata::CL_STATUS]; |
|
if ($status eq 'Active') { |
|
$idmap{$id} = $student; |
|
} |
|
} |
|
} |
} |
} |
return %idmap; |
return %idmap; |
} |
} |
Line 7532 sub verify_bubbles_checked {
|
Line 7488 sub verify_bubbles_checked {
|
my (@ansnums) = @_; |
my (@ansnums) = @_; |
my $ansnumstr = join('","',@ansnums); |
my $ansnumstr = join('","',@ansnums); |
my $warning = &mt("A bubble or 'No bubble' selection has not been made for one or more lines."); |
my $warning = &mt("A bubble or 'No bubble' selection has not been made for one or more lines."); |
|
&js_escape(\$warning); |
my $output = &Apache::lonhtmlcommon::scripttag((<<ENDSCRIPT)); |
my $output = &Apache::lonhtmlcommon::scripttag((<<ENDSCRIPT)); |
function verify_bubble_radio(form) { |
function verify_bubble_radio(form) { |
var ansnumArray = new Array ("$ansnumstr"); |
var ansnumArray = new Array ("$ansnumstr"); |
Line 8722 sub scantron_upload_scantron_data {
|
Line 8679 sub scantron_upload_scantron_data {
|
(' 'x2).&mt('(shows course personnel)'); |
(' 'x2).&mt('(shows course personnel)'); |
my $default_form_data=&defaultFormData($symb); |
my $default_form_data=&defaultFormData($symb); |
my $nofile_alert = &mt('Please use the browse button to select a file from your local directory.'); |
my $nofile_alert = &mt('Please use the browse button to select a file from your local directory.'); |
|
&js_escape(\$nofile_alert); |
my $nocourseid_alert = &mt("Please use the 'Select Course' link to open a separate window where you can search for a course to which a file can be uploaded."); |
my $nocourseid_alert = &mt("Please use the 'Select Course' link to open a separate window where you can search for a course to which a file can be uploaded."); |
|
&js_escape(\$nocourseid_alert); |
$r->print(&Apache::lonhtmlcommon::scripttag(' |
$r->print(&Apache::lonhtmlcommon::scripttag(' |
function checkUpload(formname) { |
function checkUpload(formname) { |
if (formname.upfile.value == "") { |
if (formname.upfile.value == "") { |