[interchange-cvs] interchange - heins modified
dist/lib/UI/pages/admin/meta_editor.html
interchange-cvs at icdevgroup.org
interchange-cvs at icdevgroup.org
Thu Apr 8 23:30:29 EDT 2004
User: heins
Date: 2004-04-09 03:30:29 GMT
Modified: dist/lib/UI/pages/admin meta_editor.html
Log:
* Add extension to allow custom settings on a per-widget basis. Looks for
a special metadata key _widget::$type to find the settings.
The record in the mv_metadata table for a widget named "kupu"
looks like:
code:_widget::kupu
extended: {
_order => 'window_width window_height page_title show_debug',
page_title => {
help => 'Title for editor page',
widget => 'text_60',
label => 'Editor title text',
},
show_debug => {
help => 'Show Kupu Debug window',
label => 'Show Debug Window',
widget => 'yesno',
},
window_height => {
label => 'Editor Window Height',
widget => 'text_4',
help => 'In pixels',
},
window_width => {
label => 'Editor Window Width',
widget => 'text_4',
help => 'In pixels',
}
}
When these fields are found, the following gets added to ui_data_fields:
=Special for kupu widget
extended.window_width
extended.window_height
extended.page_title
extended.show_debug
The help, label, and widget values are added to the
appropriate option hashes.
Obviously you must select the widget type first, then on the
*next* access to that you will see the new tab.
These options are passed to the Form.pm or Widget code routine
for the widget.
Revision Changes Path
2.11 +81 -39 interchange/dist/lib/UI/pages/admin/meta_editor.html
rev 2.11, prev_rev 2.10
Index: meta_editor.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/meta_editor.html,v
retrieving revision 2.10
retrieving revision 2.11
diff -u -r2.10 -r2.11
--- meta_editor.html 22 Feb 2004 19:28:37 -0000 2.10
+++ meta_editor.html 9 Apr 2004 03:30:29 -0000 2.11
@@ -68,35 +68,14 @@
[flag type=write table="[cgi mv_data_table]"]
[perl table="[cgi mv_data_table]"]
- ### If there is a view, set defaults from non-view record
- ### for this item
-
- # Always want this removed first, don't proceed if no view
- $Tag->tmp('tmp_defaults');
- return unless $CGI->{ui_meta_view};
-
- my $db = $Db{$CGI->{mv_data_table}};
-
- # Don't bother if already exists
- return if $db->record_exists($CGI->{item_id});
-
- my $id = $CGI->{item_id};
- $id =~ s/^[^:]+:+//;
- my $rec = $db->row_hash($id)
- or return;
- delete $rec->{code};
- $Scratch->{tmp_defaults} = $rec;
- return;
-[/perl]
-[table-editor
- item_id="[cgi item_id]"
- table="[cgi mv_data_table]"
- no-table-meta=1
- no-meta=1
- start-at="[cgi start_at]"
- default=`$Scratch->{tmp_defaults}`
- ui_data_fields="
+ my $sneak_type = $Tag->data($CGI->{mv_data_table}, 'type', $CGI->{item_id});
+ my $extra_meta;
+ if($sneak_type) {
+ $extra_meta = $Tag->meta_record("_widget::$sneak_type", undef, undef, 1);
+ }
+ %me_opt = (
+ ui_data_fields => qq{
=Typical
code
@@ -152,19 +131,19 @@
prepend
append
__UI_META_ADDITIONAL__
- "
+ },
- options=`{
+ options => {
'extended.ui_sort_option' => qq{=--default--,f=Case insensitive, fr=Case insensitive/Reverse, n=Numeric, nr=Reverse Numeric},
- }`
+ },
- filter=`{
+ filter => {
'extended.maxlength' => 'digits',
'extended.width' => 'digits',
'extended.height' => 'digits',
- }`
+ },
- label=`{
+ label => {
'extended.ui_more_alpha' => 'Alphabetic more links',
'extended.ui_sort_option' => 'Sort option',
'extended.fs_no_group' => 'No group link',
@@ -188,15 +167,15 @@
'extended.maxlength' => 'Maxlength',
'extended.check' => 'Profile check',
'extended.blank_default' => 'Default value',
- }`
- help=`{
+ },
+ help => {
'extended.fs_data_calc' => 'Current record passed as $item',
'extended.fs_data_tables' => 'To have open for Safe module',
'extended.maxlength' => 'For text widget (HTML maxlength=NN)',
'extended.blank_default' => 'Applies only when empty',
'extended.check' => 'Standard IC mv_profile checks -- required, postcode, etc.',
- }`
- widget=`{
+ },
+ widget => {
extended => "textarea_5_50",
'extended.ui_more_alpha' => 'yesno',
'extended.ui_sort_option' => 'select',
@@ -205,12 +184,75 @@
'extended.fs_data_calc' => 'textarea_4_70',
'extended.maxlength' => 'text_4',
'extended.check' => 'textarea_2_50',
- }`
+ },
+ );
+
+ if($extra_meta) {
+#Debug("Found extra_meta=" . uneval($extra_meta));
+ my $extra_fields = '';
+ my @keys;
+ if(! $extra_meta->{_order}) {
+ @keys = grep $_ !~ /^_/, sort keys %$extra_meta;
+ }
+ elsif(ref($extra_meta->{_order})) {
+ @keys = @{$extra_meta->{_order}};
+ }
+ else {
+ @keys = grep /\S/ && $_ !~ /^_/, split /[\s,\0]+/, $extra_meta->{_order};
+ }
+ foreach my $k (@keys) {
+ my $v = $extra_meta->{$k};
+#Debug("extra_meta key=$k v=$v");
+ next unless ref($v) eq 'HASH';
+ $extra_fields .= "extended.$k\n";
+ while(my ($key, $val) = each %$v) {
+ $me_opt{$key}{"extended.$k"} = $val;
+ }
+ }
+ if($extra_fields) {
+ $me_opt{ui_data_fields} =~ s/\s*$/\n\n=Special for $sneak_type widget\n\n$extra_fields/;
+ }
+ }
+#Debug(uneval(\%me_opt));
+ ### If there is a view, set defaults from non-view record
+ ### for this item
+
+ # Always want this removed first, don't proceed if no view
+ $Tag->tmp('tmp_defaults');
+ return unless $CGI->{ui_meta_view};
+
+ my $db = $Db{$CGI->{mv_data_table}};
+
+ # Don't bother if already exists
+ return if $db->record_exists($CGI->{item_id});
+
+ my $id = $CGI->{item_id};
+ $id =~ s/^[^:]+:+//;
+ my $rec = $db->row_hash($id)
+ or return;
+ delete $rec->{code};
+ $Scratch->{tmp_defaults} = $rec;
+ return;
+[/perl]
+
+[table-editor
+ item_id="[cgi item_id]"
+ table="[cgi mv_data_table]"
+ no-table-meta=1
+ no-meta=1
+ start-at="[cgi start_at]"
+ default=`$Scratch->{tmp_defaults}`
+ ui_data_fields=`$me_opt{ui_data_fields}`
+ options=`$me_opt{options}`
+ filter=`$me_opt{filter}`
+ label=`$me_opt{label}`
+ help=`$me_opt{help}`
+ widget=`$me_opt{widget}`
ui_style=1
output_map=1
tabbed=1
][/table-editor]
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Revision: 2.10 $ -->
+<!-- page: @@MV_PAGE@@ version: $Revision: 2.11 $ -->
More information about the interchange-cvs
mailing list