version 1.508, 2010/05/03 14:43:07
|
version 1.519, 2011/05/27 19:07:25
|
Line 476 sub inner_xmlparse {
|
Line 476 sub inner_xmlparse {
|
} |
} |
if (($ENV{'QUERY_STRING'}) && ($target eq 'web')) { |
if (($ENV{'QUERY_STRING'}) && ($target eq 'web')) { |
$finaloutput=&afterburn($finaloutput); |
$finaloutput=&afterburn($finaloutput); |
|
} |
|
if ($target eq 'modified') { |
|
# if modfied, handle startpart and endpart |
|
$finaloutput=~s/\<startpartmarker[^\>]*\>(.*)\<endpartmarker[^\>]*\>/<part>$1<\/part>/gs; |
} |
} |
return $finaloutput; |
return $finaloutput; |
} |
} |
Line 638 sub setup_globals {
|
Line 642 sub setup_globals {
|
|
|
sub init_safespace { |
sub init_safespace { |
my ($target,$safeeval,$safehole,$safeinit) = @_; |
my ($target,$safeeval,$safehole,$safeinit) = @_; |
$safeeval->deny_only(':dangerous'); |
|
$safeeval->reval('use Math::Complex;'); |
$safeeval->reval('use Math::Complex;'); |
|
$safeeval->reval('use LaTeX::Table;'); |
|
$safeeval->deny_only(':dangerous'); |
$safeeval->permit_only(":default"); |
$safeeval->permit_only(":default"); |
$safeeval->permit("entereval"); |
$safeeval->permit("entereval"); |
$safeeval->permit(":base_math"); |
$safeeval->permit(":base_math"); |
Line 1429 SIMPLECONTENT
|
Line 1434 SIMPLECONTENT
|
|
|
sub verify_html { |
sub verify_html { |
my ($filecontents)=@_; |
my ($filecontents)=@_; |
if ($filecontents!~/(?:\<|\<\;)(?:html|xml)[^\<]*(?:\>|\>\;)/is) { |
my ($is_html,$is_xml); |
return &mt('File does not have [_1] or [_2] starting tag','<html>','<xml>'); |
if ($filecontents =~/(?:\<|\<\;)\?xml[^\<]*\?(?:\>|\>\;)/is) { |
} |
$is_xml = 1; |
if ($filecontents!~/(?:\<|\<\;)\/(?:html|xml)(?:\>|\>\;)/is) { |
} elsif ($filecontents =~/(?:\<|\<\;)html(?:\s+[^\<]+|\s*)(?:\>|\>\;)/is) { |
return &mt('File does not have [_1] or [_2] ending tag','<html>','<xml>'); |
$is_html = 1; |
} |
} |
if ($filecontents!~/(?:\<|\<\;)(?:body|frameset)[^\<]*(?:\>|\>\;)/is) { |
unless ($is_xml || $is_html) { |
return &mt('File does not have [_1] or [_2] starting tag','<body>','<frameset>'); |
return &mt('File does not have [_1] or [_2] starting tag','<html>','<?xml ?>'); |
} |
} |
if ($filecontents!~/(?:\<|\<\;)\/(?:body|frameset)[^\<]*(?:\>|\>\;)/is) { |
if ($is_html) { |
return &mt('File does not have [_1] or [_2] ending tag','<body>','<frameset>'); |
if ($filecontents!~/(?:\<|\<\;)\/html(?:\>|\>\;)/is) { |
|
return &mt('File does not have [_1] ending tag','<html>'); |
|
} |
|
if ($filecontents!~/(?:\<|\<\;)(?:body|frameset)[^\<]*(?:\>|\>\;)/is) { |
|
return &mt('File does not have [_1] or [_2] starting tag','<body>','<frameset>'); |
|
} |
|
if ($filecontents!~/(?:\<|\<\;)\/(?:body|frameset)[^\<]*(?:\>|\>\;)/is) { |
|
return &mt('File does not have [_1] or [_2] ending tag','<body>','<frameset>'); |
|
} |
} |
} |
return ''; |
return ''; |
} |
} |
Line 1460 sub renderingoptions {
|
Line 1473 sub renderingoptions {
|
&Apache::loncommon::select_form( |
&Apache::loncommon::select_form( |
$env{'form.languages'}, |
$env{'form.languages'}, |
'languages', |
'languages', |
&Apache::lonlocal::texthash(%langchoices)). |
{&Apache::lonlocal::texthash(%langchoices)}). |
'</span>'; |
'</span>'; |
} |
} |
$output .= |
$output .= |
Line 1469 sub renderingoptions {
|
Line 1482 sub renderingoptions {
|
&Apache::loncommon::select_form( |
&Apache::loncommon::select_form( |
$env{'form.texengine'}, |
$env{'form.texengine'}, |
'texengine', |
'texengine', |
&Apache::lonlocal::texthash |
{&Apache::lonlocal::texthash |
('' => '', |
('' => '', |
'tth' => 'tth (TeX to HTML)', |
'tth' => 'tth (TeX to HTML)', |
'jsMath' => 'jsMath', |
'jsMath' => 'jsMath', |
'mimetex' => 'mimetex (Convert to Images)')). |
'mimetex' => 'mimetex (Convert to Images)')}). |
'</span>'; |
'</span>'; |
return $output; |
return $output; |
} |
} |
Line 1487 sub inserteditinfo {
|
Line 1500 sub inserteditinfo {
|
my $dragmath_button; |
my $dragmath_button; |
my ($add_to_onload, $add_to_onresize); |
my ($add_to_onload, $add_to_onresize); |
$initialize=&Apache::lonhtmlcommon::spellheader(); |
$initialize=&Apache::lonhtmlcommon::spellheader(); |
if ($filetype eq 'html' |
if (($filetype eq 'html') && (&Apache::lonhtmlcommon::htmlareabrowser())) { |
&& (!&Apache::lonhtmlcommon::htmlareablocked() && |
|
&Apache::lonhtmlcommon::htmlareabrowser())) { |
|
$textarea_id .= '___Frame'; |
|
my $lang = &Apache::lonhtmlcommon::htmlarea_lang(); |
my $lang = &Apache::lonhtmlcommon::htmlarea_lang(); |
$initialize.=(<<FULLPAGE); |
my %textarea_args = ( |
<script type="text/javascript"> |
fullpage => 'true', |
lonca |
dragmath => 'math', |
function initDocument() { |
); |
var oFCKeditor = new FCKeditor('filecont'); |
$initialize .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args); |
oFCKeditor.Config['CustomConfigurationsPath'] = '/fckeditor/loncapaconfig.js' ; |
} |
oFCKeditor.Config['FullPage'] = true |
$initialize .= (<<FULLPAGE); |
oFCKeditor.Config['AutoDetectLanguage'] = false; |
|
oFCKeditor.Config['DefaultLanguage'] = "$lang"; |
|
oFCKeditor.ReplaceTextarea(); |
|
} |
|
function check_if_dirty(editor) { |
|
if (editor.IsDirty()) { |
|
unClean(); |
|
} |
|
} |
|
function FCKeditor_OnComplete(editor) { |
|
editor.Events.AttachEvent("OnSelectionChange",check_if_dirty); |
|
resize_textarea('$textarea_id','LC_aftertextarea'); |
|
} |
|
</script> |
|
FULLPAGE |
|
} else { |
|
$initialize.=(<<FULLPAGE); |
|
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
function initDocument() { |
function initDocument() { |
resize_textarea('$textarea_id','LC_aftertextarea'); |
resize_textarea('$textarea_id','LC_aftertextarea'); |
} |
} |
|
// ]]> |
</script> |
</script> |
FULLPAGE |
FULLPAGE |
if ($filetype eq 'html' || $filetype eq 'tex') { |
if ($filetype eq 'html') { |
$initialize .= "\n".&Apache::lonhtmlcommon::dragmath_js('EditMathPopup'); |
$dragmath_button = '<span id="math_filecont">'.&Apache::lonhtmlcommon::dragmath_button('filecont',1).'</span>'; |
$dragmath_button = &Apache::lonhtmlcommon::dragmath_button('filecont',1); |
$initialize .= "\n".&Apache::lonhtmlcommon::dragmath_js('EditMathPopup'); |
} |
|
} |
} |
|
|
$add_to_onload = 'initDocument();'; |
$add_to_onload = 'initDocument();'; |
$add_to_onresize = "resize_textarea('$textarea_id','LC_aftertextarea');"; |
$add_to_onresize = "resize_textarea('$textarea_id','LC_aftertextarea');"; |
|
|
Line 1536 FULLPAGE
|
Line 1529 FULLPAGE
|
} |
} |
|
|
my $titledisplay=&display_title(); |
my $titledisplay=&display_title(); |
my $wysiwyglink; |
my $textareaclass; |
my %lt=&Apache::lonlocal::texthash('st' => 'Save and Edit', |
my %lt=&Apache::lonlocal::texthash('st' => 'Save and Edit', |
'vi' => 'Save and View', |
'vi' => 'Save and View', |
'dv' => 'Discard Edits and View', |
'dv' => 'Discard Edits and View', |
'un' => 'undo', |
'un' => 'undo', |
'ed' => 'Edit'); |
'ed' => 'Edit'); |
my $spelllink .=&Apache::lonhtmlcommon::spelllink('xmledit','filecont'); |
my $spelllink = &Apache::lonhtmlcommon::spelllink('xmledit','filecont'); |
my $textarea_events = &Apache::edit::element_change_detection(); |
my $textarea_events = &Apache::edit::element_change_detection(); |
my $form_events = &Apache::edit::form_change_detection(); |
my $form_events = &Apache::edit::form_change_detection(); |
my $htmlerror; |
my $htmlerror; |
Line 1552 FULLPAGE
|
Line 1545 FULLPAGE
|
$htmlerror='<span class="LC_error">'.$htmlerror.'</span>'; |
$htmlerror='<span class="LC_error">'.$htmlerror.'</span>'; |
} |
} |
if (&Apache::lonhtmlcommon::htmlareabrowser()) { |
if (&Apache::lonhtmlcommon::htmlareabrowser()) { |
if (&Apache::lonhtmlcommon::htmlareablocked()) { |
$textareaclass = 'class="LC_richDefaultOff"'; |
$wysiwyglink = &Apache::lonhtmlcommon::enablelink($textarea_id); |
|
} else { |
|
$wysiwyglink = &Apache::lonhtmlcommon::disablelink($textarea_id); |
|
} |
|
} |
} |
} |
} |
my $editfooter=(<<ENDFOOTER); |
my $editfooter=(<<ENDFOOTER); |
Line 1573 $initialize
|
Line 1562 $initialize
|
<div class="LC_edit_problem_discards"> |
<div class="LC_edit_problem_discards"> |
<input type="submit" name="discardview" accesskey="d" value="$lt{'dv'}" /> |
<input type="submit" name="discardview" accesskey="d" value="$lt{'dv'}" /> |
<input type="submit" name="Undo" accesskey="u" value="$lt{'un'}" /> |
<input type="submit" name="Undo" accesskey="u" value="$lt{'un'}" /> |
$dragmath_button $spelllink $htmlerror |
$htmlerror $dragmath_button |
</div> |
</div> |
<div class="LC_edit_problem_saves"> |
<div class="LC_edit_problem_saves"> |
<input type="submit" name="savethisfile" accesskey="s" value="$lt{'st'}" /> |
<input type="submit" name="savethisfile" accesskey="s" value="$lt{'st'}" /> |
<input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" /> |
<input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" /> |
</div> |
</div> |
</div> |
</div> |
<textarea $textarea_events 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" $textareaclass>$filecontents</textarea><br />$spelllink |
<div id="LC_aftertextarea"> |
<div id="LC_aftertextarea"> |
$wysiwyglink |
|
<br /> |
<br /> |
$titledisplay |
$titledisplay |
</div> |
</div> |
Line 1733 ENDNOTFOUND
|
Line 1721 ENDNOTFOUND
|
$result = &Apache::lontexconvert::converted(\$filecontents, |
$result = &Apache::lontexconvert::converted(\$filecontents, |
$env{'form.texengine'}); |
$env{'form.texengine'}); |
if ($env{'form.return_only_error_and_warning_counts'}) { |
if ($env{'form.return_only_error_and_warning_counts'}) { |
if (&verify_html('<html><body>'.$result.'</body></html>')) { |
|
$errorcount++; |
|
} |
|
$result = "$errorcount:$warningcount"; |
$result = "$errorcount:$warningcount"; |
} |
} |
} else { |
} else { |
Line 2054 sub register_insert_xml {
|
Line 2039 sub register_insert_xml {
|
my $key; |
my $key; |
if ($token->[1] eq 'tag') { |
if ($token->[1] eq 'tag') { |
$tag = $token->[2]{'name'}; |
$tag = $token->[2]{'name'}; |
$insertlist{"$tagnum.tag"} = $tag; |
$insertlist{$tagnum.'.tag'} = $tag; |
$insertlist{"$tag.num"} = $tagnum; |
$insertlist{$tag.'.num'} = $tagnum; |
push(@alltags,$tag); |
push(@alltags,$tag); |
} elsif ($in_help && $token->[1] eq 'file') { |
} elsif ($in_help && $token->[1] eq 'file') { |
$key = $tag.'.helpfile'; |
$key = $tag.'.helpfile'; |
Line 2088 sub register_insert_xml {
|
Line 2073 sub register_insert_xml {
|
|
|
# parse the allows and ignore tags set to <show>no</show> |
# parse the allows and ignore tags set to <show>no</show> |
foreach my $tag (@alltags) { |
foreach my $tag (@alltags) { |
next if (!exists($insertlist{"$tag.allow"})); |
next if (!exists($insertlist{$tag.'.allow'})); |
my $allow = $insertlist{"$tag.allow"}; |
my $allow = $insertlist{$tag.'.allow'}; |
foreach my $element (split(',',$allow)) { |
foreach my $element (split(',',$allow)) { |
$element =~ s/(^\s*|\s*$ )//gx; |
$element =~ s/(^\s*|\s*$ )//gx; |
if (!exists($insertlist{"$element.show"}) |
if (!exists($insertlist{$element.'.show'}) |
|| $insertlist{"$element.show"} ne 'no') { |
|| $insertlist{$element.'.show'} ne 'no') { |
push(@{ $insertlist{$tag.'.which'} },$element); |
push(@{ $insertlist{$tag.'.which'} },$element); |
} |
} |
} |
} |