version 1.109, 2001/08/10 15:49:46
|
version 1.130, 2001/09/26 14:43:50
|
Line 13
|
Line 13
|
# 6/12,6/13 H. K. Ng |
# 6/12,6/13 H. K. Ng |
# 6/16 Gerd Kortemeyer |
# 6/16 Gerd Kortemeyer |
# 7/27 H. K. Ng |
# 7/27 H. K. Ng |
# 8/7,8/9,8/10 Gerd Kortemeyer |
# 8/7,8/9,8/10,8/11,8/15,8/16,8/17,8/18,8/20,8/23,8/24 Gerd Kortemeyer |
|
# Guy Albertelli |
|
# 9/26 Gerd Kortemeyer |
|
|
|
|
package Apache::lonxml; |
package Apache::lonxml; |
use vars |
use vars |
Line 113 sub xmlend {
|
Line 116 sub xmlend {
|
'<address><hr /><h2>Course Discussion of Resource</h2>'; |
'<address><hr /><h2>Course Discussion of Resource</h2>'; |
my $idx; |
my $idx; |
for ($idx=1;$idx<=$contrib{'version'};$idx++) { |
for ($idx=1;$idx<=$contrib{'version'};$idx++) { |
my $message=$contrib{$idx.':message'}; |
my $hidden=($contrib{'hidden'}=~/\.$idx\./); |
$message=~s/\n/\<br \/\>/g; |
unless (($hidden) && (!$seeid)) { |
|
my $message=$contrib{$idx.':message'}; |
|
$message=~s/\n/\<br \/\>/g; |
|
if ($message) { |
|
if ($hidden) { |
|
$message='<font color="#888888">'.$message.'</font>'; |
|
} |
my $sender='Anonymous'; |
my $sender='Anonymous'; |
if ((!$contrib{$idx.':anonymous'}) || ($seeid)) { |
if ((!$contrib{$idx.':anonymous'}) || ($seeid)) { |
$sender=$contrib{$idx.':sendername'}.' at '. |
$sender=$contrib{$idx.':sendername'}.' at '. |
$contrib{$idx.':senderdomain'}; |
$contrib{$idx.':senderdomain'}; |
if ($contrib{$idx.':anonymous'}) { |
if ($contrib{$idx.':anonymous'}) { |
$sender.=' (anonymous)'; |
$sender.=' (anonymous)'; |
|
} |
|
if ($seeid) { |
|
if ($hidden) { |
|
$sender.=' <a href="/adm/feedback?unhide='. |
|
$symb.':::'.$idx.'">Make Visible</a>'; |
|
} else { |
|
$sender.=' <a href="/adm/feedback?hide='. |
|
$symb.':::'.$idx.'">Hide</a>'; |
|
} |
} |
} |
} |
} |
$discussion.='<p><b>'.$sender.'</b> ('. |
$discussion.='<p><b>'.$sender.'</b> ('. |
localtime($contrib{$idx.':timestamp'}). |
localtime($contrib{$idx.':timestamp'}). |
'):<blockquote>'.$message. |
'):<blockquote>'.$message. |
'</blockquote></p>'; |
'</blockquote></p>'; |
|
} |
|
} |
} |
} |
$discussion.='</address>'; |
$discussion.='</address>'; |
} |
} |
Line 135 sub xmlend {
|
Line 155 sub xmlend {
|
return $discussion.'</html>'; |
return $discussion.'</html>'; |
} |
} |
|
|
|
sub tokeninputfield { |
|
my $defhost=$Apache::lonnet::perlvar{'lonHostID'}; |
|
$defhost=~tr/a-z/A-Z/; |
|
return (<<ENDINPUTFIELD) |
|
<script> |
|
function updatetoken() { |
|
var comp=new Array; |
|
var barcode=unescape(document.tokeninput.barcode.value); |
|
comp=barcode.split('*'); |
|
if (typeof(comp[0])!="undefined") { |
|
document.tokeninput.codeone.value=comp[0]; |
|
} |
|
if (typeof(comp[1])!="undefined") { |
|
document.tokeninput.codetwo.value=comp[1]; |
|
} |
|
if (typeof(comp[2])!="undefined") { |
|
comp[2]=comp[2].toUpperCase(); |
|
document.tokeninput.codethree.value=comp[2]; |
|
} |
|
document.tokeninput.barcode.value=''; |
|
} |
|
</script> |
|
<form method="post" name="tokeninput"> |
|
<table border="2" bgcolor="#FFFFBB"> |
|
<tr><th>DocID Checkin</th></tr> |
|
<tr><td> |
|
<table> |
|
<tr> |
|
<td>Scan in Barcode</td> |
|
<td><input type="text" size="22" name="barcode" |
|
onChange="updatetoken()"/></td> |
|
</tr> |
|
<tr><td><i>or</i> Type in DocID</td> |
|
<td> |
|
<input type="text" size="5" name="codeone" /> |
|
<b><font size="+2">*</font></b> |
|
<input type="text" size="5" name="codetwo" /> |
|
<b><font size="+2">*</font></b> |
|
<input type="text" size="10" name="codethree" value="$defhost" |
|
onChange="this.value=this.value.toUpperCase()" /> |
|
</td></tr> |
|
</table> |
|
</td></tr> |
|
<tr><td><input type="submit" value="Check in DocID" /></td></tr> |
|
</table> |
|
</form> |
|
ENDINPUTFIELD |
|
} |
|
|
|
sub maketoken { |
|
my ($symb,$tuname,$tudom,$tcrsid)=@_; |
|
unless ($symb) { |
|
$symb=&Apache::lonnet::symbread(); |
|
} |
|
unless ($tuname) { |
|
$tuname=$ENV{'user.name'}; |
|
$tudom=$ENV{'user.domain'}; |
|
$tcrsid=$ENV{'request.course.id'}; |
|
} |
|
|
|
return &Apache::lonnet::checkout($symb,$tuname,$tudom,$tcrsid); |
|
} |
|
|
|
sub printtokenheader { |
|
my ($target,$token,$symb,$tuname,$tudom,$tcrsid)=@_; |
|
unless ($token) { return ''; } |
|
|
|
unless ($symb) { |
|
$symb=&Apache::lonnet::symbread(); |
|
} |
|
unless ($tuname) { |
|
$tuname=$ENV{'user.name'}; |
|
$tudom=$ENV{'user.domain'}; |
|
$tcrsid=$ENV{'request.course.id'}; |
|
} |
|
|
|
my %reply=&Apache::lonnet::get('environment', |
|
['firstname','middlename','lastname','generation'], |
|
$tudom,$tuname); |
|
my $plainname=$reply{'firstname'}.' '. |
|
$reply{'middlename'}.' '. |
|
$reply{'lastname'}.' '. |
|
$reply{'generation'}; |
|
|
|
if ($target eq 'web') { |
|
return |
|
'<img align="right" src="/cgi-bin/barcode.gif?encode='.$token.'" />'. |
|
'Checked out for '.$plainname. |
|
'<br />User: '.$tuname.' at '.$tudom. |
|
'<br />CourseID: '.$tcrsid. |
|
'<br />DocID: '.$token. |
|
'<br />Time: '.localtime().'<hr />'; |
|
} else { |
|
return $token; |
|
} |
|
} |
|
|
sub fontsettings() { |
sub fontsettings() { |
my $headerstring=''; |
my $headerstring=''; |
if (($ENV{'browser.os'} eq 'mac') && (!$ENV{'browser.mathml'})) { |
if (($ENV{'browser.os'} eq 'mac') && (!$ENV{'browser.mathml'})) { |
Line 146 sub fontsettings() {
|
Line 263 sub fontsettings() {
|
|
|
sub registerurl { |
sub registerurl { |
my $forcereg=shift; |
my $forcereg=shift; |
if ($Apache::lonxml::registered) { return ''; } |
if ($ENV{'request.publicaccess'}) { |
|
return |
|
'<script>function LONCAPAreg(){} function LONCAPAstale(){}</script>'; |
|
} |
|
if ($Apache::lonxml::registered && !$forcereg) { return ''; } |
$Apache::lonxml::registered=1; |
$Apache::lonxml::registered=1; |
if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) { |
if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) { |
my $hwkadd=''; |
my $hwkadd=''; |
Line 209 ENDPARM
|
Line 330 ENDPARM
|
menu=window.open("","LONCAPAmenu"); |
menu=window.open("","LONCAPAmenu"); |
menu.currentStale=1; |
menu.currentStale=1; |
menu.switchbutton |
menu.switchbutton |
(3,1,'reload.gif','return','location','go(currentURL)'); |
(3,1,'reload.gif','return','location','go(currentURL)'); |
menu.clearbut(7,1); |
menu.clearbut(7,1); |
menu.clearbut(7,2); |
menu.clearbut(7,2); |
menu.clearbut(7,3); |
menu.clearbut(7,3); |
Line 294 sub xmlparse {
|
Line 415 sub xmlparse {
|
|
|
my $finaloutput = &inner_xmlparse($target,\@stack,\@parstack,\@pars, |
my $finaloutput = &inner_xmlparse($target,\@stack,\@parstack,\@pars, |
$safeeval,\%style_for_target); |
$safeeval,\%style_for_target); |
|
if ($ENV{'request.uri'}) { |
|
&writeallows($ENV{'request.uri'}); |
|
} |
return $finaloutput; |
return $finaloutput; |
} |
} |
|
|
Line 308 sub htmlclean {
|
Line 431 sub htmlclean {
|
|
|
my $output= $tree->as_HTML(undef,' '); |
my $output= $tree->as_HTML(undef,' '); |
|
|
$output=~s/\<(br|hr|img)([^\>\/]*)\>/\<$1$2 \/\>/gis; |
$output=~s/\<(br|hr|img|meta|allow)([^\>\/]*)\>/\<$1$2 \/\>/gis; |
$output=~s/\<\/(br|hr|img)\>//gis; |
$output=~s/\<\/(br|hr|img|meta|allow)\>//gis; |
unless ($full) { |
unless ($full) { |
$output=~s/\<[\/]*(body|head|html)\>//gis; |
$output=~s/\<[\/]*(body|head|html)\>//gis; |
} |
} |
Line 321 sub htmlclean {
|
Line 444 sub htmlclean {
|
|
|
sub inner_xmlparse { |
sub inner_xmlparse { |
my ($target,$stack,$parstack,$pars,$safeeval,$style_for_target)=@_; |
my ($target,$stack,$parstack,$pars,$safeeval,$style_for_target)=@_; |
&Apache::lonxml::debug('Reentrant parser starting, again?'); |
|
my $finaloutput = ''; |
my $finaloutput = ''; |
my $result; |
my $result; |
my $token; |
my $token; |
Line 543 sub setup_globals {
|
Line 665 sub setup_globals {
|
my ($target)=@_; |
my ($target)=@_; |
$Apache::lonxml::registered = 0; |
$Apache::lonxml::registered = 0; |
@Apache::lonxml::pwd=(); |
@Apache::lonxml::pwd=(); |
|
@Apache::lonxml::extlinks=(); |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
$Apache::lonxml::redirection = 0; |
$Apache::lonxml::redirection = 0; |
$Apache::lonxml::metamode = 1; |
$Apache::lonxml::metamode = 1; |
$Apache::lonxml::evaluate = 1; |
$Apache::lonxml::evaluate = 1; |
$Apache::lonxml::import = 0; |
$Apache::lonxml::import = 0; |
|
} elsif ($target eq 'answer') { |
|
$Apache::lonxml::redirection = 0; |
|
$Apache::lonxml::metamode = 1; |
|
$Apache::lonxml::evaluate = 1; |
|
$Apache::lonxml::import = 1; |
} elsif ($target eq 'grade') { |
} elsif ($target eq 'grade') { |
&startredirection; |
&startredirection; |
$Apache::lonxml::metamode = 0; |
$Apache::lonxml::metamode = 0; |
Line 624 sub init_safespace {
|
Line 752 sub init_safespace {
|
#need to inspect this class of ops |
#need to inspect this class of ops |
# $safeeval->deny(":base_orig"); |
# $safeeval->deny(":base_orig"); |
$safeinit .= ';$external::target="'.$target.'";'; |
$safeinit .= ';$external::target="'.$target.'";'; |
$safeinit .= ';$external::randomseed='.&Apache::lonnet::rndseed().';'; |
my $rndseed; |
|
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
|
$rndseed=&Apache::lonnet::rndseed($symb,$courseid,$domain,$name); |
|
$safeinit .= ';$external::randomseed='.$rndseed.';'; |
&Apache::run::run($safeinit,$safeeval); |
&Apache::run::run($safeinit,$safeeval); |
} |
} |
|
|
Line 759 sub parstring {
|
Line 890 sub parstring {
|
} |
} |
|
|
sub writeallows { |
sub writeallows { |
|
unless ($#extlinks>=0) { return; } |
my $thisurl='/res/'.&Apache::lonnet::declutter(shift); |
my $thisurl='/res/'.&Apache::lonnet::declutter(shift); |
|
if ($ENV{'httpref.'.$thisurl}) { |
|
$thisurl=$ENV{'httpref.'.$thisurl}; |
|
} |
my $thisdir=$thisurl; |
my $thisdir=$thisurl; |
$thisdir=~s/\/[^\/]+$//; |
$thisdir=~s/\/[^\/]+$//; |
my %httpref=(); |
my %httpref=(); |
map { |
map { |
$httpref{'httpref.'. |
$httpref{'httpref.'. |
&Apache::lonnet::hreflocation($thisdir,$_)}=$thisurl; } @extlinks; |
&Apache::lonnet::hreflocation($thisdir,$_)}=$thisurl; |
|
} @extlinks; |
|
@extlinks=(); |
&Apache::lonnet::appenv(%httpref); |
&Apache::lonnet::appenv(%httpref); |
} |
} |
|
|
Line 914 ENDNOTFOUND
|
Line 1051 ENDNOTFOUND
|
unless ($ENV{'request.state'} eq 'published') { |
unless ($ENV{'request.state'} eq 'published') { |
$result=&inserteditinfo($result,$filecontents); |
$result=&inserteditinfo($result,$filecontents); |
} |
} |
|
|
|
writeallows($request->uri); |
|
|
$request->print($result); |
$request->print($result); |
|
|
writeallows($request->uri); |
|
return OK; |
return OK; |
} |
} |
|
|
Line 1002 sub description {
|
Line 1140 sub description {
|
my ($token)=@_; |
my ($token)=@_; |
return $insertlist{$insertlist{"$token->[1].num"}.'.description'}; |
return $insertlist{$insertlist{"$token->[1].num"}.'.description'}; |
} |
} |
|
|
|
# ----------------------------------------------------------------- whichuser |
|
# returns a list of $symb, $courseid, $domain, $name that is correct for |
|
# calls to lonnet functions for this setup. |
|
# - looks for form.grade_ parameters |
|
sub whichuser { |
|
my $symb=&Apache::lonnet::symbread(); |
|
my $courseid=$ENV{'request.course.id'}; |
|
my $domain=$ENV{'user.domain'}; |
|
my $name=$ENV{'user.name'}; |
|
if (defined($ENV{'form.grade_symb'})) { |
|
my $tmp_courseid=$ENV{'form.grade_courseid'}; |
|
my $allowed=&Apache::lonnet::allowed('mgr',$tmp_courseid); |
|
if ($allowed) { |
|
$symb=$ENV{'form.grade_symb'}; |
|
$courseid=$ENV{'form.grade_courseid'}; |
|
$domain=$ENV{'form.grade_domain'}; |
|
$name=$ENV{'form.grade_username'}; |
|
} |
|
} |
|
return ($symb,$courseid,$domain,$name); |
|
} |
|
|
1; |
1; |
__END__ |
__END__ |
|
|