view release on metacpan or search on metacpan
lib/Apache/SWIT/HTPage/Safe.pm view on Meta::CPAN
my $idef = $dbh->selectcol_arrayref("select indexdef from pg_indexes"
. " where indexname = ? and tablename = ?", undef, $uq
, $root->CDBI_Class->table);
goto ORIG_ERROR unless ($idef && $idef->[0]);
my ($iargs) = ($idef->[0] =~ /\((.*)\)$/);
confess "No index args for $idef->[0]" unless $iargs;
my %cols = map { ($_, 1) } split(/, /, $iargs);
my @errs = map { [ $_->[1], "unique" ] } grep { $cols{$_->[0]} }
map { [ ($_->options->{cdbi_bind} || $_->options->{safe_bind}
|| $_->name), $_->name ] }
grep { exists($_->options->{cdbi_bind})
|| exists($_->options->{safe_bind}) }
@{ $root->Widgets_List };
return $class->swit_encode_errors(\@errs);
ORIG_ERROR:
return shift()->SUPER::ht_swit_update_die(@_);
}
1;
lib/Apache/SWIT/Maker/Skeleton/Scaffold/Form.pm view on Meta::CPAN
sub template { return <<'ENDS'; }
use strict;
use warnings FATAL => 'all';
package [% class_v %]::Root;
use base 'HTML::Tested::ClassDBI';
use [% db_class_v %];
__PACKAGE__->ht_add_widget(::HTV."::Hidden", '[% table_v %]_id'
, cdbi_bind => 'Primary');
__PACKAGE__->ht_add_widget(::HTV."::Submit", 'submit_button'
, default_value => 'Submit');
__PACKAGE__->ht_add_widget(::HTV."::Submit", 'delete_button'
, default_value => 'Delete');
__PACKAGE__->ht_add_widget(::HTV."::Form", form => default_value => 'u');
[% FOREACH fields_v %]
__PACKAGE__->ht_add_widget(::HTV."::EditBox"
, [% field %] => cdbi_bind => '');[% END %]
__PACKAGE__->bind_to_class_dbi('[% db_class_v %]');
package [% class_v %];
use base qw(Apache::SWIT::HTPage);
sub ht_swit_render {
my ($class, $r, $root) = @_;
$root->cdbi_load;
return $root;
}
lib/Apache/SWIT/Maker/Skeleton/Scaffold/Info.pm view on Meta::CPAN
sub template { return <<'ENDS'; }
use strict;
use warnings FATAL => 'all';
package [% class_v %]::Root;
use base 'HTML::Tested::ClassDBI';
use [% root_class_v %]::DB::[% table_class_v %];
__PACKAGE__->ht_add_widget(::HTV."::Form", form => default_value => 'u');
[% FOREACH fields_v %]
__PACKAGE__->ht_add_widget(::HTV."::Marked"
, [% field %] => cdbi_bind => '');[% END %]
__PACKAGE__->ht_add_widget(::HTV, [% table_v %]_id => cdbi_bind => 'Primary');
__PACKAGE__->bind_to_class_dbi('[% root_class_v %]::DB::[% table_class_v %]');
package [% class_v %];
use base qw(Apache::SWIT::HTPage);
sub ht_swit_render {
my ($class, $r, $root) = @_;
$root->cdbi_load;
return $root;
}
lib/Apache/SWIT/Maker/Skeleton/Scaffold/List.pm view on Meta::CPAN
sub template { return <<'ENDS'; }
use strict;
use warnings FATAL => 'all';
package [% class_v %]::Root::Item;
use base 'HTML::Tested::ClassDBI';
use [% root_class_v %]::DB::[% table_class_v %];
__PACKAGE__->ht_add_widget(::HTV."::Link", '[% col1_v %]'
, href_format => '../info/r?[% table_v %]_id=%s'
, cdbi_bind => [ [% col1_v %] => 'Primary' ]
, column_title => '[% link_title_v %]'
, 0 => { isnt_sealed => 1 });
[% FOREACH list_fields_v %]__PACKAGE__->ht_add_widget(::HTV."::Marked"
, '[% field %]', cdbi_bind => ''
, column_title => '[% title %]');
[% END %]
__PACKAGE__->bind_to_class_dbi('[% root_class_v %]::DB::[% table_class_v %]');
package [% class_v %]::Root;
use base 'HTML::Tested';
__PACKAGE__->ht_add_widget(::HTV."::Form", 'form', default_value => 'u');
__PACKAGE__->ht_add_widget(::HT."::List", '[% list_name_v %]'
, __PACKAGE__ . '::Item', render_table => 1);
package [% class_v %];
use base qw(Apache::SWIT::HTPage);
lib/Apache/SWIT/Test/ModuleTester.pm view on Meta::CPAN
$self->root_class($old_rc);
my $tree = YAML::LoadFile('conf/swit.yaml');
push @{ $tree->{startup_classes} }, $sess_class;
YAML::DumpFile('conf/swit.yaml', $tree);
}
sub Drop_Root {
return if $<;
unshare_ns() and die;
system("mount --bind blib/lib /mnt") and die;
$ENV{PERL5LIB} = "/mnt";
push @INC, "/mnt";
Test::TempDatabase->become_postgres_user;
}
1;
scripts/test_root.pl view on Meta::CPAN
my @mf = read_file('MANIFEST');
my $td = tempdir('/tmp/swit_root_XXXXXX', CLEANUP => 1);
for my $f (@mf) {
chomp $f;
mkpath $td . "/" . dirname($f);
system("cp -a $f $td/$f") and die $f;
}
chdir $td;
system("chmod -R o-rwx *") and die;
system("mount --bind /tmp /usr/local/share/perl/5.10.0/Apache") and die;
system("perl Makefile.PL") or system("make") or system("make", @ARGV);
chdir '/';
t/400_skeleton.t view on Meta::CPAN
is_with_diff($res, <<'ENDS');
use strict;
use warnings FATAL => 'all';
package Aaa::Bbb::UI::P::Root::Item;
use base 'HTML::Tested::ClassDBI';
use Aaa::Bbb::DB::TheTab;
__PACKAGE__->ht_add_widget(::HTV."::Link", 'col_a'
, href_format => '../info/r?the_tab_id=%s'
, cdbi_bind => [ col_a => 'Primary' ]
, column_title => 'ColA'
, 0 => { isnt_sealed => 1 });
__PACKAGE__->ht_add_widget(::HTV."::Marked"
, 'col_b', cdbi_bind => ''
, column_title => 'ColB');
__PACKAGE__->ht_add_widget(::HTV."::Marked"
, 'col_c', cdbi_bind => ''
, column_title => 'ColC');
__PACKAGE__->bind_to_class_dbi('Aaa::Bbb::DB::TheTab');
package Aaa::Bbb::UI::P::Root;
use base 'HTML::Tested';
__PACKAGE__->ht_add_widget(::HTV."::Form", 'form', default_value => 'u');
__PACKAGE__->ht_add_widget(::HT."::List", 'the_tab_list'
, __PACKAGE__ . '::Item', render_table => 1);
package Aaa::Bbb::UI::P;
use base qw(Apache::SWIT::HTPage);
t/400_skeleton.t view on Meta::CPAN
is_with_diff($res, <<'ENDS');
use strict;
use warnings FATAL => 'all';
package Aaa::Bbb::UI::Info::Root;
use base 'HTML::Tested::ClassDBI';
use Aaa::Bbb::DB::TheTab;
__PACKAGE__->ht_add_widget(::HTV."::Form", form => default_value => 'u');
__PACKAGE__->ht_add_widget(::HTV."::Marked"
, col_a => cdbi_bind => '');
__PACKAGE__->ht_add_widget(::HTV."::Marked"
, col_b => cdbi_bind => '');
__PACKAGE__->ht_add_widget(::HTV."::Marked"
, col_c => cdbi_bind => '');
__PACKAGE__->ht_add_widget(::HTV, the_tab_id => cdbi_bind => 'Primary');
__PACKAGE__->bind_to_class_dbi('Aaa::Bbb::DB::TheTab');
package Aaa::Bbb::UI::Info;
use base qw(Apache::SWIT::HTPage);
sub ht_swit_render {
my ($class, $r, $root) = @_;
$root->cdbi_load;
return $root;
}
t/400_skeleton.t view on Meta::CPAN
$res = read_file('lib/Aaa/Bbb/UI/Form.pm');
is_with_diff($res, <<'ENDS');
use strict;
use warnings FATAL => 'all';
package Aaa::Bbb::UI::Form::Root;
use base 'HTML::Tested::ClassDBI';
use Aaa::Bbb::DB::TheTab;
__PACKAGE__->ht_add_widget(::HTV."::Hidden", 'the_tab_id'
, cdbi_bind => 'Primary');
__PACKAGE__->ht_add_widget(::HTV."::Submit", 'submit_button'
, default_value => 'Submit');
__PACKAGE__->ht_add_widget(::HTV."::Submit", 'delete_button'
, default_value => 'Delete');
__PACKAGE__->ht_add_widget(::HTV."::Form", form => default_value => 'u');
__PACKAGE__->ht_add_widget(::HTV."::EditBox"
, col_a => cdbi_bind => '');
__PACKAGE__->ht_add_widget(::HTV."::EditBox"
, col_b => cdbi_bind => '');
__PACKAGE__->ht_add_widget(::HTV."::EditBox"
, col_c => cdbi_bind => '');
__PACKAGE__->bind_to_class_dbi('Aaa::Bbb::DB::TheTab');
package Aaa::Bbb::UI::Form;
use base qw(Apache::SWIT::HTPage);
sub ht_swit_render {
my ($class, $r, $root) = @_;
$root->cdbi_load;
return $root;
}
t/515_backup.t view on Meta::CPAN
isnt($?, 0) or diag($res);
like($res, qr/Rolled back/);
is(dist_md5(), $md5) or diag($res);
is_deeply([ glob("../*") ], [ '../TTT' ]);
$res = `./scripts/swit_app.pl add_ht_page TheTable 2>&1`;
is($?, 0) or diag($res);
isnt(-f 'lib/TTT/UI/TheTable.pm', undef) or ASTU_Wait($mt->root_dir);
ok(-f 'templates/thetable.tt');
append_file('lib/TTT/UI/TheTable.pm', "# bind('TTT::UI::TheTable')\n");
append_file('lib/TTT/UI/TheTable.pm', "# ok_ht_thetable_r\n");
append_file('lib/TTT/UI/TheTable.pm', "# standalone: TTT::UI::TheTable\n");
append_file('lib/TTT/UI/TheTable.pm', "# TTT::UI::TheTableA\n");
$res = `$swmv lib/TTT/UI/TheTable.pm lib/TTT/UI/TheTable/D.pm 2>&1`;
is($?, 0) or diag($res);
isnt(-f 'templates/thetable/d.tt', undef);
isnt(-f 'lib/TTT/UI/TheTable/D.pm', undef);
my $dpm = read_file('lib/TTT/UI/TheTable/D.pm');
like($dpm, qr/TheTable::D;/) or exit 1;
unlike($dpm, qr/TheTable::D::Root;/) or exit 1;
like($dpm, qr/bind\('TTT::UI::TheTable::D'\)/) or exit 1;
like($dpm, qr/ok_ht_thetable_d_r/) or exit 1;
like($dpm, qr/standalone: TTT::UI::TheTable::D/) or exit 1;
like($dpm, qr/TheTableA/);
my $cfyaml = read_file('conf/swit.yaml');
like($cfyaml, qr/TheTable::D\n/) or exit 1;
unlike($cfyaml, qr#d/list#) or exit 1;
my $t011 = read_file("t/dual/011_the_table.t");
like($t011, qr/ht_thetable_list_r/) or exit 1;
t/T/DBPage.pm view on Meta::CPAN
package T::DBPage::DB;
use base 'Apache::SWIT::DB::Base';
__PACKAGE__->set_up_table('dbp');
package T::DBPage;
use base 'Apache::SWIT::HTPage';
use HTML::Tested qw(HTV HT);
sub swit_startup {
my $rc = shift()->ht_make_root_class('HTML::Tested::ClassDBI');
$rc->ht_add_widget(HTV."::Hidden", id => cdbi_bind => 'Primary');
$rc->ht_add_widget(HTV."::EditBox", val => cdbi_bind => '');
$rc->ht_add_widget(HTV."::DropDown", 'sel');
$rc->ht_add_widget(HTV."::Marked", dt => is_datetime => 1);
$rc->bind_to_class_dbi("T::DBPage::DB");
my $c = $rc->ht_add_widget(HT."::List", 'arr')->containee;
$c->ht_add_widget(HTV."::Marked", "val");
}
sub ht_swit_render {
my ($class, $r, $root) = @_;
$root->cdbi_load;
$root->arr([ $root->arr_containee->new({ val => $root->val }) ]);
$root->sel([ [ 1, $root->val || "ded" ], [ 2, 'baba', 1 ] ]);
$root->dt(DateTime->now);
t/T/Safe.pm view on Meta::CPAN
package T::Safe::DB;
use base 'Apache::SWIT::DB::Base';
__PACKAGE__->set_up_table('safet');
package T::Safe::Root::L;
use base 'HTML::Tested';
__PACKAGE__->ht_add_widget(::HTV."::EditBox", 'o', is_integer => 1);
package T::Safe::Root;
use base 'HTML::Tested::ClassDBI';
__PACKAGE__->ht_add_widget(::HTV."::Hidden", 's_id' => cdbi_bind => 'Primary');
__PACKAGE__->ht_add_widget(::HTV."::EditBox", klak => cdbi_bind => 'k3');
__PACKAGE__->ht_add_widget(::HTV, 'referer');
__PACKAGE__->ht_add_widget(::HTV, scol => safe_bind => 'k3');
__PACKAGE__->ht_add_widget(::HTV, flak => cdbi_bind => 'k3'
, cdbi_readonly => 1);
__PACKAGE__->ht_add_widget(::HTV."::EditBox", $_ => cdbi_bind => '')
for qw(name k1 k2);
__PACKAGE__->ht_add_widget(::HTV."::EditBox", 'email' => cdbi_bind => ''
, constraints => [ [ regexp => '^[^ ]*$' ] ]);
__PACKAGE__->bind_to_class_dbi('T::Safe::DB');
__PACKAGE__->ht_add_widget(::HT."::List", sl => __PACKAGE__ . "::L");
package T::Safe;
use base 'Apache::SWIT::HTPage::Safe';
use Carp;
sub ht_swit_render {
my ($class, $r, $root) = @_;
$root->cdbi_load if $root->s_id;
$root->referer($r->headers_in->{Referer});
t/T/Upload.pm view on Meta::CPAN
package T::Upload::DB;
use base 'Apache::SWIT::DB::Base';
__PACKAGE__->set_up_table('upt');
package T::Upload::Root;
use base 'HTML::Tested::ClassDBI';
use HTML::Tested qw(HTV);
__PACKAGE__->ht_add_widget(::HTV, id => is_sealed => 1
=> cdbi_bind => 'Primary');
__PACKAGE__->ht_add_widget(::HTV."::Upload", the_upload => cdbi_upload =>
'loid');
__PACKAGE__->ht_add_widget('T::Upload::Image', mime_upload =>
cdbi_upload_with_mime => 'loid');
__PACKAGE__->ht_add_widget(::HTV, loid => is_sealed => 1 => cdbi_bind => ''
, cdbi_readonly => 1, skip_undef => 1);
__PACKAGE__->ht_add_widget(::HTV."::Form", form => default_value => 'u');
__PACKAGE__->ht_add_widget(::HTV."::EditBox", "val");
__PACKAGE__->bind_to_class_dbi("T::Upload::DB");
sub ht_validate { return (); }
package T::Upload;
use base 'Apache::SWIT::HTPage';
sub ht_swit_render {
my ($class, $r, $root) = @_;
$root->cdbi_load;
return $root;