📄 bk_admin_main.pl
字号:
# # # ### bk_admin.pl## BabelKit Universal Multilingual Code Table translation page.## Copyright (C) 2003 John Gorman <jgorman@webbysoft.com># http://www.webbysoft.com/babelkit#use strict;use warnings;use vars qw( $action $code_set $code_lang $code_lang2 $code_code $code_admin $self_url);# # # ### Main dispatch logic.#sub bka_admin_main { print $cgi->header; $self_url = $cgi->url(-absolute=>1); $action = $cgi->param('action') || ''; $code_set = $cgi->param('code_set') || ''; $code_lang = $cgi->param('code_lang') || ''; $code_lang2 = $cgi->param('code_lang2') || ''; $code_code = $cgi->param('code_code') || ''; if (!$code_lang or $code_lang eq $code_lang2) { $code_lang2 = ''; } $code_lang ||= $bkh->{native}; $code_admin = bka_admin_get($code_set); if ($code_admin->{slave}) { $perm_add = 0; $perm_del = 0; } bka_admin_header(); if ($action eq 'New') { bka_form_display(); } elsif ($action eq '' && $code_code ne '') { bka_form_display($code_code); } elsif ($action ne '') { bka_form_aud(); } elsif ($code_set ne '') { bka_set_display(); } else { bka_translations(); } print " </body> </html> ";}# # # ### Print the page header#sub bka_admin_header { my $title = "BabelKit Universal Code Translation"; $title .= " : $code_set" if ($code_set); if ($action eq 'New') { $title .= " : New"; } elsif ($code_code ne '') { $title .= " : $code_code"; } elsif ($code_set) { $title .= " : $code_lang" if ($code_lang); $title .= "/$code_lang2" if ($code_lang2); } print " <html> <head> <title>$title</title> </head> <body text=\"#000044\" bgcolor=\"#f0ffff\" link=\"#0000cc\" vlink=\"#0066ff\" alink=\"#ffcc00\"> <center> <h2 style=\"color:#873852\">$title</h2> <a href=\"" . bka_sess_url($self_url) . "\"><b>Main Translation Page</b></a> - <a href=\"http://www.webbysoft.com/babelkit/doc\"><b>Help Docs</b></a> - <a href=\"http://www.webbysoft.com/babelkit\"><b>BabelKit Home</b></a> <p><b style=\"color:#873852\"> Select a code set and language(s)</b> <form action=\"" . bka_sess_url($self_url) . "\" method=\"post\"> "; print $bkh->select('code_set', $bkh->{native}, blank_prompt => 'All Codes' ); print $bkh->select('code_lang', $bkh->{native}); print $bkh->select('code_lang', $bkh->{native}, var_name => 'code_lang2', select_prompt => '(Other)', blank_prompt => '(None)' ); print " <input type=submit value=\"View Set\"> </form> </center> <hr> ";}# # # ### Display the code translation todo list#sub bka_translations { print "<b style=\"color:#873852\">BabelKit Translation Sets</b>\n"; # Get the code counts for all language sets. my $code_counts = bka_get_counts(); # Get the code and language sets and print the top header. my $set_rows = $bkh->lang_set('code_set', $bkh->{native}); my $lang_rows = $bkh->lang_set('code_lang', $bkh->{native}); print "<pre>\n"; printf("%-16s", ""); for my $lang_row ( @$lang_rows ) { next if $lang_row->[3] eq 'd'; my $lang_cd = $lang_row->[0]; printf("<b>%6s</b>", $lang_cd); } # Print the count array. my $todo_count = 0; my $totals = {}; for my $set_row ( @$set_rows ) { next if $set_row->[3] eq 'd'; my $set_cd = $set_row->[0]; my $this_admin = bka_admin_get($set_cd); next if $this_admin->{param}; print "\n<a href=\"" . bka_sess_url($self_url . "?code_set=$set_cd") . "\">$set_cd</a>"; print ' ' x ( 16 - length($set_cd) ); my $nat_count = $code_counts->{$set_cd}{$bkh->{native}} || 0; for my $lang_row ( @$lang_rows ) { next if $lang_row->[3] eq 'd'; my $lang_cd = $lang_row->[0]; my $code_count = $code_counts->{$set_cd}{$lang_cd} || 0; print ' ' x ( 6 - length($code_count + 0) ); print "<a href=\"" . bka_sess_url($self_url . "?code_set=$set_cd" . "&code_lang=$bkh->{native}" . "&code_lang2=$lang_cd") . "\">"; if ($code_count == $nat_count) { printf("%d", $code_count); } else { printf("<span style=\"color:red\">%d</span>", $code_count); $todo_count += 1; } print "</a>"; $totals->{$lang_cd} += $code_count; } } # Print the language totals. printf("\n%-16s", ""); for my $lang_row ( @$lang_rows ) { next if $lang_row->[3] eq 'd'; my $lang_cd = $lang_row->[0]; printf("%6d", $totals->{$lang_cd}); } print "</pre>\n"; printf("%d language sets need translation work!", $todo_count);}# # # ### Display a code set#sub bka_set_display { my $edit_lang2 = $code_lang2; $edit_lang2 = '' unless $code_lang eq $bkh->{native}; my $set_desc = $bkh->ucwords('code_set', $bkh->{native}, $code_set); print "<b style=\"color:#873852\">$set_desc Code Administration</b>\n"; print "<p>\n"; print " <table border=\"0\" cellspacing=\"1\" cellpadding=\"1\"> <tr> "; if ($code_set eq 'code_set') { print " <th bgcolor=\"#000000\" STYLE=\"color:white;font-size:9pt\"> <strong> P </strong></th> <th bgcolor=\"#000000\" STYLE=\"color:white;font-size:9pt\"> <strong> S </strong></th> <th bgcolor=\"#000000\" STYLE=\"color:white;font-size:9pt\"> <strong> M </strong></th> "; } else { print " <th bgcolor=\"#000000\" STYLE=\"color:white;font-size:9pt\"> <strong> D </strong></th> "; } print " <th bgcolor=\"#000000\" STYLE=\"color:white;font-size:9pt\"> <strong> O </strong></th> <th bgcolor=\"#000000\" STYLE=\"color:white;font-size:9pt\"> <strong> Code </strong></th> <th bgcolor=\"#000000\" STYLE=\"color:white;font-size:9pt\"> <strong> Description </strong></th> <th bgcolor=\"#000000\" STYLE=\"color:white;font-size:9pt\"> <strong> Edit </strong></th> </tr> "; # Gather the codes in order and truncate the descriptions. my $base_set = $bkh->lang_set($code_set, $code_lang); for my $row ( @$base_set ) { my $desc = $row->[1]; if (length($desc) > 50) { $desc = substr($desc, 0, 50) . '...'; } $row->[1] = DBIx::BabelKit::htmlspecialchars($desc); } if ($code_lang2) { # Add the second language descriptions. my $lang_set = $bkh->lang_set($code_set, $code_lang2); my $lang_lookup = {}; for my $row ( @$lang_set ) { $lang_lookup->{$row->[0]} = $row->[1]; } undef $lang_set; for my $row ( @$base_set ) { my $cd = $row->[0]; my $desc = $lang_lookup->{$row->[0]}; if ($desc ne '') { if (length($desc) > 50) { $desc = substr($desc, 0, 50) . '...'; } $row->[4] = DBIx::BabelKit::htmlspecialchars($desc); } } undef $lang_lookup; } my $colspan = ($code_set eq 'code_set') ? 5 : 3; my $n = 0; for my $row ( @$base_set ) { my ( $code_code, $code_desc, $code_order, $code_flag, $code_desc2 ) = @$row; my $bgcolor = ($n % 2) ? "#6699CC" : "#6699FF"; $n++; print" <tr> "; if ($code_set eq 'code_set') { my $this_admin = bka_admin_get($code_code); my $P = $this_admin->{param} ? 'P' : ''; my $S = $this_admin->{slave} ? 'S' : ''; my $M = $this_admin->{multi} ? 'M' : ''; print " <td bgcolor=\"$bgcolor\"> $P </td> <td bgcolor=\"$bgcolor\"> $S </td> <td bgcolor=\"$bgcolor\"> $M </td> "; } else { my $D = $code_flag ? 'D' : ''; print " <td bgcolor=\"$bgcolor\"> $D </td> "; } print " <td bgcolor=\"$bgcolor\"> $code_order </td> <td bgcolor=\"$bgcolor\"> $code_code </td> <td bgcolor=\"$bgcolor\"> $code_desc </td> <td bgcolor=\"$bgcolor\"> <a href=\"" . bka_sess_url($self_url . "?code_set=$code_set" . "&code_lang=$bkh->{native}" . "&code_lang2=$edit_lang2" . "&code_code=$code_code") . "\" style=\"color:white;\"> <strong>edit</strong></a> </td> </tr> "; if ($code_lang2) { print " <tr> <td bgcolor=\"$bgcolor\" colspan=\"$colspan\"> </td> <td bgcolor=\"$bgcolor\"> $code_desc2 </td> <td bgcolor=\"$bgcolor\"> </td> </tr> "; } } print "</table>\n"; my $count = @$base_set; if ($count == 0) { print("<p>No records.\n\n"); } elsif ($count == 1) { printf("<p><b>%d</b> record.\n\n", $count); } else { printf("<p><b>%d</b> records.\n\n", $count); } if ($perm_add) { print "<p><a href=\"" . bka_sess_url($self_url . "?code_set=$code_set" . "&action=New") . "\">Add new $set_desc code</a>\n"; }}# # # ### Display the multilanguage code entry/update form.#sub bka_form_display { my $code_code = shift; $code_code = '' unless defined $code_code; # Check for a valid code set or exit. my $set_desc = $bkh->ucwords('code_set', $bkh->{native}, $code_set); bka_error_exit("No Code set specified!") unless $set_desc; print "<b style=\"color:#873852\">$set_desc Code Administration</b>\n"; print "<p>\n"; print " <form action=\"" . bka_sess_url($self_url) . "\" method=\"post\"> <input type=\"hidden\" name=\"code_set\" value=\"$code_set\" > <input type=\"hidden\" name=\"code_lang\" value=\"$code_lang\" > <input type=\"hidden\" name=\"code_lang2\" value=\"$code_lang2\" > <table border=\"0\" cellspacing=\"0\" cellpadding=\"2\"> <tr><th></th><td> "; if ($code_code eq '') { print "<b>Add $set_desc code</b>\n"; } else { # Code navigation aids. my $set = $bkh->lang_set($code_set, $bkh->{native}); my ( $n_of, $of_n, $next_cd, $prev_cd, $first_cd, $last_cd ) = bka_place($set, $code_code); print "<b>Edit $set_desc code \"$code_code\"</b> (#$n_of of $of_n)<br>\n"; print "<a href=\"". bka_sess_url($self_url . "?code_set=$code_set" . "&code_lang=$code_lang" . "&code_lang2=$code_lang2" . "&code_code=$next_cd") . "\">Next</a> ($next_cd)\n";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -