[set page_title]Layout auto-populate[/set] [set ui_class]Design[/set] [set page_banner]Layout Editor: Organize your site into categories[/set] [set page_perm]layout=e[/set] [set help_name]layout.edit[/set] [set icon_name]icon_pages.gif[/set] [tmp meta_header] [include include/table_populator]
[/tmp] [seti ui_body_extra][/seti] @_UI_STD_HEAD_@ [form-session-id]

1. | Choose a table as the source: | [if !value area_table] [value name=area_table set=products hide=1] [value name=area_column set=prod_group hide=1] [value name=cat_column set=category hide=1] [/if]
2. | Choose a column to populate areas: |
3. | Choose a column to populate categories: |
4. | Choose a search type: |
5. | Complex search code: | NOTE: Not active unless complex search selected above. fi=products st=db co=yes sf=prod_group se=~PROD_GROUP~ op=eq sf=category se=~CATEGORY~ op=eq sf=inactive se=1 op=ne rf=sku va=banner_text=~BANNER_TEXT~
6. | Select the page class: |
7. | Select the page area: |
8. | Decide whether to remove previous settings: |

9.

Click this button to populate:

[button text="Populate"] [flag type=write table="area"] [flag type=write table="cat"] [seti ui_failure] [perl tables="area cat [cgi area_table]"] my $go_page = $CGI->{mv_nextpage}; $CGI->{mv_nextpage} = '@@MV_PAGE@@'; my $ptab = $CGI->{area_table} or return "no area source table"; my $pdb = $Db{$ptab} or return "area source table bad"; my $adb = $Db{area} or return "no area table"; my $cdb = $Db{cat} or return "no cat table"; my $acol = $CGI->{area_column}; my $ccol = $CGI->{cat_column}; if(! $acol and ! $ccol ) { return "no column to populate either"; } my $selector = ''; my $selcode = ''; my %area_defaults = ( name => undef, which_page => $CGI->{which_page} || 'all', sort => '05', sel => $CGI->{sel} || 'left', display_type => 'name', ); my %catmap; my $narrow; my $lt; my $search_code; if($CGI->{cat_type} eq 'simple') { $lt = 'simple'; $selector = 'category=~CATEGORY~'; $search_code = ''; } elsif($CGI->{cat_type} eq 'narrow') { $narrow = 1; $lt = 'simple'; $selector = <<EOF; category=~CATEGORY~ prod_group=~PROD_GROUP~ EOF $search_code = ''; } else { $lt = 'complex'; $selector = ''; $search_code = $CGI->{search_code}; } my %cat_defaults = ( link_type => $lt, selector => $selector, search => $search_code, sort => '05', display_type => 'name' ); if($CGI->{nuke}) { $adb->query('delete from area'); $cdb->query('delete from cat'); } if($acol) { $adb->config('AUTO_NUMBER', '1000') if ! $adb->config('_Auto_number'); return "area column $acol doesn't exist" unless $pdb->column_exists($acol); my $ary = $pdb->query({ sql => "select distinct $acol from $ptab order by $acol", ml => 'all', }) or return "area column query failed"; for(@$ary) { my ($area) = (@$_); my $key = $adb->set_row(''); return "no autonumbering available" if ! $key; $catmap{$area} = $key; for(keys %area_defaults) { $adb->set_field($key, $_, $area_defaults{$_} || $area); } } } my %catdone; if($ccol) { $cdb->config('AUTO_NUMBER', '1000') if ! $cdb->config('_Auto_number'); return "cat column $ccol doesn't exist" unless $pdb->column_exists($ccol); my ($ary, $fh) = $pdb->query({ sql => "select $acol, $ccol from $ptab order by $ccol", ml => 'all', }) or return "cat column query failed"; foreach my $row (@$ary) { my $area = $row->[$fh->{$acol}]; my $cat = $row->[$fh->{$ccol}]; my $donetag = $narrow ? "$area:$cat" : $cat; next if $catdone{$donetag}++; my $key = $cdb->set_row(''); return "no cat autonumbering available" if ! $key; my %defaults = %cat_defaults; $defaults{name} = $cat; $defaults{sel} = $catmap{$area}; $defaults{search} =~ s/~ (\w+) ~/$row->[$fh->{lc $1}]/gx; $defaults{selector} =~ s/~ (\w+) ~/$row->[$fh->{lc $1}]/gx; for(keys %defaults) { Log("setting col=$_ key=$key = $defaults{$_}"); $cdb->set_field($key, $_, $defaults{$_}); } } } $CGI->{mv_nextpage} = $go_page; my $out = $Tag->uneval( { ref => \%catmap } ); $out =~ s/,/,\n/g; #return '

    ' . $Tag->uneval( { ref => \%catmap } ) . "

"; return; [/perl] [/seti] [/button]

@_UI_STD_FOOTER_@