[tmp page_title] [either] [cgi page_title] [or] [L]Select for table edit[/L]: [cgi mv_data_table] [/either] [/tmp] [tmp page_secure][either]@@UI_SECURE@@[or]__UI_SECURE__[/either][/tmp] [tmp page_banner] [either] [cgi page_banner] [or] [cgi page_title] [or] [loop list="[cgi mv_data_table]"] [L]Select for table edit[/L]: [page href="__UI_BASE__/flex_editor" secure="[scratch page_secure]" form=' mv_data_table=__UI_META_TABLE__ ui_meta_view=dbconfig ui_data_fields=code name height field options attribute width type display_filter help help_url ui_break_before=height display_filter page_title=[L]Change display information[/L]: [loop-code] ui_return_to=__UI_BASE__/gentable ui_return_stack=1 item_id=[loop-code] '][loop-code] [/loop] [/either] [/tmp] [tmp help_name][either][cgi help_name][or]flex.select[/either][/tmp] [tmp icon_name][either][cgi icon_name][or]icon_config.gif[/either][/tmp] [if cgi mv_return_table] [calc] $CGI->{mv_data_table} = delete $CGI->{mv_return_table}; return; [/calc] [/if] [if-mm function="!tables" table="[cgi mv_data_table]"] [tmp errorurl][area href="__UI_BASE__/error" secure="[either]@@UI_SECURE@@[or]__UI_SECURE__[/either]"][/tmp] [bounce href="[scratch errorurl]"] [/if-mm] [perl tables="[cgi mv_data_table] __UI_META_TABLE__"] delete $Scratch->{ui_location}; if($CGI->{ui_sequence_edit}) { my $doit; if($CGI->{item_id_left} =~ s/^(.*?),//) { $CGI->{item_id} = $1; $doit = 1; } elsif ($CGI->{item_id_left}) { $CGI->{item_id} = delete $CGI->{item_id_left}; delete $CGI->{ui_sequence_edit}; $doit = 1; } else { delete $CGI->{item_id}; delete $CGI->{ui_sequence_edit}; } return unless $doit; $Scratch->{ui_location} = $Tag->area( { href => '__UI_BASE__/flex_editor', secure => $Scratch->{page_secure}, form => qq{ mv_data_table=$CGI->{mv_data_table} item_id=$CGI->{item_id} item_id_left=$CGI->{item_id_left} ui_sequence_edit=$CGI->{ui_sequence_edit} ui_return_to=__UI_BASE__/flex_select ui_return_to=mv_data_table=$CGI->{mv_data_table} ui_return_to=ui_sequence_edit=$CGI->{ui_sequence_edit} ui_page_banner=Edit next key $CGI->{item_id} }, }); return; } my $tab = $CGI->{mv_data_table} or return; my $db = $Db{$tab}; if(! $db) { $Scratch->{ui_error} = errmsg('no %s database', $tab); $Scratch->{ui_location} = $Tag->area({href=>"__UI_BASE__/error", secure=>$Scratch->{page_secure}}); return; } delete $Scratch->{tmp_large}; if( $Variable->{UI_LARGE_TABLE} =~ /\b$tab\b/ or $db->config('LARGE') ) { $Scratch->{tmp_large} = 1; } return unless $CGI->{item_id}; return unless delete $CGI->{deleterecords}; return unless $Tag->if_mm('tables', '=d'); delete $Scratch->{ui_location}; $Config->{NoSearch} = ''; for(grep $_, @{$CGI_array->{item_id}}) { $db->delete_record($_) or push @errors, $@; } if(@errors) { my $plural = @errors > 1 ? 's' : ''; return "Error$plural:
"; } return; [/perl] [if scratch ui_location] [bounce href=`delete $Scratch->{ui_location}`] [elsif !cgi mv_data_table] [bounce page="__UI_BASE__/gentable"] [/elsif] [/if] @_UI_STD_HEAD_@ [update values]
[if !scratch tmp_large]
[loop list="[cgi mv_data_table]"] [if-loop-data __UI_META_TABLE__ name] [loop-data __UI_META_TABLE__ name] [/if-loop-data] [if-loop-data __UI_META_TABLE__ help_url]    help [/if-loop-data] [if-loop-data __UI_META_TABLE__ help]
[loop-data __UI_META_TABLE__ name] [/if-loop-data] [/loop]
[/if] [if scratch ui_failure]

[scratch ui_failure][set ui_failure][/set]

  [/if] [if scratch ui_message]

[scratch ui_message][set ui_message][/set]

  [/if] [if-mm !super] [tmp ui_owner][db-hash table="__UI_ACCESS_TABLE__" column="table_control::[cgi mv_data_table]::owner_field" key="[data session username]"][/tmp] [/if-mm] [set tmp_nomatch_message][L]No records[/L].[/set] [set tmp_like_spec][/set] [perl tables="[cgi mv_data_table] __UI_META_TABLE__"] my $tab = $CGI->{mv_data_table}; my $ref = $Db{$tab}; my $mref = $Db{__UI_META_TABLE__}; if (! $ref) { $Scratch->{keypos} = 0; return; } elsif (! $mref) { $Scratch->{keypos} = 0; } my $meta; if($mref and $mref->record_exists($CGI->{mv_data_table}) ) { $meta = $mref->row_hash($CGI->{mv_data_table}); } else { $meta = {}; } if($CGI->{ui_flex_key}) { $Scratch->{keypos} = $CGI->{ui_flex_key}; } else { $Scratch->{keypos} = $ref->config('KEY_INDEX'); } $Scratch->{keyname} = $ref->config('KEY'); $Config->{NoSearch} = ''; $ui_text_qualification = $CGI->{ui_text_qualification}; if ($ui_text_qualification and $CGI->{ui_text_qualification} =~ /[\^]/ ) { if($Scratch->{ui_owner}) { $CGI->{ui_text_qualification} = <{ui_owner} se=$Session->{username} op=eq nu=0 os=0 su=0 bs=0 EOF } else { $CGI->{ui_text_qualification} = "co=1\n"; } my @entries = split /\s+(and|or)\s+/i, $ui_text_qualification; my $or; for(@entries) { if(/^or$/i) { $or = 1; $CGI->{ui_text_qualification} .= "os=1\n"; next; } elsif(/^and$/i) { $or = 0; $CGI->{ui_text_qualification} .= "os=0\n"; next; } my ($f, $op, $s) = split /\s*([<=!>\^]+)\s*/, $_, 2; $op = "eq" if $op eq "=="; $op = "rm" if $op eq "="; if($op eq '^') { $op = 'rm'; $CGI->{ui_text_qualification} .= "bs=1\nsu=1\n"; } else { $CGI->{ui_text_qualification} .= "bs=0\nsu=0\n"; } $CGI->{ui_text_qualification} .= "se=$s\nsf=$f\nop=$op\n"; if($op =~ /[<>]/ and $s =~ /^[\d.]+$/) { $CGI->{ui_text_qualification} .= "nu=1\n"; } else { $CGI->{ui_text_qualification} .= "nu=0\n"; } } if(defined $or) { $CGI->{ui_text_qualification} .= $or ? "os=1\n" : "os=0\n"; } $out_message = '

' . errmsg('Entries matching "%s"', $ui_text_qualification) . '

'; } elsif ($ui_text_qualification) { $CGI->{ui_text_qualification} = "se=$CGI->{ui_text_qualification}"; $out_message = '

' . errmsg('Entries matching "%s"', $ui_text_qualification) . '

'; if($Scratch->{ui_owner}) { $CGI->{ui_text_qualification} = <{ui_owner} se=$Session->{username} op=eq sf=:* se=$CGI->{ui_text_qualification} EOF } } elsif ( $CGI->{mv_like_field} ) { my @f = split /\0/, $CGI->{mv_like_field}; my @s = split /\0/, $CGI->{mv_like_spec}; my @q = 'ra=yes'; my $found; for(my $i = 0; $i < @f; $i++) { next unless length $s[$i]; $found++; push @q, "lf=$f[$i]"; push @q, "ls=$s[$i]"; } if($found) { $CGI->{ui_text_qualification} = join "\n", @q; } else { $CGI->{ui_text_qualification} = "" } } elsif($Scratch->{ui_owner}) { $CGI->{ui_text_qualification} = <{ui_owner} se=$Session->{username} op=eq EOF } elsif ($Scratch->{tmp_large}) { #Debug("It is large."); my $keylabel = $Tag->display({ table => $tab, name => 'item_id', column => $Scratch->{keyname}, template => 1, }); my $url = $Tag->area( { href => '__UI_BASE__/flex_editor' } ); $Scratch->{'[L]Edit[/L]'} = <{tmp_nomatch_message} = < EOF $Scratch->{tmp_like_spec} = 1; $CGI->{ui_text_qualification} = ""; } else { $CGI->{ui_text_qualification} = "ra=yes"; } $CGI->{ui_sort_field} = $meta->{lookup} || $Scratch->{keyname} if ! $CGI->{ui_sort_field}; $CGI->{ui_list_size} = $meta->{height} if ! $CGI->{ui_list_size}; if(! ($CGI->{ui_show_fields} ||= $meta->{field}) ) { $CGI->{ui_show_fields} = $CGI->{ui_description_fields} = join ",", $ref->columns(); } else { my $i = 0; my $show = $CGI->{ui_show_fields}; $show =~ s/(\w+)(?:\((.*?)\))?/ ($filter_show[$i++] = $2), $1/eg; #Log("filter_show: " . $Tag->uneval( { ref => \@filter_show } )); $show =~ s/[\0,\s]+/,/g; $CGI->{ui_description_fields} = $show; } @cols = grep $ref->column_exists($_), split /,/, $CGI->{ui_description_fields}; my %limit_field; $CGI->{ui_limit_fields} =~ s/[\0,\s]+/ /g; $CGI->{ui_limit_fields} =~ s/^\s+//; $CGI->{ui_limit_fields} =~ s/\s+$//; my (@limit_field) = split " ", $CGI->{ui_limit_fields}; #Log("show_field: " . $Tag->uneval( { ref => \@cols } )); #Log("cols ary: " . $Tag->uneval( { ref => \@cols } )); #Log("limit_fields ary: " . $Tag->uneval( { ref => \@limit_field } )); if(@limit_field) { #Log("limit_fields ary: " . $Tag->uneval( { ref => \@limit_field } )); @limit_field{@limit_field} = (); #Log("limit_fields: " . $Tag->uneval( { ref => \%limit_field } )); @cols = grep ! exists($limit_field{$_}), @cols; #Log("cols ary: " . $Tag->uneval( { ref => \@cols } )); } unshift(@cols, $Scratch->{keyname}) if $cols[0] ne $Scratch->{keyname}; for(@cols) { $numeric{$_} = 1 if $ref->numeric($_); } $CGI->{ui_description_fields} = join ",", @cols; $Scratch->{sparams} = $Scratch->{tmp_like_spec} ? '' : <{mv_data_table} st=db $CGI->{ui_text_qualification} su=1 md=1 ml=$CGI->{ui_list_size} tf=$CGI->{ui_sort_field} to=$CGI->{ui_sort_option} rf=$CGI->{ui_description_fields} EOF return $out_message; [/perl] [set tmp_ncols][/set] [if cgi ui_meta_view] [return-to] [else] [/else] [/if] [loop list="[cgi ui_description_fields]"] {tmp_ncols}++; while ($filter_show[ [loop-increment] - 1] =~ m/\b(v?align\s*=\w+)/gi) { $extra .= " $1"; } return $extra || ' ALIGN=LEFT'; [/loop-calc]> [loop-change 1][condition]1[/condition]    [/loop-change 1] select by [loop-code] [/loop] [loop list="[cgi ui_description_fields]"] [/loop] [tmp tmp_url] mv_data_table=[cgi mv_data_table] ui_page_title=[cgi ui_page_title] ui_page_banner=[cgi ui_page_banner] ui_meta_specific=[cgi ui_meta_specific] [if cgi ui_return_to] [and !cgi ui_return_stack] [return-to formlink] [else] ui_return_to=@@MV_PAGE@@ [/else] [/if][/tmp] [search-region more=1 arg="[scratch sparams]"] [search-list] [item-sub show_line] sub { my ($pre, $post) = split /\t/, shift; my $line = shift; return unless $line; shift (@$line); my $out = ''; my $i = 1; for(@$line) { my $filter = $filter_show[$i] || ''; $filter .= ' encode_entities' unless $filter =~ /\b(?:encode_)?entities\b/; my $extra = ''; $extra .= " $1" while $filter =~ s/(v?align=\w+)//i; #Log("$i filter = $filter"); $_ = $Tag->filter($filter, $_); s/\[/[/g; $out .= "$_"; $i++; } return $out . "\n"; } [/item-sub] [item-exec show_line][/item-exec] [/search-list] [no-match] [if scratch tmp_like_spec] [loop list="[cgi ui_description_fields]"] [/loop] [/if] [/no-match] [more-list] [/more-list]
[loop-change 1][condition]1[/condition]    [/loop-change 1] [loop-code]
  [page href=__UI_BASE__/flex_editor form=| [scratch tmp_url] item_id=[item-code] |][item-code]
[scratchd tmp_nomatch_message]
[L]Or enter a query by example to select a set of records.[/L] [L]Each input will match on the beginning text in the field.[/L]
[L]More rows[/L]: [decade-next][/decade-next] [more] [decade-prev][/decade-prev]
[on-match] [if !cgi ui_meta_view] [button text="[L]Edit checked records in sequence[/L]"] ui_sequence_edit=[calc] $CGI->{item_id_left} = $CGI->{item_id}; $CGI->{item_id_left} =~ s/\0+/,/g; if($CGI->{item_id_left} =~ s/^(.*?),//) { $CGI->{item_id} = $1; return 1; } else { delete $CGI->{item_id_left}; return ''; } [/calc] mv_nextpage=__UI_BASE__/flex_editor mv_todo=return [/button] [/if]      [button text="[L]Delete checked records[/L]" confirm="[L]Are you sure you want to delete the checked records?[/L]"] [flag type=write table="[cgi mv_data_table]"] deleterecords=1 mv_click=db_maintenance [/button] [/on-match] [/search-region] @_UI_STD_FOOTER_@