[interchange-cvs] interchange - heins modified 21 files

interchange-cvs at icdevgroup.org interchange-cvs at icdevgroup.org
Thu Apr 14 16:30:34 EDT 2005


User:      heins
Date:      2005-04-14 20:30:34 GMT
Modified:  lib/Vend Form.pm
Modified:  dist/lib/UI/pages/admin meta_editor.html
Added:     code/Widget checkbox.widget combo.widget date.widget
Added:              default.widget display.widget labels.widget
Added:              links.widget movecombo.widget multiple.widget
Added:              noyes.widget option_format.widget options.widget
Added:              radio.widget realvalue.widget select.widget
Added:              show.widget text.widget value.widget yesno.widget
Log:
* Move all widgets out to code/Widget.

* Can specify multiple variants of widgets with something like:

	CodeDef movecombo Widget 1
	CodeDef movecombo Description Combo move
	CodeDef movecombo Help Selects any/all of many options, puts in text box
	CodeDef movecombo MapRoutine Vend::Form::movecombo
	CodeDef movecombo_replace Widget 1
	CodeDef movecombo_replace Description Combo move (one value)
	CodeDef movecombo_replace Help Selects one of many options, puts in text box

 Note the movecombo_replace variant has no Routine or MapRoutine.
 It is parsed by the internal parser to type of movecombo with
 option "replace".

 Ideally we would be able to have a parser associated with each
 type, specified outboard as well. I will work on this.

 The major effect of this is that you can put anywhere:

    CodeDef text_40 Widget 1
    CodeDef text_40 Description Text box, 40 columns

 This adds the entry to the widget type selector, but the parser
 still makes it a { type => 'text', width => 40 }.

* Change the meta editor so that it uses a movecombo_replace
  for the widget selector. This allows you to select a text
  widget, but add the "_40" on manually to allow easy widget
  specification.

* Add a movecombo_replace variant (i.e. { type => 'movecombo', replace => 1}
  which calls a different mode of addItem to only allow one value
  to be selected.

Revision  Changes    Path
2.54      +22 -35    interchange/lib/Vend/Form.pm


rev 2.54, prev_rev 2.53
Index: Form.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Form.pm,v
retrieving revision 2.53
retrieving revision 2.54
diff -u -r2.53 -r2.54
--- Form.pm	14 Apr 2005 15:13:14 -0000	2.53
+++ Form.pm	14 Apr 2005 20:30:33 -0000	2.54
@@ -1,6 +1,6 @@
 # Vend::Form - Generate Form widgets
 # 
-# $Id: Form.pm,v 2.53 2005/04/14 15:13:14 mheins Exp $
+# $Id: Form.pm,v 2.54 2005/04/14 20:30:33 mheins Exp $
 #
 # Copyright (C) 2002-2003 Interchange Development Group
 # Copyright (C) 1996-2002 Red Hat, Inc.
@@ -38,7 +38,7 @@
 require Exporter;
 @ISA = qw(Exporter);
 
-$VERSION = substr(q$Revision: 2.53 $, 10);
+$VERSION = substr(q$Revision: 2.54 $, 10);
 
 @EXPORT = qw (
 	display
@@ -651,9 +651,14 @@
 	my ($opt, $opts) = @_;
 	my $name = $opt->{name};
 	$opt->{name} = "X$name";
-	my $ejs = ",1" if $opt->{rows} > 1;
-	$opt->{extra} .= qq{ onChange="addItem(this.form['X$name'],this.form['$name']$ejs)"}
+	my $usenl = $opt->{rows} > 1 ? 1 : 0;
+	my $only = $opt->{replace} ? 1 : 0;
+	$opt->{extra} .= qq{ onChange="addItem(this.form['X$name'],this.form['$name'],$usenl,$only)"}
             unless $opt->{extra} =~ m/\bonchange\s*=/i;
+
+	$opt->{rows} = $opt->{height} unless length($opt->{rows});
+	$opt->{cols} = $opt->{width} unless length($opt->{cols});
+
 	my $tbox = '';
 	my $out = dropdown($opt, $opts);
 
@@ -1321,29 +1326,6 @@
 		}
 	}
 
-	# Action taken for various types
-	my %daction = (
-		checkbox    => \&box,
-		combo		=> \&combo,
-		date		=> \&date_widget,
-		default     => \&template_sub,
-		display     => \&current_label,
-		links		=> \&links,
-		movecombo	=> \&movecombo,
-		multiple    => \&dropdown,
-		noyes		=> \&noyes,
-		option_format => \&option_widget,
-		options     => \&show_options,
-		labels      => \&show_labels,
-		radio       => \&box,
-		select      => \&dropdown,
-		show        => \&show_data,
-		value       => sub { my $opt = shift; return $opt->{encoded} },
-		realvalue   => sub { my $opt = shift; return $opt->{value} },
-		yesno		=> \&yesno,
-	);
-
-	## The user/admin widget space
 	# Optimization for large lists
 	unless($Vend::UserWidget) {
 		my $ref;
@@ -1356,17 +1338,21 @@
 				$Vend::UserWidget->{$k} = $v;
 			}
 		}
+		if(my $ref = $Global::CodeDef->{Widget}{MapRoutine}) {
+			no strict 'refs';
+			while ( my ($k, $v) = each %$ref) {
+				next if $Vend::UserWidget->{$k};
+				$Vend::UserWidget->{$k} = \&{"$v"};
+			}
+		}
 	}
 
-	my $sub =  $Vend::UserWidget->{$type}
-			|| $daction{$type}
-			|| $daction{default};
+	my $sub =  $Vend::UserWidget->{$type} || $Vend::UserWidget->{default};
 
 	if($opt->{variant}) {
 #::logDebug("variant='$opt->{variant}'");
 		$opt->{subwidget}	=  $Vend::UserWidget->{$opt->{variant}}
-							|| $daction{$opt->{variant}}
-							|| $daction{default};
+							||  $Vend::UserWidget->{default};
 	}
 
 	if(my $c = $opt->{check}) {
@@ -1497,10 +1483,11 @@
 		$opt->{type} = 'combo';
 		$opt->{reverse} = 1;
 	}
-	elsif($type =~ /^move_combo[ _]*(?:(\d+)(?:[ _]+(\d+))?)?/i) {
-		$opt->{rows} = $opt->{rows} || $1 || 1;
-		$opt->{cols} = $opt->{cols} || $2 || 16;
+	elsif($type =~ /^move_*combo[ _]*(?:(\d+)(?:[ _]+(\d+))?)?/i) {
+		$opt->{rows} = $opt->{rows} || $opt->{height} || $1 || 1;
+		$opt->{cols} = $opt->{cols} || $opt->{width} || $2 || 16;
 		$opt->{type} = 'movecombo';
+		$opt->{replace} = 1 if $type =~ /replace/;
 	}
 	elsif($type =~ /multi/i) {
 		$opt->{type} = 'select';



2.17      +9 -1      interchange/dist/lib/UI/pages/admin/meta_editor.html


rev 2.17, prev_rev 2.16
Index: meta_editor.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/meta_editor.html,v
retrieving revision 2.16
retrieving revision 2.17
diff -u -r2.16 -r2.17
--- meta_editor.html	13 Apr 2005 16:13:27 -0000	2.16
+++ meta_editor.html	14 Apr 2005 20:30:33 -0000	2.17
@@ -142,6 +142,7 @@
 		'field' => qq{columns::$m_table},
 		'extended.js_check' => qq{codedef::JavascriptCheck},
 		'filter' => 'codedef:filter:empty',
+		'type' => 'codedef:widget',
 	},
 
 	filter => {
@@ -180,6 +181,7 @@
 		'extended.restrict_allow' => 'Allow these ITL tags',
 		'display_filter' => 'Display filter',
 	},
+
 	help => {
 		'extended.fs_data_calc' => 'Current record passed as $item',
 		'extended.fs_data_tables' => 'To have open for Safe module',
@@ -190,8 +192,12 @@
 		'extended.restrict_allow' => 'in append/prepend/lookup_query',
 		'display_filter' => 'Only used for hidden_text type',
 	},
+	width => {
+		type => 30,
+	},
 	widget => {
-		extended => "textarea_5_50",
+		type => 'movecombo_replace',
+		extended => 'textarea_5_50',
 		'extended.ui_more_alpha' => 'yesno',
 		'extended.ui_sort_option' => 'select',
 		'extended.fs_no_group' => 'yesno',
@@ -269,6 +275,8 @@
 	options=`$me_opt{options}`
 	filter=`$me_opt{filter}`
 	label=`$me_opt{label}`
+	height=`$me_opt{height}`
+	width=`$me_opt{width}`
 	help=`$me_opt{help}`
 	widget=`$me_opt{widget}`
 	ui_style=1
@@ -277,4 +285,4 @@
 	][/table-editor]
 
 @_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Revision: 2.16 $ -->
+<!-- page: @@MV_PAGE@@ version: $Revision: 2.17 $ -->



1.1                  interchange/code/Widget/checkbox.widget


rev 1.1, prev_rev 1.0
Index: checkbox.widget
===================================================================
CodeDef checkbox Widget 1
CodeDef checkbox Description Checkbox
CodeDef checkbox Help Selection of single/multiple values
CodeDef checkbox MapRoutine Vend::Form::box
CodeDef check_nbsp Widget 1
CodeDef check_nbsp Description Checkbox (nbsp)
CodeDef check_nbsp Help Selection of single/multiple values, &nbsp; for spaces



1.1                  interchange/code/Widget/combo.widget


rev 1.1, prev_rev 1.0
Index: combo.widget
===================================================================
CodeDef combo Widget 1
CodeDef combo Description Combo Select
CodeDef combo MapRoutine Vend::Form::combo



1.1                  interchange/code/Widget/date.widget


rev 1.1, prev_rev 1.0
Index: date.widget
===================================================================
CodeDef date Widget 1
CodeDef date Description Date selector
CodeDef date MapRoutine Vend::Form::date_widget



1.1                  interchange/code/Widget/default.widget


rev 1.1, prev_rev 1.0
Index: default.widget
===================================================================
CodeDef default Widget 1
CodeDef default Description Default widget if none selected
CodeDef default Visibility private
CodeDef default MapRoutine Vend::Form::template_sub



1.1                  interchange/code/Widget/display.widget


rev 1.1, prev_rev 1.0
Index: display.widget
===================================================================
CodeDef display Widget 1
CodeDef display Description Text of option
CodeDef display MapRoutine Vend::Form::current_label



1.1                  interchange/code/Widget/labels.widget


rev 1.1, prev_rev 1.0
Index: labels.widget
===================================================================
CodeDef labels Widget 1
CodeDef labels Description Show labels
CodeDef labels MapRoutine Vend::Form::show_labels



1.1                  interchange/code/Widget/links.widget


rev 1.1, prev_rev 1.0
Index: links.widget
===================================================================
CodeDef links Widget 1
CodeDef links Description Build links
CodeDef links MapRoutine Vend::Form::links



1.1                  interchange/code/Widget/movecombo.widget


rev 1.1, prev_rev 1.0
Index: movecombo.widget
===================================================================
CodeDef movecombo Widget 1
CodeDef movecombo Description Combo move
CodeDef movecombo Help Selects any/all of many options, puts in text box
CodeDef movecombo MapRoutine Vend::Form::movecombo
CodeDef movecombo_replace Widget 1
CodeDef movecombo_replace Description Combo move (one value)
CodeDef movecombo_replace Help Selects one of many options, puts in text box



1.1                  interchange/code/Widget/multiple.widget


rev 1.1, prev_rev 1.0
Index: multiple.widget
===================================================================
CodeDef multiple Widget 1
CodeDef multiple Description Select multiple
CodeDef multiple Help Dropdown list with all options shown 
CodeDef multiple MapRoutine Vend::Form::dropdown



1.1                  interchange/code/Widget/noyes.widget


rev 1.1, prev_rev 1.0
Index: noyes.widget
===================================================================
CodeDef noyes Widget 1
CodeDef noyes Description No/Yes (No=1)
CodeDef noyes Help Default is 1 for No
CodeDef noyes MapRoutine Vend::Form::noyes



1.1                  interchange/code/Widget/option_format.widget


rev 1.1, prev_rev 1.0
Index: option_format.widget
===================================================================
CodeDef option_format Widget 1
CodeDef option_format Description Option formatter
CodeDef option_format MapRoutine Vend::Form::option_widget



1.1                  interchange/code/Widget/options.widget


rev 1.1, prev_rev 1.0
Index: options.widget
===================================================================
CodeDef options Widget 1
CodeDef options Description Show all options
CodeDef options MapRoutine Vend::Form::show_options



1.1                  interchange/code/Widget/radio.widget


rev 1.1, prev_rev 1.0
Index: radio.widget
===================================================================
CodeDef radio Widget 1
CodeDef radio Description Radio box
CodeDef radio MapRoutine Vend::Form::box



1.1                  interchange/code/Widget/realvalue.widget


rev 1.1, prev_rev 1.0
Index: realvalue.widget
===================================================================
CodeDef realvalue Widget 1
CodeDef realvalue Description Unencoded value
CodeDef realvalue Help Skips HTML::Entities encode process
CodeDef realvalue Routine sub { my $opt = shift; return $opt->{value} }



1.1                  interchange/code/Widget/select.widget


rev 1.1, prev_rev 1.0
Index: select.widget
===================================================================
CodeDef select Widget 1
CodeDef select Description Select box
CodeDef select Help AKA dropdown menu
CodeDef select MapRoutine Vend::Form::dropdown



1.1                  interchange/code/Widget/show.widget


rev 1.1, prev_rev 1.0
Index: show.widget
===================================================================
CodeDef show Widget 1
CodeDef show Description Show all options
CodeDef show MapRoutine Vend::Form::show_data



1.1                  interchange/code/Widget/text.widget


rev 1.1, prev_rev 1.0
Index: text.widget
===================================================================
CodeDef text Widget 1
CodeDef text Description Text entry*
CodeDef text Help Default HTML input widget
CodeDef textarea Widget 1
CodeDef textarea Description Text box (textarea)
CodeDef textarea Help Size defined by height and width



1.1                  interchange/code/Widget/value.widget


rev 1.1, prev_rev 1.0
Index: value.widget
===================================================================
CodeDef value Widget 1
CodeDef value Description Show value
CodeDef value Help Encoded with HTML::Entities::encode
CodeDef value Routine sub { my $opt = shift; return $opt->{encoded} }



1.1                  interchange/code/Widget/yesno.widget


rev 1.1, prev_rev 1.0
Index: yesno.widget
===================================================================
CodeDef yesno Widget 1
CodeDef yesno Description Yes/No (Yes=1)
CodeDef yesno MapRoutine Vend::Form::yesno








More information about the interchange-cvs mailing list