[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 => \¤t_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, 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