📄 bk_admin_main.pl
字号:
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 + -