--- loncom/homework/edit.pm 2001/12/21 16:58:25 1.26
+++ loncom/homework/edit.pm 2023/03/27 18:41:06 1.157
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# edit mode helpers
#
-# $Id: edit.pm,v 1.26 2001/12/21 16:58:25 harris41 Exp $
+# $Id: edit.pm,v 1.157 2023/03/27 18:41:06 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -25,490 +25,1339 @@
#
# http://www.lon-capa.org/
#
-# 3/20 Guy
+
+=pod
+
+=head1 NAME
+
+Apache::edit - edit mode helpers
+
+=head1 SYNOPSIS
+
+Invoked by many homework and xml related modules.
+
+ &Apache::edit::SUBROUTINENAME(ARGUMENTS);
+
+=head1 INTRODUCTION
+
+This module outputs HTML syntax helpful for the rendering of edit
+mode interfaces.
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org.
+
+=head1 SUBROUTINES
+
+=over 4
+
+=item initialize_edit()
+
+initialize edit (set colordepth to zero)
+
+=item tag_start($target,$token,$description)
+
+provide deletion and insertion lists
+for the manipulation of a start tag; return a scalar string
+
+=item tag_end($target,$token,$description)
+
+ending syntax corresponding to
+&tag_start. return a scalar string.
+
+=item start_table($token)
+
+start table; update colordepth; return scalar string.
+
+=item end_table()
+
+reduce color depth; end table; return scalar string
+
+=item start_spanning_row()
+
+start a new table row spanning the 'edit' environment.
+
+=item start_row()
+
+start a new table row and element.
+
+=item end_row()
+
+end current table element and row.
+
+=item movebuttons($target,$token)
+
+move-up and move-down buttons; return scalar string
+
+=item deletelist($target,$token)
+
+provide a yes option in an HTML select element; return scalar string
+
+=item handle_delete($space,$target,$token,$tagstack,$parstack,$parser,$safeeval,
+$style)
+
+respond to a user delete request by passing relevant stack
+and array information to various rendering functions; return a scalar string
+
+=item get_insert_list($token)
+
+provide an insertion list based on possibilities from lonxml; return a scalar string
+
+=item insertlist($target,$token)
+
+api that uses get_insert_list; return a scalar string
+
+=item handleinsert($token)
+
+provide an insertion list based on possibilities from lonxml; return a scalar string
+
+=item get_insert_list($token)
+
+provide an insertion list based on possibilities from lonxml; return a scalar string
+
+=item browse($elementname)
+
+provide a link which will open up the filesystem browser (lonindexer) and, once a file is selected, place the result in the form element $elementname.
+
+=item search($elementname)
+
+provide a link which will open up the filesystem searcher (lonsearchcat) and, once a file is selected, place the result in the form element $elementname.
+
+=item editline(tag,data,description,size)
+
+Provide a for single-line text entry. This is to be used for text enclosed by tags, not arguements/parameters associated with a tag.
+
+=back
+
+=cut
+
package Apache::edit;
use strict;
use Apache::lonnet;
+use Apache::loncommon;
+use HTML::Entities();
+use Apache::lonlocal;
+use lib '/home/httpd/lib/perl/';
+use LONCAPA qw(:DEFAULT :match);
+
# Global Vars
# default list of colors to use in editing
@Apache::edit::colorlist=('#ffffff','#ff0000','#00ff00','#0000ff','#0ff000','#000ff0','#f0000f');
# depth of nesting of edit
$Apache::edit::colordepth=0;
+@Apache::edit::inserttag=();
+# image-type responses: active background image and curdepth at definition
+$Apache::edit::bgimgsrc='';
+$Apache::edit::bgimgsrccurdepth='';
sub initialize_edit {
- $Apache::edit::colordepth=0;
+ $Apache::edit::colordepth=0;
+ @Apache::edit::inserttag=();
}
sub tag_start {
- my ($target,$token,$description) = @_;
- my $result='';
- if ($target eq "edit") {
- my $tag=$token->[1];
- if (!$description) {
- $description=&Apache::lonxml::description($token);
- if (!$description) { $description="<$tag>"; }
- }
- $result.= &start_table($token)."
$description
-
Delete".
- &deletelist($target,$token)
- ."
-
".
- &insertlist($target,$token).
- "
-
\n";
-#
".
+ my ($target,$token,$description) = @_;
+ my $result='';
+ if ($target eq "edit") {
+ my $tag=$token->[1];
+ if (!$description) {
+ $description=&mt(&Apache::lonxml::description($token));
+ if (!$description) { $description="<$tag>"; }
+ }
+ $result.= &start_table($token)."