--- loncom/homework/edit.pm 2001/06/26 21:39:55 1.14 +++ loncom/homework/edit.pm 2001/12/04 14:47:33 1.25 @@ -1,5 +1,30 @@ # The LearningOnline Network with CAPA # edit mode helpers +# +# $Id: edit.pm,v 1.25 2001/12/04 14:47:33 albertel Exp $ +# +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# # 3/20 Guy package Apache::edit; @@ -21,7 +46,10 @@ sub tag_start { my $result=''; if ($target eq "edit") { my $tag=$token->[1]; - if (!$description) { $description="<$tag>"; } + if (!$description) { + $description=&Apache::lonxml::description($token); + if (!$description) { $description="<$tag>"; } + } $result.= &start_table($token)."$description Delete". &deletelist($target,$token) @@ -30,6 +58,9 @@ sub tag_start { &insertlist($target,$token). " \n"; +#". +# &movebuttons($target,$token). +# "\n"; } return $result; } @@ -54,7 +85,7 @@ sub start_table { my $tag = $token->[1]; my $tagnum; foreach my $namespace (reverse @Apache::lonxml::namespace) { - my $testtag=$Apache::lonxml::namespace['-1'].'::'.$tag; + my $testtag=$namespace.'::'.$tag; $tagnum=$Apache::lonxml::insertlist{"$testtag.num"}; if (defined($tagnum)) { last; } } @@ -74,6 +105,15 @@ sub end_table { return $result; } +sub movebuttons { + my ($target,$token) = @_; + my $result=''; + $result.=''; + return $result; +} + sub deletelist { my ($target,$token) = @_; my $result = "\n"; -# return "
\n<$tag>
\n   
\n</$tag>
\n"; + if (length($_) > $maxlength) { $maxlength = length($_); } + } split ("\n", $$data); + my $rows = $count; + my $cols = $maxlength; + return ($rows,$cols); +} + +sub editfield { + my ($tag,$data,$description,$minwidth,$minheight)=@_; + + my ($rows,$cols)=&textarea_sizes(\$data); + if ($cols > 80) { $cols = 80; } + if ($cols < $minwidth ) { $cols = $minwidth; } + if ($rows < $minheight) { $rows = $minheight; } + if ($description) { $description="
".$description."
"; } + return "$description\n   \n"; } sub modifiedfield { @@ -211,21 +327,14 @@ sub modifiedfield { return $result; } -sub insert_startouttext { - 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) { @@ -236,16 +345,23 @@ 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 = '[1].'>'; } @@ -280,5 +396,29 @@ sub select_arg { 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__