version 1.275, 2003/09/11 22:37:54
|
version 1.282, 2003/10/01 21:13:50
|
Line 105 use Apache::loncommon();
|
Line 105 use Apache::loncommon();
|
use Apache::lonfeedback(); |
use Apache::lonfeedback(); |
use Apache::lonmsg(); |
use Apache::lonmsg(); |
use Apache::loncacc(); |
use Apache::loncacc(); |
|
use Apache::lonlocal; |
|
|
#================================================== Main subroutine: xmlparse |
#================================================== Main subroutine: xmlparse |
#debugging control, to turn on debugging modify the correct handler |
#debugging control, to turn on debugging modify the correct handler |
Line 159 $Apache::lonxml::usestyle=1;
|
Line 160 $Apache::lonxml::usestyle=1;
|
$Apache::lonxml::style_values=''; |
$Apache::lonxml::style_values=''; |
$Apache::lonxml::style_end_values=''; |
$Apache::lonxml::style_end_values=''; |
|
|
|
#array of ssi calls that need to occur after we are done parsing |
|
@Apache::lonxml::ssi_info=(); |
|
|
|
#should we do the postag variable interpolation |
|
$Apache::lonxml::post_evaluate=1; |
|
|
sub xmlbegin { |
sub xmlbegin { |
my $output=''; |
my $output=''; |
if ($ENV{'browser.mathml'}) { |
if ($ENV{'browser.mathml'}) { |
Line 175 sub xmlbegin {
|
Line 182 sub xmlbegin {
|
} |
} |
|
|
sub xmlend { |
sub xmlend { |
my ($discussiononly,$symb)=@_; |
my $mode='xml'; |
my $discussion=''; |
my $status='OPEN'; |
if ($ENV{'request.course.id'}) { |
if ($Apache::lonhomework::parsing_a_problem) { |
my $crs='/'.$ENV{'request.course.id'}; |
$mode='problem'; |
if ($ENV{'request.course.sec'}) { |
$status=$Apache::inputtags::status[-1]; |
$crs.='_'.$ENV{'request.course.sec'}; |
|
} |
|
$crs=~s/\_/\//g; |
|
my $seeid=&Apache::lonnet::allowed('rin',$crs); |
|
my $viewgrades=&Apache::lonnet::allowed('vgr',$crs); |
|
unless ($symb) { |
|
$symb=&Apache::lonnet::symbread(); |
|
} |
|
if ($symb) { |
|
my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
|
if ($contrib{'version'}) { |
|
unless ($discussiononly) { |
|
$discussion.= |
|
'<address><hr />'; |
|
} |
|
my $idx; |
|
for ($idx=1;$idx<=$contrib{'version'};$idx++) { |
|
my $hidden=($contrib{'hidden'}=~/\.$idx\./); |
|
my $deleted=($contrib{'deleted'}=~/\.$idx\./); |
|
unless ((($hidden) && (!$seeid)) || ($deleted)) { |
|
my $message=$contrib{$idx.':message'}; |
|
$message=~s/\n/\<br \/\>/g; |
|
$message=&Apache::lontexconvert::msgtexconverted($message); |
|
if ($contrib{$idx.':attachmenturl'}) { |
|
my ($fname,$ft) |
|
=($contrib{$idx.':attachmenturl'}=~/\/(\w+)\.(\w+)$/); |
|
$message.='<p>Attachment: <a href="'. |
|
&Apache::lonnet::tokenwrapper($contrib{$idx.':attachmenturl'}). |
|
'"><tt>'.$fname.'.'.$ft.'</tt></a>'; |
|
} |
|
if ($message) { |
|
if ($hidden) { |
|
$message='<font color="#888888">'.$message.'</font>'; |
|
} |
|
my $screenname=&Apache::loncommon::screenname( |
|
$contrib{$idx.':sendername'}, |
|
$contrib{$idx.':senderdomain'}); |
|
my $plainname=&Apache::loncommon::nickname( |
|
$contrib{$idx.':sendername'}, |
|
$contrib{$idx.':senderdomain'}); |
|
|
|
my $sender='Anonymous'; |
|
if ((!$contrib{$idx.':anonymous'}) || ($seeid)) { |
|
$sender=&Apache::loncommon::aboutmewrapper( |
|
$plainname, |
|
$contrib{$idx.':sendername'}, |
|
$contrib{$idx.':senderdomain'}).' ('. |
|
$contrib{$idx.':sendername'}.' at '. |
|
$contrib{$idx.':senderdomain'}.')'; |
|
if ($contrib{$idx.':anonymous'}) { |
|
$sender.=' [anonymous] '. |
|
$screenname; |
|
} |
|
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>'; |
|
} |
|
$sender.=' <a href="/adm/feedback?deldisc='. |
|
$symb.':::'.$idx.'">Delete</a>'; |
|
} |
|
} else { |
|
if ($screenname) { |
|
$sender='<i>'.$screenname.'</i>'; |
|
} |
|
} |
|
my $vgrlink; |
|
if ($viewgrades) { |
|
$vgrlink=&Apache::loncommon::submlink('Submissions',$contrib{$idx.':sendername'},$contrib{$idx.':senderdomain'},$symb); |
|
} |
|
$discussion.='<p><b>'.$sender.'</b> '.$vgrlink.' ('. |
|
localtime($contrib{$idx.':timestamp'}). |
|
'):<blockquote>'.$message. |
|
'</blockquote></p>'; |
|
} |
|
} |
|
} |
|
unless ($discussiononly) { |
|
$discussion.='</address>'; |
|
} |
|
} |
|
if ($discussiononly) { |
|
$discussion.=(<<ENDDISCUSS); |
|
<form action="/adm/feedback" method="post" name="mailform" enctype="multipart/form-data"> |
|
<input type="submit" name="discuss" value="Post Discussion" /> |
|
<input type="submit" name="anondiscuss" value="Post Anonymous Discussion" /> |
|
<input type="hidden" name="symb" value="$symb" /> |
|
<input type="hidden" name="sendit" value="true" /> |
|
<br /> |
|
<font size="1">Note: in anonymous discussion, your name is visible only to |
|
course faculty</font><br /> |
|
<textarea name=comment cols=60 rows=10 wrap=hard></textarea> |
|
<p> |
|
Attachment (128 KB max size): <input type="file" name="attachment" /> |
|
</p> |
|
</form> |
|
ENDDISCUSS |
|
$discussion.=&Apache::lonfeedback::generate_preview_button(); |
|
} |
|
} |
|
} |
} |
return $discussion.($discussiononly?'':'</html>'); |
return &Apache::lonfeedback::list_discussion().'</html>'; |
} |
} |
|
|
sub tokeninputfield { |
sub tokeninputfield { |
Line 457 sub xmlparse {
|
Line 359 sub xmlparse {
|
if ($ENV{'request.uri'}) { |
if ($ENV{'request.uri'}) { |
&writeallows($ENV{'request.uri'}); |
&writeallows($ENV{'request.uri'}); |
} |
} |
|
&do_registered_ssi(); |
if ($Apache::lonxml::counter_changed) { &store_counter() } |
if ($Apache::lonxml::counter_changed) { &store_counter() } |
return $finaloutput; |
return $finaloutput; |
} |
} |
Line 577 sub inner_xmlparse {
|
Line 480 sub inner_xmlparse {
|
&Apache::lonxml::error("Unknown token event :$token->[0]:$token->[1]:"); |
&Apache::lonxml::error("Unknown token event :$token->[0]:$token->[1]:"); |
} |
} |
#evaluate variable refs in result |
#evaluate variable refs in result |
if ($result ne "") { |
if ($Apache::lonxml::post_evaluate &&$result ne "") { |
my $extras; |
my $extras; |
if (!$Apache::lonxml::usestyle) { |
if (!$Apache::lonxml::usestyle) { |
$extras=$Apache::lonxml::style_values; |
$extras=$Apache::lonxml::style_values; |
Line 588 sub inner_xmlparse {
|
Line 491 sub inner_xmlparse {
|
$result= &Apache::run::evaluate($result,$safeeval,$extras); |
$result= &Apache::run::evaluate($result,$safeeval,$extras); |
} |
} |
} |
} |
|
$Apache::lonxml::post_evaluate=1; |
|
|
if (($token->[0] eq 'T') || ($token->[0] eq 'C') || ($token->[0] eq 'D') ) { |
if (($token->[0] eq 'T') || ($token->[0] eq 'C') || ($token->[0] eq 'D') ) { |
#Style file definitions should be correct |
#Style file definitions should be correct |
if ($target eq 'tex' && ($Apache::lonxml::usestyle)) { |
if ($target eq 'tex' && ($Apache::lonxml::usestyle)) { |
Line 596 sub inner_xmlparse {
|
Line 501 sub inner_xmlparse {
|
} |
} |
|
|
# Encode any high ASCII characters |
# Encode any high ASCII characters |
if (!$Apache::lonxml::prevent_entity_encode) { |
# if (!$Apache::lonxml::prevent_entity_encode) { |
$result=&HTML::Entities::encode($result,"\200-\377"); |
# $result=&HTML::Entities::encode($result,"\200-\377"); |
} |
# } |
if ($Apache::lonxml::redirection) { |
if ($Apache::lonxml::redirection) { |
$Apache::lonxml::outputstack['-1'] .= $result; |
$Apache::lonxml::outputstack['-1'] .= $result; |
} else { |
} else { |
Line 707 sub setup_globals {
|
Line 612 sub setup_globals {
|
&init_counter(); |
&init_counter(); |
@Apache::lonxml::pwd=(); |
@Apache::lonxml::pwd=(); |
@Apache::lonxml::extlinks=(); |
@Apache::lonxml::extlinks=(); |
|
@Apache::lonxml::ssi_info=(); |
|
$Apache::lonxml::post_evaluate=1; |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
$Apache::lonxml::redirection = 0; |
$Apache::lonxml::redirection = 0; |
$Apache::lonxml::metamode = 1; |
$Apache::lonxml::metamode = 1; |
Line 897 sub decreasedepth {
|
Line 804 sub decreasedepth {
|
$Apache::lonxml::olddepth=$Apache::lonxml::depth+1; |
$Apache::lonxml::olddepth=$Apache::lonxml::depth+1; |
} |
} |
if ( $Apache::lonxml::depth < -1) { |
if ( $Apache::lonxml::depth < -1) { |
&Apache::lonxml::warning("Missing tags, unable to properly run file."); |
&Apache::lonxml::warning(&mt("Missing tags, unable to properly run file.")); |
$Apache::lonxml::depth='-1'; |
$Apache::lonxml::depth='-1'; |
} |
} |
my $curdepth=join('_',@Apache::lonxml::depthcounter); |
my $curdepth=join('_',@Apache::lonxml::depthcounter); |
Line 1102 sub writeallows {
|
Line 1009 sub writeallows {
|
&Apache::lonnet::appenv(%httpref); |
&Apache::lonnet::appenv(%httpref); |
} |
} |
|
|
|
sub register_ssi { |
|
my ($url,%form)=@_; |
|
push (@Apache::lonxml::ssi_info,{'url'=>$url,'form'=>\%form}); |
|
return ''; |
|
} |
|
|
|
sub do_registered_ssi { |
|
foreach my $info (@Apache::lonxml::ssi_info) { |
|
my %form=%{ $info->{'form'}}; |
|
my $url=$info->{'url'}; |
|
&Apache::lonnet::ssi($url,%form); |
|
} |
|
} |
# |
# |
# Afterburner handles anchors, highlights and links |
# Afterburner handles anchors, highlights and links |
# |
# |
Line 1192 sub inserteditinfo {
|
Line 1112 sub inserteditinfo {
|
} |
} |
my $cleanbut = ''; |
my $cleanbut = ''; |
if ($filetype eq 'html') { |
if ($filetype eq 'html') { |
$cleanbut='<input type="submit" name="attemptclean" |
$cleanbut='<input type="submit" name="attemptclean" value="'. |
value="Save and then attempt to clean HTML" />'; |
&mt('Save and then attempt to clean HTML').'" />'; |
} |
} |
my $titledisplay=&display_title(); |
my $titledisplay=&display_title(); |
|
my %lt=&Apache::lonlocal::texthash('st' => 'Save this', |
|
'vi' => 'View', |
|
'ed' => 'Edit'); |
my $buttons=(<<BUTTONS); |
my $buttons=(<<BUTTONS); |
$cleanbut |
$cleanbut |
<input type="submit" name="savethisfile" value="Save this" /> |
<input type="submit" name="savethisfile" value="$lt{'st'}" /> |
<input type="submit" name="viewmode" value="View" /> |
<input type="submit" name="viewmode" value="$lt{'vi'}" /> |
BUTTONS |
BUTTONS |
my $editfooter=(<<ENDFOOTER); |
my $editfooter=(<<ENDFOOTER); |
<hr /> |
<hr /> |
<a name="editsection" /> |
<a name="editsection" /> |
<form method="post"> |
<form method="post"> |
$xml_help |
$xml_help |
<input type="hidden" name="editmode" value="Edit" /> |
<input type="hidden" name="editmode" value="$lt{'ed'}" /> |
$buttons<br /> |
$buttons<br /> |
<textarea cols="80" rows="40" name="filecont">$filecontents</textarea> |
<textarea cols="80" rows="40" name="filecont">$filecontents</textarea> |
<br />$buttons |
<br />$buttons |
Line 1254 sub handler {
|
Line 1177 sub handler {
|
$Apache::lonxml::debug=$ENV{'user.debug'}; |
$Apache::lonxml::debug=$ENV{'user.debug'}; |
|
|
if ($ENV{'browser.mathml'}) { |
if ($ENV{'browser.mathml'}) { |
$request->content_type('text/xml'); |
&Apache::loncommon::content_type($request,'text/xml'); |
} else { |
} else { |
$request->content_type('text/html'); |
&Apache::loncommon::content_type($request,'text/html'); |
} |
} |
&Apache::loncommon::no_cache($request); |
&Apache::loncommon::no_cache($request); |
$request->send_http_header; |
$request->send_http_header; |