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

📄 bk_admin_main.pl

📁 BabelKit是一个通用多语言数据库代码表的接口。它接收维护使用多语言的多个数据库代码定义集中的所有编程工作。代码管理和翻译页可以让开发人员定义新的虚拟代码表
💻 PL
📖 第 1 页 / 共 2 页
字号:
        print "<a href=\"". bka_sess_url($self_url .            "?code_set=$code_set" .            "&code_lang=$code_lang" .            "&code_lang2=$code_lang2" .            "&code_code=$prev_cd") . "\">Prev</a> ($prev_cd)\n";        print "<a href=\"". bka_sess_url($self_url .            "?code_set=$code_set" .            "&code_lang=$code_lang" .            "&code_lang2=$code_lang2" .            "&code_code=$first_cd") . "\">First</a> ($first_cd)\n";        print "<a href=\"". bka_sess_url($self_url .            "?code_set=$code_set" .            "&code_lang=$code_lang" .            "&code_lang2=$code_lang2" .            "&code_code=$last_cd") . "\">Last</a> ($last_cd)\n";    }    # Code code.    print "    <hr></td>    </tr>    <tr>    <td align=\"right\"><strong>Code</strong></td>    <td>    ";    if ($code_code eq '') {        if ($code_set eq 'code_set') {            print "<input name=\"code_code\" size=\"16\" maxlength=\"16\">\n";        } else {            print "<input name=\"code_code\" size=\"32\" maxlength=\"32\">\n";        }    } else {        print "$code_code\n";        print "<input name=\"code_code\" type=\"hidden\"            value=\"$code_code\">\n";    }    print "    </td>    </tr>    ";    my ( $desc_nat, $code_order, $code_flag ) =        $bkh->get($code_set, $bkh->{native}, $code_code);    $code_order = '' unless defined $code_order;    $code_flag ||= '';    if ($code_set eq 'code_set') {        # Code Set Admin parameters        my $this_admin = bka_admin_get($code_code);        my $checked = ($this_admin->{param}) ? 'checked' : '';        print "        <tr>            <td align=\"right\"><strong>Parameter Set</strong></td>            <td><input name=\"this_admin[param]\" type=\"checkbox\"                value=\"1\" $checked>            [Parameter sets are not translated]            </td>        </tr>        ";        $checked = ($this_admin->{slave}) ? 'checked' : '';        print "        <tr>            <td align=\"right\"><strong>Slave Set</strong></td>            <td><input name=\"this_admin[slave]\" type=\"checkbox\"                value=\"1\" $checked>            [Slave sets are for translation only]            </td>        </tr>        ";        $checked = ($this_admin->{multi}) ? 'checked' : '';        print "        <tr>            <td align=\"right\"><strong>Multiline Set</strong></td>            <td><input name=\"this_admin[multi]\" type=\"checkbox\"                value=\"1\" $checked>            [Paragraph mode]            </td>        </tr>        ";    } else {        # Deprecated?        my $checked = ($code_flag eq 'd') ? "checked" : "";        print "        <tr>            <td align=\"right\"><strong>Deprecated</strong></td>            <td><input name=\"code_flag\" type=\"checkbox\"                value=\"d\" $checked>            </td>        </tr>        ";    }    # Order number.    print "    <tr>        <td align=\"right\"><strong>Code Order</strong></td>        <td><input name=\"code_order\" size=\"4\"        value=\"$code_order\"></td>    </tr>    ";    # Make a field for each translation.    my $lang_rows;    if ($code_admin->{param}) {        $lang_rows = [          [            $bkh->{native}, $bkh->desc('code_lang', $bkh->{native}, $code_lang)          ]        ];    } elsif ($code_lang2) {        $lang_rows = [          [            $code_lang  , $bkh->desc('code_lang', $bkh->{native}, $code_lang)          ],          [            $code_lang2 , $bkh->desc('code_lang', $bkh->{native}, $code_lang2)          ]        ];    } else {        $lang_rows = $bkh->lang_set('code_lang', $bkh->{native});    }    for my $lang_row ( @$lang_rows ) {        my ( $lang_code, $lang_desc, $lang_order, $lang_flag ) = @$lang_row;        next if $lang_flag eq 'd';        my $code_desc = $bkh->data($code_set, $lang_code, $code_code);        $code_desc = DBIx::BabelKit::htmlspecialchars($code_desc);        $lang_desc = ucfirst($lang_desc);        print "<tr>\n";        print "<td align=\"right\" valign=\"top\"><strong>$lang_desc</td>\n";        if ($lang_code eq $bkh->{native} && $code_admin->{slave}) {            print "<td>$code_desc\n";            print "<input type=\"hidden\" name=\"code_desc[$lang_code]\"";            print " value=\"$code_desc\">\n</td>\n";        } elsif ($code_admin->{multi}) {            my @n = split "\n", $code_desc;            my $n = @n;            $n = 3 if $n < 3;            print "<td><textarea name=\"code_desc[$lang_code]\" " .                "cols=\"60\" rows=\"$n\" wrap=\"virtual\">$code_desc";            print "</textarea></td>\n";        } else {            print "<td><input name=\"code_desc[$lang_code]\" size=\"50\"";            print "    value=\"$code_desc\"></td>\n";        }        print "</tr>\n";    }    # Action items.    print "    <tr>    <td align=\"right\">Action</td>    <td>    ";    if ($code_code eq '') {        if ($perm_add) {            print "<input type=\"submit\" name=\"action\" value=\"Add\">\n";        }    } else {        if ($perm_upd) {            print "<input type=\"submit\" name=\"action\" value=\"Update\">\n";        }        if ($perm_del) {            print "<input type=\"submit\" name=\"action\" value=\"Delete\">\n";        }        if ($perm_add) {            print "<a href=\"". bka_sess_url($self_url .            "?code_set=$code_set" .            "&action=New") . "\">Add new $set_desc code</a>\n";        }    }    print "    </td>    </tr>    </form>    </table>    ";}#       #       #       ### Add / Update / Delete a code.#sub bka_form_aud {    my $code_order = $cgi->param('code_order') || '';    my $code_flag  = $cgi->param('code_flag') || '';    # Check for validity.    if ( ! $bkh->get('code_set', $bkh->{native}, $code_set) ) {        bka_error_exit("No Code set specified!");    }    if ( $action eq 'Add' && !$perm_add ) {        bka_error_exit("No permission to add '$code_set'!");    }    if ( $action eq 'Update' && !$perm_upd ) {        bka_error_exit("No permission to update '$code_set'!");    }    if ( $action eq 'Delete' && !$perm_del ) {        bka_error_exit("No permission to delete '$code_set'!");    }    if ( $code_code eq '' ) {        bka_error_exit("No code specified!");    }    unless ( $code_code =~ /^[a-zA-Z_0-9-]+$/ ) {        bka_error_exit("Code must consist of [a-zA-Z_0-9-]!");    }    unless ( $code_order =~ /^-?[0-9]*$/ ) {        bka_error_exit("Code order must be numeric!");    }    # Get those language descriptions.    my $lang_list = $bkh->lang_set('code_lang', $bkh->{native});    my $code_desc = {};    for my $lang_row ( @$lang_list ) {        my $lang_cd = $lang_row->[0];        $code_desc->{$lang_cd} = $cgi->param("code_desc[$lang_cd]");    }    # Variable setup.    my $nat_exists = $bkh->get($code_set, $bkh->{native}, $code_code);    my ( $n_of, $of_n, $next_cd, $prev_cd, $first_cd, $last_cd );    if ($action eq 'Update' || $action eq 'Delete') {        my $set = $bkh->lang_set($code_set, $bkh->{native});        ( $n_of, $of_n, $next_cd, $prev_cd, $first_cd, $last_cd ) =            bka_place($set, $code_code);    }    if ($action eq 'Delete') {        if (!$nat_exists) {            bka_error_exit("No such code '$code_code'!");        }        $bkh->remove($code_set, $code_code);        print "Record Deleted!<p>\n";        if ($next_cd eq $code_code) {            bka_set_display();        } else {            bka_form_display($next_cd);        }    }    elsif ($action eq 'Add' || $action eq 'Update') {        if ($action eq 'Add' && $nat_exists) {            bka_error_exit("Code '$code_code' already exists!");        }        if ($action eq 'Update' && !$nat_exists) {            bka_error_exit("No such code '$code_code'!");        }        if ($code_desc->{$bkh->{native}} eq '') {            bka_error_exit("No native code description specified!");        }        # Pump in those fields.        for my $lang_row ( @$lang_list ) {            my $lang_cd = $lang_row->[0];            my $lang_desc = $code_desc->{$lang_cd};            next unless defined $lang_desc;            $lang_desc =~ s/^\s+//;            $lang_desc =~ s/\s+$//;            $bkh->put($code_set, $lang_cd, $code_code, $lang_desc,                $code_order, $code_flag);        }        # Code Admin fields.        if ($code_set eq 'code_set') {            my $this_admin = {};            $this_admin->{param} = $cgi->param("this_admin[param]");            $this_admin->{slave} = $cgi->param("this_admin[slave]");            $this_admin->{multi} = $cgi->param("this_admithis_admin[multi]");            bka_admin_put($code_code, $this_admin);        }        # Whats next.        if ($action eq 'Add') {            print "Record Added!<p>\n";            bka_form_display();        }        else {            print "Record Updated!<p>\n";            bka_form_display($next_cd);        }    }    else {        bka_error_exit("Unknown form action '$action'");    }}#       #       #       ### Local Functions## Get the code counts for all language sets.sub bka_get_counts {    my $sth = $dbh->prepare("        select  code_set,                code_lang,                count(*) code_count        from    $bkh->{table}        group by code_set, code_lang    ");    $sth->execute;    my $rows = $sth->fetchall_arrayref;    my $code_counts = {};    for my $row ( @$rows ) {        $code_counts->{$row->[0]}{$row->[1]} = $row->[2];    }    return $code_counts;}# Find a code's place in the set.sub bka_place {    my $set = shift;    my $code_code = shift;    my $count = @$set;    my $first = $set->[0][0];    my $last = $set->[$count - 1][0];    my $prev;    my $next;    my $n;    for ($n = 0; $n < $count; $n++) {        last if $set->[$n][0] eq $code_code;    }    if ($n == 0) {        $prev = $last;        if ($count > 1) {            $next = $set->[$n + 1][0];        } else  {            $next = $last;        }    } elsif ($n == $count - 1) {        $prev = $set->[$n - 1][0];        $next = $first;    } else {        $prev = $set->[$n - 1][0];        $next = $set->[$n + 1][0];    }    return ( $n + 1, $count, $next, $prev, $first, $last );}# Get the code_admin options for the set.sub bka_admin_get {    my $code_set = shift;    my $code_admin = {};    my @params = split ' ', $bkh->param('code_admin', $code_set);    for my $param ( @params ) {        my ( $attr, $value ) = split '=', $param;        $code_admin->{$attr} = $value;    }    return $code_admin;}# Put the code_admin options for the set.sub bka_admin_put {    my $code_set = shift;    my $code_admin = shift || {};    my $params = '';    for my $attr ( sort keys %$code_admin ) {        my $value = $code_admin->{$attr};        next unless $attr and $value;        $params .= ' ' if $params;        $params .= "$attr=$value";    }    $bkh->put('code_admin', $bkh->{native}, $code_set, $params);}# Error exit.sub bka_error_exit {    my $msg = shift;    print "<p><b>Error: $msg</b>";    print "</body>\n</html>\n";    exit();}1;

⌨️ 快捷键说明

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