Вот, небольшой мод от Green Kakadu :super: (обидно будет если уже такой в природе есть).
Берем файл db_utils.pl
Отыскиваем подпрограмму sub build_select_field (это примерно 203 строка)
и заменяем ее на такой вариант:
sub build_select_field {
# --------------------------------------------------------
# Builds a SELECT field based on information found
# in the database definition.
#
my ($column, $value, $name, $mult) = @_;
my ($size, $gkflag, %values, %gkcat);
$name || ($name = $column);
$size || ($size = 1);
if (! exists $db_select_fields{$column}) {
%gkcat= &GK_category_list;
$db_select_fields{$db_cols[$db_category]} = join (",", sort {$gkcat{$a} cmp $gkcat{$b}} keys %gkcat);
$gkflag=1;
}
if ($mult) {
@fields = split (/\\,/, $db_select_fields{"Mult-$column"});
%values = map { $_ => 1 } split (/\\Q$db_delim\\E/, $value);
}
else {
@fields = split (/\\,/, $db_select_fields{$column});
$values{$value}++;
}
($#fields >= 0) or return "error building select field: no select fields specified in config for field \'$column\'!";
$output = qq|";
return $output;
}
Ну а теперь надо добавить еще одну подпрограмму (можно ее под этой написать или в конец файла):
sub GK_category_list {
# --------------------------------------------------------
# Green Kakadu edit
# Returns a hash of all categories (and its nonenglish names) in the database.
my (%categories, @fields);
# Otherwise pull the list from the database.
open (DB, "<$db_category_name") or &cgierr("unable to open $db_file_name. Reason: $!");
if ($db_use_flock) { flock(DB, 1); }
LINE: while () {
(/^#/) and next LINE;
(/^\\s*$/) and next LINE;
@fields = &split_decode ($_);
$categories{$fields[$db_main_category]}=$fields[8];#см!
}
close DB;
return %categories;
}
Внимание! Перед тем как что-то править, сохраните копию редактируемого файла - вдруг не получится, хотя у меня получилось
Чтоб был полный тип-топ, то в начале add.cgi включите
use locale;
use POSIX qw (locale_h);
setlocale(LC_CTYPE, \'ru_RU.KOI8-R\');
Я там добавил сортировку категорий в алфавитном порядке по русским названиям.
Еще: обратите внимание на строку в вышеприведенном коде sub GK_category_list, вот эту:
$categories{$fields[$db_main_category]}=$fields[8];# Green: 8 - Num of Nonenglish Field in category.def
суть такая, что $fields[8]; это поле с русским названием, у меня в category.def оно значилось как 8-е, у кого то это иначе (хотя автор мода впихнул это по умолчанию)
Вот. Эта модификация делает список русских категорий в выпадающем меню лишь при добавлении ссылки посетителями, т.е. в админстве - ничего не изменится, останется все как бло. Если и там хотите (а надо бы), то похоже надо аналогично подкорректировать sub build_select_field_from_db из того же файла.