⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 babelkit.pm

📁 BabelKit是一个通用多语言数据库代码表的接口。它接收维护使用多语言的多个数据库代码定义集中的所有编程工作。代码管理和翻译页可以让开发人员定义新的虚拟代码表
💻 PM
📖 第 1 页 / 共 2 页
字号:
package DBIx::BabelKit;use strict;use warnings;use Carp;use vars qw( $VERSION );$VERSION = '1.05';=head1 NAMEDBIx::BabelKit - Universal Multilingual Code Table Interface=head1 SYNOPSIS  use DBIx::BabelKit;   my $bk = new DBIx::BabelKit($dbh,                 table     => 'bk_code',                 getparam  => sub { $cgi->param(shift) },                 getparams => sub { $cgi->param(shift.'[]') }                 );=cut###  See the rest of the pod documentation at the end of this file.  ###sub new {    my $class = shift;    my $dbh = shift;    my $args = ref($_[0]) ? shift : { @_ };    my $self = {};    bless $self, $class;    croak 'DBIx::BabelKit->new($dbh): $dbh is not an object' unless ref $dbh;    $self->{dbh} = $dbh;    $self->{table}     = $args->{table} || 'bk_code';    $self->{getparam}  = $args->{getparam};    $self->{getparams} = $args->{getparams};    $self->{native}    = $self->_find_native;    croak "DBIx::BabelKit::new: unable to determine native language" .          " Check table '$self->{table}' for code_admin/code_admin record."        unless $self->{native};    return $self;}# # #  HTML display methods.sub desc {    my $self = shift;    return &htmlspecialchars( $self->render(@_) );}sub ucfirst {    my $self = shift;    return CORE::ucfirst( $self->desc(@_) );}sub ucwords {    my $self = shift;    my $str = $self->desc(@_);    $str =~ s/(^|\s)([a-z])/$1\u$2/g;    return $str;}# # #  Data methods.sub render {    my $self = shift;    my $code_desc = $self->data(@_);    if ($code_desc eq '') {        $code_desc = $self->data($_[0], $self->{native}, $_[2]);        if ($code_desc eq '') {            $code_desc = $_[2] || '';        }    }    return $code_desc;}sub data {    my $self = shift;    my $code_set = shift;    my $code_lang = shift;    my $code_code = shift;    $code_code .= '';   # DBI needs strings here.    $self->{data_sth} = $self->{dbh}->prepare("        select  code_desc        from    $self->{table}        where   code_set  = ?        and     code_lang = ?        and     code_code = ?    ") unless $self->{data_sth};    $self->{data_sth}->execute($code_set, $code_lang, $code_code);    my $code_desc = $self->{data_sth}->fetchrow;    $code_desc = '' unless defined $code_desc; # Avoid warnings.    return $code_desc;}sub param {    my $self = shift;    return $self->data($_[0], $self->{native}, $_[1]);}# # #  HTML select single value methods:sub select {    my $self = shift;    my $code_set = shift;    my $code_lang = shift;    my $args = ref($_[0]) ? shift : { @_ };    my $var_name      = $args->{var_name} || $code_set;    my $value         = $args->{value};    my $default       = $args->{default};    my $subset        = $args->{subset};    my $options       = $args->{options};    my $select_prompt = $args->{select_prompt};    my $blank_prompt  = $args->{blank_prompt};    # Variable setup.    $value            = $self->_getparam($var_name, $value, $default);    my $Subset        = &keyme($subset);    $options          = $options ? " $options" : '';    $select_prompt    = '' unless defined $select_prompt;    $blank_prompt     = '' unless defined $blank_prompt;    # Drop down box.    my $select = "<select name=\"$var_name\"$options>\n";    # Blank options.    my $selected = '';    if ($value eq '') {        if ($select_prompt eq '') {            $select_prompt =                $self->ucwords('code_set', $code_lang, $code_set) . '?';        }        $select .= "<option value=\"\" selected>$select_prompt\n";        $selected = 1;    } elsif ($blank_prompt ne '') {        $select .= "<option value=\"\">$blank_prompt\n";    }    # Show code set options.    my $set_list = $self->full_set($code_set, $code_lang);    for my $row ( @$set_list ) {        my ($code_code, $code_desc) = @$row;        next if ($Subset && !$Subset->{$code_code} && $code_code ne $value);        $code_desc = htmlspecialchars(CORE::ucfirst($code_desc));        if ($code_code eq $value) {            $selected = 1;            $select .= "<option value=\"$code_code\" selected>$code_desc\n";        } elsif ($row->[3] ne 'd') {            $select .= "<option value=\"$code_code\">$code_desc\n";        }    }    # Show a missing value.    if (!$selected) {        $select .= "<option value=\"$value\" selected>$value\n";    }    $select .= "</select>\n";    return $select;}sub radio {    my $self = shift;    my $code_set = shift;    my $code_lang = shift;    my $args = ref($_[0]) ? shift : { @_ };    my $var_name      = $args->{var_name} || $code_set;    my $value         = $args->{value};    my $default       = $args->{default};    my $subset        = $args->{subset};    my $options       = $args->{options};    my $blank_prompt  = $args->{blank_prompt};    my $sep           = $args->{sep};    # Variable setup.    $value            = $self->_getparam($var_name, $value, $default);    my $Subset        = &keyme($subset);    $options          = $options ? " $options" : '';    $blank_prompt     = '' unless defined $blank_prompt;    $sep              = "<br>\n" unless defined $sep;    # Blank options.    my $select = '';    my $selected = '';    if ($value eq '') {        $selected = 1;        if ($blank_prompt ne '') {            $select .= "<input type=\"radio\" name=\"$var_name\"$options";            $select .= " value=\"\" checked>$blank_prompt";        }    } else {        if ($blank_prompt ne '') {            $select .= "<input type=\"radio\" name=\"$var_name\"$options";            $select .= " value=\"\">$blank_prompt";        }    }    # Show code set options.    my $set_list = $self->full_set($code_set, $code_lang);    for my $row ( @$set_list ) {        my ($code_code, $code_desc) = @$row;        next if ($Subset && !$Subset->{$code_code} && $code_code ne $value);        $code_desc = htmlspecialchars(CORE::ucfirst($code_desc));        if ( $code_code eq $value ) {            $selected = 1;            $select .= $sep if $select;            $select .= "<input type=\"radio\" name=\"$var_name\"$options";            $select .= " value=\"$code_code\" checked>$code_desc";        } elsif ($row->[3] ne 'd') {            $select .= $sep if $select;            $select .= "<input type=\"radio\" name=\"$var_name\"$options";            $select .= " value=\"$code_code\">$code_desc";        }    }    # Show missing values.    if (!$selected) {        $select .= $sep if $select;        $select .= "<input type=\"radio\" name=\"$var_name\"$options";        $select .= " value=\"$value\" checked>$value";    }    return $select;}# # #  HTML select multiple value methods:sub multiple {    my $self = shift;    my $code_set = shift;    my $code_lang = shift;    my $args = ref($_[0]) ? shift : { @_ };    my $var_name      = $args->{var_name} || $code_set;    my $value         = $args->{value};    my $default       = $args->{default};    my $subset        = $args->{subset};    my $options       = $args->{options};    my $size          = $args->{size};    # Variable setup.    my $Value         = $self->_getparams($var_name, $value, $default);    my $Subset        = &keyme($subset);    $options          = $options ? " $options" : '';    # Select multiple box.    my $select = "<select multiple name=\"$var_name"."[]\"$options";    $select .= " size=\"$size\"" if ($size);    $select .= ">\n";    # Show code set options.    my $set_list = $self->full_set($code_set, $code_lang);    for my $row ( @$set_list ) {        my ($code_code, $code_desc) = @$row;        next if ($Subset && !$Subset->{$code_code} && !$Value->{$code_code});        $code_desc = htmlspecialchars(CORE::ucfirst($code_desc));        if ( $Value->{$code_code} ) {            $select .= "<option value=\"$code_code\" selected>$code_desc\n";            delete $Value->{$code_code};        } elsif ($row->[3] ne 'd') {            $select .= "<option value=\"$code_code\">$code_desc\n";        }    }    # Show missing values.    for my $code_code ( keys %$Value ) {        $select .= "<option value=\"$code_code\" selected>$code_code\n";    }    $select .= "</select>\n";    return $select;}sub checkbox {    my $self = shift;    my $code_set = shift;    my $code_lang = shift;    my $args = ref($_[0]) ? shift : { @_ };    my $var_name      = $args->{var_name} || $code_set;    my $value         = $args->{value};    my $default       = $args->{default};    my $subset        = $args->{subset};    my $options       = $args->{options};    my $sep           = $args->{sep};    # Variable setup.    my $Value         = $self->_getparams($var_name, $value, $default);    my $Subset        = &keyme($subset);    $options          = $options ? " $options" : '';    $sep              = "<br>\n" unless defined $sep;    # Show code set options.    my $select;    my $set_list = $self->full_set($code_set, $code_lang);    for my $row ( @$set_list ) {        my ($code_code, $code_desc) = @$row;        next if ($Subset && !$Subset->{$code_code} && !$Value->{$code_code});        $code_desc = htmlspecialchars(CORE::ucfirst($code_desc));        if ( $Value->{$code_code} ) {            $select .= $sep if $select;            $select .= "<input type=\"checkbox\" name=\"$var_name"."[]\"";            $select .= "$options value=\"$code_code\" checked>$code_desc";            delete $Value->{$code_code};        } elsif ($row->[3] ne 'd') {            $select .= $sep if $select;            $select .= "<input type=\"checkbox\" name=\"$var_name"."[]\"";            $select .= "$options value=\"$code_code\">$code_desc";        }    }    # Show missing values.    for my $code_code ( keys %$Value ) {        $select .= $sep if $select;        $select .= "<input type=\"checkbox\" name=\"$var_name"."[]\"";        $select .= "$options value=\"$code_code\" checked>$code_code";    }    return $select;}# # #  Code Set Methods.sub lang_set {    my $self = shift;    my $code_set = shift;    my $code_lang = shift;    $self->{set_sth} = $self->{dbh}->prepare("        select  code_code,                code_desc,                code_order,                code_flag        from    $self->{table}        where   code_set = ?        and     code_lang = ?        order by code_order, code_code    ") unless $self->{set_sth};    $self->{set_sth}->execute($code_set, $code_lang);    return $self->{set_sth}->fetchall_arrayref;}sub full_set {    my $self = shift;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -