--- loncom/homework/edit.pm 2001/06/16 20:33:33 1.12
+++ loncom/homework/edit.pm 2001/08/13 21:43:48 1.21
@@ -23,7 +23,7 @@ sub tag_start {
my $tag=$token->[1];
if (!$description) { $description="<$tag>"; }
$result.= &start_table($token)."
$description |
-Delete:".
+ | Delete".
&deletelist($target,$token)
." |
".
@@ -40,9 +40,9 @@ sub tag_end {
if ($target eq 'edit') {
my $tag=$token->[1];
if (!defined($description)) {
- $result.=" |
</$tag>";
+ $result.=" |
</$tag> | | ";
} else {
- if ($description ne '') { $result.="
$description"; }
+ if ($description ne '') { $result.=" |
$description | | "; }
}
$result.="
".&end_table()."\n";
}
@@ -77,13 +77,35 @@ sub end_table {
sub deletelist {
my ($target,$token) = @_;
my $result = "";
return $result;
}
+sub handle_delete {
+ if (!$ENV{"form.delete_$Apache::lonxml::curdepth"}) { return ''; }
+ my ($space,$target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result=0;
+ if ($space) {
+ my $sub1="$space\:\:delete_$token->[1]";
+ {
+ no strict 'refs';
+ if (defined &$sub1) {
+ $result=&$sub1($target,$token,$tagstack,$parstack,$parser,$safeeval,$style);
+ }
+ }
+ }
+ if (!$result) {
+ my $endtag='/'.$token->[1];
+ my $bodytext=&Apache::lonxml::get_all_text($endtag,$$parser[$#$parser]);
+ $$parser['-1']->get_token();
+ &Apache::lonxml::debug("Deleting :$bodytext: for $token->[1]");
+ &Apache::lonxml::end_tag($tagstack,$parstack,$token);
+ }
+ return 1;
+}
+
sub get_insert_list {
my ($token) = @_;
my $result='';
@@ -124,7 +146,7 @@ $optionlist
}
sub handle_insert {
- if (!$ENV{"form.insert_$Apache::lonxml::curdepth"}) { return ''; }
+ if ($ENV{"form.insert_$Apache::lonxml::curdepth"} eq '') { return ''; }
my $result;
my $tagnum = $ENV{"form.insert_$Apache::lonxml::curdepth"};
my $func=$Apache::lonxml::insertlist{"$tagnum.function"};
@@ -134,22 +156,55 @@ sub handle_insert {
if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }
$result.="\n<$newtag>\n$newtag>";
} else {
- {
- no strict 'refs';
- $result.=&$func();
+ if (defined(&$func)) {
+ {
+ no strict 'refs';
+ $result.=&$func();
+ }
+ } else {
+ my $newtag=$Apache::lonxml::insertlist{"$tagnum.tag"};
+ &Apache::lonxml::error("Unable to insert tag $newtag, $func was not defined.");
}
}
return $result;
}
+sub insert_responseparam {
+ return '
+ ';
+}
+
+sub insert_numericalresponse {
+ return '
+
+
+
+
+';
+}
+
+sub insert_stringresponse {
+ return '
+
+
+
+
+';
+}
+
sub insert_optionresponse {
return '
+
+
';
}
+sub insert_displayduedate { return ''; }
+sub insert_displaytitle { return ''; }
+
sub editfield {
my ($tag,$data,$description,$minwidth,$minheight)=@_;
@@ -188,16 +243,21 @@ sub modifiedfield {
}
sub insert_startouttext {
- return "\n\n";
+ return "\n";
+}
+
+sub insert_script {
+ return "\n";
}
-# Returns a 1 if the toekn has been modified and you should rebuild the tag
+# Returns a 1 if the token has been modified and you should rebuild the tag
# side-effects, will modify the $token if new values are found
sub get_new_args {
my ($token,$parstack,$safeeval,@args)=@_;
my $rebuild=0;
foreach my $arg (@args) {
- my $value=&Apache::lonxml::get_param($arg,$parstack,$safeeval);
+ #just want the string that it was set to
+ my $value=$token->[2]->{$arg};
my $newvalue=$ENV{"form.$Apache::lonxml::curdepth.$arg"};
&Apache::lonxml::debug(" for:$arg: cur is :$value: new is :$newvalue:");
if ($value ne $newvalue) {
@@ -208,20 +268,80 @@ sub get_new_args {
return $rebuild;
}
+# looks for /> on start tags
sub rebuild_tag {
my ($token) = @_;
my $result;
if ($token->[0] eq 'S') {
$result = '<'.$token->[1];
while (my ($key,$val)= each(%{$token->[2]})) {
+ $val=~s:^\s+|\s+$::g;
+ $val=~s:"::g; #"
&Apache::lonxml::debug("setting :$key: to :$val:");
$result.=' '.$key.'="'.$val.'"';
}
- $result.=">";
+ if ($token->[4] =~ m:/>$:) {
+ $result.=' />';
+ } else {
+ $result.='>';
+ }
} elsif ( $token->[0] eq 'E' ) {
$result = ''.$token->[1].'>';
}
return $result;
}
+
+sub text_arg {
+ my ($description,$name,$token,$size) = @_;
+ my $result;
+ if (!defined $size) { $size=20; }
+ my $arg=$token->[2]{$name};
+ $result=$description.'';
+ return $result;
+}
+
+sub select_arg {
+ my ($description,$name,$list,$token) = @_;
+ my $result;
+ my $optionlist="";
+ my $selected=$token->[2]{$name};
+ foreach my $option (@$list) {
+ if ( $selected eq $option ) {
+ $optionlist.="\n";
+ } else {
+ $optionlist.="\n";
+ }
+ }
+ $result.=$description.'';
+ return $result;
+}
+
+sub select_or_text_arg {
+ my ($description,$name,$list,$token,$size) = @_;
+ my $result;
+ my $optionlist="";
+ my $found=0;
+ my $selected=$token->[2]{$name};
+ foreach my $option (@$list) {
+ if ( $selected eq $option ) {
+ $optionlist.="\n";
+ $found=1;
+ } else {
+ $optionlist.="\n";
+ }
+ }
+ $optionlist.="\n";
+ if ($found) {
+ $result.=$description.' |
';
+ } else {
+ $result.=&text_arg($description,$name,$token,$size);
+ }
+ return $result;
+}
1;
__END__
|