version 1.446, 2007/05/17 21:00:59
|
version 1.452, 2007/08/18 00:08:36
|
Line 125 $evaluate = 1;
|
Line 125 $evaluate = 1;
|
# stores the list of active tag namespaces |
# stores the list of active tag namespaces |
@namespace=(); |
@namespace=(); |
|
|
|
# stores all Scrit Vars displays for later showing |
|
my @script_var_displays=(); |
|
|
# a pointer the the Apache request object |
# a pointer the the Apache request object |
$Apache::lonxml::request=''; |
$Apache::lonxml::request=''; |
|
|
Line 316 sub xmlparse {
|
Line 319 sub xmlparse {
|
} |
} |
} |
} |
} |
} |
} elsif ($env{'construct.style'} && ($env{'request.state'} eq 'construct')) { |
} elsif ($env{'construct.style'} |
|
&& ($env{'request.state'} eq 'construct')) { |
my $location=&Apache::lonnet::filelocation('',$env{'construct.style'}); |
my $location=&Apache::lonnet::filelocation('',$env{'construct.style'}); |
my $styletext=&Apache::lonnet::getfile($location); |
my $styletext=&Apache::lonnet::getfile($location); |
if ($styletext ne '-1') { |
if ($styletext ne '-1') { |
%style_for_target = (%style_for_target, |
%style_for_target = (%style_for_target, |
&Apache::style::styleparser($target,$styletext)); |
&Apache::style::styleparser($target,$styletext)); |
} |
} |
} |
} |
#&printalltags(); |
#&printalltags(); |
my @pars = (); |
my @pars = (); |
Line 357 sub xmlparse {
|
Line 361 sub xmlparse {
|
|
|
&clean_safespace($safeeval); |
&clean_safespace($safeeval); |
|
|
|
if (@script_var_displays) { |
|
$finaloutput .= join('',@script_var_displays); |
|
undef(@script_var_displays); |
|
} |
|
|
if ($env{'form.return_only_error_and_warning_counts'}) { |
if ($env{'form.return_only_error_and_warning_counts'}) { |
return "$errorcount:$warningcount"; |
return "$errorcount:$warningcount"; |
} |
} |
Line 599 sub callsub {
|
Line 608 sub callsub {
|
} |
} |
} |
} |
if ($token->[0] eq 'S') { |
if ($token->[0] eq 'S') { |
$currentstring.=&Apache::edit::handle_insert(); |
$currentstring.=&Apache::edit::handle_insert(); |
} elsif ($token->[0] eq 'E') { |
} elsif ($token->[0] eq 'E') { |
$currentstring.=&Apache::edit::handle_insertafter($token->[1]); |
$currentstring.=&Apache::edit::handle_insertafter($token->[1]); |
} |
} |
} |
} |
} |
} |
Line 620 sub setup_globals {
|
Line 629 sub setup_globals {
|
&init_counter(); |
&init_counter(); |
@Apache::lonxml::pwd=(); |
@Apache::lonxml::pwd=(); |
@Apache::lonxml::extlinks=(); |
@Apache::lonxml::extlinks=(); |
|
@script_var_displays=(); |
@Apache::lonxml::ssi_info=(); |
@Apache::lonxml::ssi_info=(); |
$Apache::lonxml::post_evaluate=1; |
$Apache::lonxml::post_evaluate=1; |
$Apache::lonxml::warnings_error_header=''; |
$Apache::lonxml::warnings_error_header=''; |
Line 958 sub decreasedepth {
|
Line 968 sub decreasedepth {
|
sub get_id { |
sub get_id { |
my ($parstack,$safeeval)=@_; |
my ($parstack,$safeeval)=@_; |
my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); |
my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); |
if ($env{'request.state'} eq 'construct' && $id =~ /(\.|_)/) { |
if ($env{'request.state'} eq 'construct' && $id =~ /([._]|[^\w\d\s[:punct:]])/) { |
&error(&mt("IDs are not allowed to contain "<tt>_</tt>" or "<tt>.</tt>"")); |
&error(&mt("ID "[_1]" contains invalid characters, IDs are only allowed to contain letters, numbers, spaces and -",'<tt>'.$id.'</tt>')); |
} |
} |
if ($id =~ /^\s*$/) { $id = $Apache::lonxml::curdepth; } |
if ($id =~ /^\s*$/) { $id = $Apache::lonxml::curdepth; } |
return $id; |
return $id; |
Line 997 sub get_all_text_unbalanced {
|
Line 1007 sub get_all_text_unbalanced {
|
return $result |
return $result |
} |
} |
|
|
|
=pod |
|
|
|
For bubble grading mode and exam bubble printing mode, the tracking of |
|
the current 'bubble line number' is stored in the %env element |
|
'form.counter', and is modifed and handled by the following routines. |
|
|
|
The value of it is stored in $Apache:lonxml::counter when live and |
|
stored back to env after done. |
|
|
|
=item &increment_counter($increment); |
|
|
|
Increments the internal counter environment variable a specified amount |
|
|
|
Optional Arguments: |
|
$increment - amount to increment by (defaults to 1) |
|
|
|
=cut |
|
|
sub increment_counter { |
sub increment_counter { |
my ($increment) = @_; |
my ($increment) = @_; |
if (defined($increment) && $increment gt 0) { |
if (defined($increment) && $increment gt 0) { |
Line 1007 sub increment_counter {
|
Line 1035 sub increment_counter {
|
$Apache::lonxml::counter_changed=1; |
$Apache::lonxml::counter_changed=1; |
} |
} |
|
|
|
=pod |
|
|
|
=item &init_counter($increment); |
|
|
|
Initialize the internal counter environment variable |
|
|
|
=cut |
|
|
sub init_counter { |
sub init_counter { |
if ($env{'request.state'} eq 'construct') { |
if ($env{'request.state'} eq 'construct') { |
$Apache::lonxml::counter=1; |
$Apache::lonxml::counter=1; |
Line 1228 sub do_registered_ssi {
|
Line 1264 sub do_registered_ssi {
|
&Apache::lonnet::ssi($url,%form); |
&Apache::lonnet::ssi($url,%form); |
} |
} |
} |
} |
|
|
|
sub add_script_result { |
|
my ($display) = @_; |
|
push(@script_var_displays, $display); |
|
} |
|
|
# |
# |
# Afterburner handles anchors, highlights and links |
# Afterburner handles anchors, highlights and links |
# |
# |
Line 1308 SIMPLECONTENT
|
Line 1350 SIMPLECONTENT
|
|
|
|
|
sub inserteditinfo { |
sub inserteditinfo { |
my ($result,$filecontents,$filetype)=@_; |
my ($filecontents,$filetype)=@_; |
$filecontents = &HTML::Entities::encode($filecontents,'<>&"'); |
$filecontents = &HTML::Entities::encode($filecontents,'<>&"'); |
# my $editheader='<a href="#editsection">Edit below</a><hr />'; |
# my $editheader='<a href="#editsection">Edit below</a><hr />'; |
my $xml_help = ''; |
my $xml_help = ''; |
my $initialize=''; |
my $initialize=''; |
|
my $textarea_id = 'filecont'; |
|
my ($add_to_onload, $add_to_onresize); |
if ($filetype eq 'html') { |
if ($filetype eq 'html') { |
my $addbuttons=&Apache::lonhtmlcommon::htmlareaaddbuttons(); |
my $addbuttons=&Apache::lonhtmlcommon::htmlareaaddbuttons(); |
$initialize=&Apache::lonhtmlcommon::spellheader(); |
$initialize=&Apache::lonhtmlcommon::spellheader(); |
if (!&Apache::lonhtmlcommon::htmlareablocked() && |
if (!&Apache::lonhtmlcommon::htmlareablocked() && |
&Apache::lonhtmlcommon::htmlareabrowser()) { |
&Apache::lonhtmlcommon::htmlareabrowser()) { |
|
$textarea_id .= '_htmlarea'; |
$initialize.=(<<FULLPAGE); |
$initialize.=(<<FULLPAGE); |
<script type="text/javascript"> |
<script type="text/javascript"> |
$addbuttons |
$addbuttons |
Line 1328 $addbuttons
|
Line 1373 $addbuttons
|
var editor=new HTMLArea("filecont",config); |
var editor=new HTMLArea("filecont",config); |
editor.registerPlugin(FullPage); |
editor.registerPlugin(FullPage); |
editor.generate(); |
editor.generate(); |
|
setTimeout( |
|
function () { |
|
HTMLArea._addEvents(editor._doc, |
|
["keypress","mousedown"], unClean); |
|
editor._iframe.id = '$textarea_id'; |
|
resize_textarea('$textarea_id','LC_aftertextarea');"; |
|
},300); |
} |
} |
</script> |
</script> |
FULLPAGE |
FULLPAGE |
Line 1336 FULLPAGE
|
Line 1388 FULLPAGE
|
<script type="text/javascript"> |
<script type="text/javascript"> |
$addbuttons |
$addbuttons |
function initDocument() { |
function initDocument() { |
|
resize_textarea('$textarea_id','LC_aftertextarea');"; |
} |
} |
</script> |
</script> |
FULLPAGE |
FULLPAGE |
} |
} |
$result=~s/\<body([^\>]*)\>/\<body onload="initDocument()" $1\>/i; |
$add_to_onload = 'initDocument();'; |
|
$add_to_onresize = "resize_textarea('$textarea_id','LC_aftertextarea');"; |
$xml_help=&Apache::loncommon::helpLatexCheatsheet(); |
$xml_help=&Apache::loncommon::helpLatexCheatsheet(); |
} |
} |
|
|
my $cleanbut = ''; |
my $cleanbut = ''; |
|
|
my $titledisplay=&display_title(); |
my $titledisplay=&display_title(); |
Line 1359 $cleanbut
|
Line 1414 $cleanbut
|
<input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" /> |
<input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" /> |
BUTTONS |
BUTTONS |
$buttons.=&Apache::lonhtmlcommon::spelllink('xmledit','filecont'); |
$buttons.=&Apache::lonhtmlcommon::spelllink('xmledit','filecont'); |
|
my $textarea_events = &Apache::edit::element_change_detection(); |
|
my $form_events = &Apache::edit::form_change_detection(); |
my $editfooter=(<<ENDFOOTER); |
my $editfooter=(<<ENDFOOTER); |
$initialize |
$initialize |
<hr /> |
<hr /> |
<a name="editsection" /> |
<a name="editsection" /> |
<form method="post" name="xmledit"> |
<form $form_events method="post" name="xmledit"> |
$xml_help |
$xml_help |
<input type="hidden" name="editmode" value="$lt{'ed'}" /> |
<input type="hidden" name="editmode" value="$lt{'ed'}" /> |
$buttons<br /> |
$buttons<br /> |
<textarea style="width:100%" cols="80" rows="44" name="filecont" id="filecont">$filecontents</textarea> |
<textarea $textarea_events style="width:100%" cols="80" rows="44" name="filecont" id="filecont">$filecontents</textarea> |
|
<div id="LC_aftertextarea"> |
<br />$buttons |
<br />$buttons |
<br /> |
<br /> |
</form> |
|
$titledisplay |
$titledisplay |
|
</div> |
|
</form> |
</body> |
</body> |
ENDFOOTER |
ENDFOOTER |
# $result=~s/(\<body[^\>]*\>)/$1$editheader/is; |
return ($editfooter,$add_to_onload,$add_to_onresize);; |
$result=~s/(\<\/body\>)/$editfooter/is; |
|
return $result; |
|
} |
} |
|
|
sub get_target { |
sub get_target { |
Line 1486 ENDNOTFOUND
|
Line 1543 ENDNOTFOUND
|
# |
# |
unless ($env{'request.state'} eq 'published') { |
unless ($env{'request.state'} eq 'published') { |
if ($env{'form.editmode'} && (!($env{'form.viewmode'})) && (!($env{'form.discardview'}))) |
if ($env{'form.editmode'} && (!($env{'form.viewmode'})) && (!($env{'form.discardview'}))) |
{ |
{ |
|
my ($edit_info, $add_to_onload, $add_to_onresize)= |
|
&inserteditinfo($filecontents,$filetype); |
|
|
my $displayfile=$request->uri; |
my $displayfile=$request->uri; |
$displayfile=~s/^\/[^\/]*//; |
$displayfile=~s/^\/[^\/]*//; |
my %options = (); |
my %options = |
|
('add_entries' => |
|
{'onresize' => $add_to_onresize, |
|
'onload' => $add_to_onload, }); |
|
|
if ($env{'environment.remote'} ne 'off') { |
if ($env{'environment.remote'} ne 'off') { |
$options{'bgcolor'} = '#FFFFFF'; |
$options{'bgcolor'} = '#FFFFFF'; |
|
$options{'only_body'} = 1; |
} |
} |
my $start_page = &Apache::loncommon::start_page(undef,undef, |
my $js = |
|
&Apache::edit::js_change_detection(). |
|
&Apache::loncommon::resize_textarea_js(); |
|
my $start_page = &Apache::loncommon::start_page(undef,$js, |
\%options); |
\%options); |
$result=$start_page. |
$result=$start_page. |
&Apache::lonxml::message_location().'<h3>'. |
&Apache::lonxml::message_location().'<h3>'. |
$displayfile. |
$displayfile. |
'</h3>'.&Apache::loncommon::end_page(); |
'</h3>'. |
$result=&inserteditinfo($result,$filecontents,$filetype); |
$edit_info. |
|
&Apache::loncommon::end_page(); |
} |
} |
} |
} |
if ($filetype eq 'html') { &writeallows($request->uri); } |
if ($filetype eq 'html') { &writeallows($request->uri); } |
|
|
|
|
&Apache::lonxml::add_messages(\$result); |
&Apache::lonxml::add_messages(\$result); |
$request->print($result); |
$request->print($result); |