[LON-CAPA-cvs] cvs: loncom /homework edit.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Sun, 18 Feb 2007 02:01:00 -0000
albertel Sat Feb 17 21:01:00 2007 EDT
Modified files:
/loncom/homework edit.pm
Log:
- work wth Tasks
- strip and restore leading and trailing whitespace from textarea editors
- Nesting multiple of the same tags did't work well
Index: loncom/homework/edit.pm
diff -u loncom/homework/edit.pm:1.104 loncom/homework/edit.pm:1.105
--- loncom/homework/edit.pm:1.104 Mon Jan 29 18:51:19 2007
+++ loncom/homework/edit.pm Sat Feb 17 21:00:59 2007
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# edit mode helpers
#
-# $Id: edit.pm,v 1.104 2007/01/29 23:51:19 albertel Exp $
+# $Id: edit.pm,v 1.105 2007/02/18 02:00:59 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -112,13 +112,19 @@
my ($tagname,$closingtag);
if (defined($Apache::edit::inserttag[-2])) {
$tagname=$Apache::edit::inserttag[-2];
- } else {$tagname='problem';}
+ } else {
+ if ($Apache::lonhomework::parsing_a_task) {
+ $tagname='Task';
+ } else {
+ $tagname='problem';
+ }
+ }
if (defined($Apache::edit::inserttag[-1])) {
$closingtag=$Apache::edit::inserttag[-1];
}
$result.=&innerinsertlist('edit',$tagname,$closingtag).
"</td></tr></table></div>";
- pop(@Apache::edit::inserttag);
+ my $last = pop(@Apache::edit::inserttag);
return $result;
}
@@ -232,11 +238,11 @@
return '';
}
my $tagnum =$env{"form.insert_after_$tagname\_$Apache::lonxml::curdepth"};
- return &do_insert($tagnum);
+ return &do_insert($tagnum,1);
}
sub do_insert {
- my ($tagnum) = @_;
+ my ($tagnum,$after) = @_;
my $result;
my $newtag = $Apache::lonxml::insertlist{"$tagnum.tag"};
@@ -244,7 +250,10 @@
if ($func eq 'default') {
my $namespace;
if ($newtag =~ /::/) { ($namespace,$newtag) = split(/::/,$newtag); }
- $result.="\n<$newtag>\n</$newtag>";
+ my $depth = scalar(@Apache::lonxml::depthcounter);
+ $depth -- if ($after);
+ my $inset = "\t"x$depth;
+ $result.="\n$inset<$newtag>\n$inset</$newtag>";
} else {
if (defined(&$func)) {
{
@@ -565,6 +574,10 @@
&Apache::lonhtmlcommon::add_htmlareafields('homework_edit_'.
$Apache::lonxml::curdepth);
}
+ # remove typesetting whitespace from between data and the end tag
+ # to make the edit look prettier
+ $data =~ s/\n?[ \t]*$//;
+
return $description."\n".'<textarea style="width:100%" rows="'.$rows.
'" cols="'.$cols.'" name="homework_edit_'.
$Apache::lonxml::curdepth.'" id="homework_edit_'.
@@ -577,15 +590,17 @@
sub modifiedfield {
my ($endtag,$parser) = @_;
my $result;
-# foreach my $envkey (sort keys %env) {
-# &Apache::lonxml::debug("$envkey ---- $env{$envkey}");
-# }
-# &Apache::lonxml::debug("I want homework_edit_$Apache::lonxml::curdepth");
-# &Apache::lonxml::debug($env{"form.homework_edit_$Apache::lonxml::curdepth"});
$result=$env{"form.homework_edit_$Apache::lonxml::curdepth"};
my $bodytext=&Apache::lonxml::get_all_text($endtag,$parser);
# textareas throw away intial \n
- if ($bodytext=~/^\n/) { $result="\n".$result; }
+ if ($bodytext=~/^\n/) {
+ $result="\n".$result;
+ }
+ # if there is typesetting whitespace from between the data and the end tag
+ # restore to keep the source looking pretty
+ if ($bodytext =~ /(\n?[ \t]*)$/) {
+ $result .= $1;
+ }
return $result;
}