version 1.151, 2008/12/11 21:28:59
|
version 1.154, 2010/05/26 02:04:20
|
Line 372 sub start_import {
|
Line 372 sub start_import {
|
my $bodytext=$$parser[$#$parser]->get_text("/import"); |
my $bodytext=$$parser[$#$parser]->get_text("/import"); |
my $result =""; |
my $result =""; |
|
|
$bodytext=Apache::run::evaluate($bodytext,$safeeval,$$parstack[$#$parstack]); |
$bodytext=&Apache::run::evaluate($bodytext,$safeeval,$$parstack[$#$parstack]); |
|
|
if ($target eq 'web' || $target eq 'webgrade' || $target eq 'grade' |
if ($target eq 'web' || $target eq 'webgrade' || $target eq 'grade' |
|| $target eq 'answer' || $target eq 'tex' || $target eq 'analyze' ) { |
|| $target eq 'answer' || $target eq 'tex' || $target eq 'analyze' ) { |
Line 384 sub start_import {
|
Line 384 sub start_import {
|
&Apache::lonxml::error("<b> Unable to find <i>$bodytext as $location</i> for import</b>"); |
&Apache::lonxml::error("<b> Unable to find <i>$bodytext as $location</i> for import</b>"); |
return ""; |
return ""; |
} |
} |
|
my $importmode=&Apache::lonxml::get_param('importmode',$parstack,$safeeval); |
|
if (($importmode eq 'problem') || ($importmode eq 'part')) { |
|
# We are using import to import published problems |
|
# This will require some on-the-fly rewriting |
|
my $importid=&Apache::lonxml::get_param('id',$parstack,$safeeval); |
|
if ($importid) { |
|
# Rewrite all internal IDs of the problem to avoid duplicates |
|
$file=~s/id\s*=\s*([\"\'])(\w+)([\"\'])/id=$1$2DynPart$importid$3/gs; |
|
} |
|
if (($importmode eq 'problem') || ($file=~/<part[^<]*>/s)) { |
|
# We explicitly don't want this to be a separate part or the problem already has parts |
|
$file=~s/^\s*<problem>/<library>/s; |
|
$file=~s/<\/problem>\s*$/<\/library>/s; |
|
} else { |
|
# We want this to be a separate part, but it currently is not |
|
if ($importid) { |
|
$file=~s/^\s*<problem>/<library><part id="DynPart$importid">/s; |
|
} else { |
|
$file=~s/^\s*<problem>/<library><part>/s; |
|
} |
|
$file=~s/<\/problem>\s*$/<\/part><\/library>/s; |
|
} |
|
} |
my $dir=$location; |
my $dir=$location; |
$dir=~s:/[^/]*$::; |
$dir=~s:/[^/]*$::; |
# &Apache::lonxml::debug("directory $dir $location file $file \n<b>END</b>\n"); |
# &Apache::lonxml::debug("directory $dir $location file $file \n<b>END</b>\n"); |
Line 397 sub start_import {
|
Line 419 sub start_import {
|
|
|
} elsif ($target eq "edit" ) { |
} elsif ($target eq "edit" ) { |
$result.=&Apache::edit::tag_start($target,$token); |
$result.=&Apache::edit::tag_start($target,$token); |
$result.=&Apache::edit::editline($token->[1],$bodytext,'',40); |
my $location=$token->[1]; |
|
$location=~s/^\s*//s; |
|
$location=~s/\s*$//s; |
|
$result.=&Apache::edit::editline($location,$bodytext,'',40); |
$result.=&Apache::edit::browse(undef,'textnode'); |
$result.=&Apache::edit::browse(undef,'textnode'); |
|
$result.= ' <label>'.&mt('Import as:'). |
|
'<select name="importmode_'.$Apache::lonxml::curdepth.'">'; |
|
my %options=&Apache::lonlocal::texthash('' => 'as standard library', |
|
'problem' => 'as problem', |
|
'part' => 'as problem part(s)'); |
|
foreach my $option (sort(keys(%options))) { |
|
$result.='<option value="'.$option.'"'; |
|
if ($option eq &Apache::lonxml::get_param('importmode',$parstack,$safeeval)) { |
|
$result.=' selected="selected"'; |
|
} |
|
$result.='>'.$options{$option}.'</option>'; |
|
} |
|
$result.='</select></label>'; |
#FIXME this need to convert $bodytext to be a contruction space reference |
#FIXME this need to convert $bodytext to be a contruction space reference |
#my $location=&Apache::lonnet::filelocation($Apache::lonxml::pwd['-1'],$bodytext); |
#my $location=&Apache::lonnet::filelocation($Apache::lonxml::pwd['-1'],$bodytext); |
#$result.="Click<a href=\"$location\">here</a> to edit<br />" |
#$result.="Click<a href=\"$location\">here</a> to edit<br />" |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
$result=$token->[4].&Apache::edit::modifiedfield("/import",$parser); |
&Apache::edit::get_new_args($token,$parstack,$safeeval,'importmode'); |
|
$result='<import id="'.$token->[2]{'id'}.'" importmode="'.$token->[2]{'importmode'}.'">'; |
|
$result.=&Apache::edit::modifiedfield("/import",$parser); |
} elsif ($target eq 'meta') { |
} elsif ($target eq 'meta') { |
my $id= &Apache::lonxml::get_id($parstack,$safeeval); |
my $id= &Apache::lonxml::get_id($parstack,$safeeval); |
$result.='<import part="'.$Apache::inputtags::part; |
$result.='<import part="'.$Apache::inputtags::part; |
Line 597 sub start_algebra {
|
Line 637 sub start_algebra {
|
$inside = &Apache::run::evaluate($inside,$safeeval,$$parstack[-1]); |
$inside = &Apache::run::evaluate($inside,$safeeval,$$parstack[-1]); |
if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { |
if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { |
my $style=&Apache::lonxml::get_param('style',$parstack,$safeeval); |
my $style=&Apache::lonxml::get_param('style',$parstack,$safeeval); |
$result=&Apache::lontexconvert::algebra($inside,$target,$style,$parstack,$safeeval); |
$result=&Apache::lontexconvert::algebra($inside,undef,$target,$style,$parstack,$safeeval); |
} |
} |
$Apache::lonxml::post_evaluate=0; |
$Apache::lonxml::post_evaluate=0; |
} |
} |