[freeside-commits] freeside/httemplate/edit/process part_virtual_field.html, NONE, 1.1

Erik Levinson levinse at wavetail.420.am
Fri Jul 22 11:56:27 PDT 2011


Update of /home/cvs/cvsroot/freeside/httemplate/edit/process
In directory wavetail.420.am:/tmp/cvs-serv17321/httemplate/edit/process

Added Files:
	part_virtual_field.html 
Log Message:
custom fields, RT11714

--- NEW FILE: part_virtual_field.html ---
<% include( 'elements/process.html',
    'table'          => 'part_virtual_field',
    'viewall_dir'    => 'browse',
    'precheck_callback' => sub {
        my ($cgi) = @_;
        $act = 'edit' if $cgi->param('vfieldpart');
        my @permitted_tables = qw( svc_broadband router cust_main );
        return 'Table not in list of permitted tables' 
            unless $cgi->param('dbtable') 
                && grep { $_ eq $cgi->param('dbtable') } @permitted_tables;
        '';
    },
    'noerror_callback' => sub {
        my ($cgi, $object) = @_;
        if ( $act eq 'add' ) {
            use FS::Schema qw( reload_dbdef );
            warn "cf add started schema modification, time=".time;
            my $dbh = dbh;
            my $sql = "ALTER TABLE ".$object->dbtable." ADD COLUMN cf_".$object->name." varchar(".$object->length.")";
            $dbh->do($sql) or die $dbh->errstr;
            $sql = "ALTER TABLE h_".$object->dbtable." ADD COLUMN cf_".$object->name." varchar(".$object->length.")";
            $dbh->do($sql) or die $dbh->errstr;

            # apparently nothing happens w/o commit here - but is this OK?
            $dbh->commit or die $dbh->errstr; 

            # reload schema
            my $dbdef_file = "/usr/local/etc/freeside/dbdef.".datasrc # XXX: fix this
            my $dbdef = new_native DBIx::DBSchema $dbh;
            $dbdef->save($dbdef_file);
            delete $FS::Schema::dbdef_cache{$dbdef_file}; #force an actual reload
            reload_dbdef($dbdef_file);
            
            warn "cf add done schema modification, time=".time;
        }
        # XXX: edit is going to be harder: possibly add editing length and renaming column
        '';
    },
)
%>
<%init>

my $act = 'add';

die "access denied"
  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');

</%init>



More information about the freeside-commits mailing list