Commit ad79cb78 authored by System Administrator's avatar System Administrator

barbass: Делаем русские шаблоны не сабмодулем (eterbug #6952)

parent 21946f20
[submodule "template/ru"]
path = template/ru
url = git://git.code.sf.net/p/bugzilla-ru/code
ru @ b5f4861a
Subproject commit b5f4861a820b6b8ceb35e8521143f251ef681263
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/variables.none.tmpl %]
[%# Use the current script name. If an empty name is returned,
# then we are accessing the home page. %]
[% login_target = cgi.url("-relative" => 1, "-query" => 1) %]
[% IF !login_target OR login_target.match("^token.cgi") %]
[% login_target = "index.cgi" %]
[% END %]
<li id="mini_login_container[% qs_suffix %]">
<span class="separator">| </span>
[% connector = "?" %]
[% IF cgi.request_method == "GET" AND cgi.query_string %]
[% connector = "&" %]
[% END %]
[% script_url = login_target _ connector _ "GoAheadAndLogIn=1" %]
<a id="login_link[% qs_suffix %]" href="[% script_url FILTER html %]"
onclick="return show_mini_login_form('[% qs_suffix %]')">Войти</a>
[% Hook.process('additional_methods') %]
<form action="[% login_target FILTER html %]" method="POST"
class="mini_login bz_default_hidden"
id="mini_login[% qs_suffix FILTER html %]"
onsubmit="return check_mini_login_fields( '[% qs_suffix FILTER html %]' );"
>
<input id="Bugzilla_login[% qs_suffix FILTER html %]"
class="bz_login"
name="Bugzilla_login"
title="Login"
onfocus="mini_login_on_focus('[% qs_suffix FILTER js %]')"
>
<input class="bz_password"
id="Bugzilla_password[% qs_suffix FILTER html %]"
name="Bugzilla_password"
type="password"
title="Password"
>
<input class="bz_password bz_default_hidden bz_mini_login_help" type="text"
id="Bugzilla_password_dummy[% qs_suffix %]" value="password"
title="Password"
onfocus="mini_login_on_focus('[% qs_suffix FILTER js %]')"
>
[% IF Param('rememberlogin') == 'defaulton' ||
Param('rememberlogin') == 'defaultoff'
%]
<input type="checkbox" id="Bugzilla_remember[% qs_suffix %]"
name="Bugzilla_remember" value="on" class="bz_remember"
[%+ "checked" IF Param('rememberlogin') == "defaulton" %]>
<label for="Bugzilla_remember[% qs_suffix %]">Запомнить</label>
[% END %]
<input type="hidden" name="Bugzilla_login_token"
value="[% get_login_request_token() FILTER html %]">
<input type="submit" name="GoAheadAndLogIn" value="Войти"
id="log_in[% qs_suffix %]">
<script type="text/javascript">
mini_login_constants = {
"login" : "Пользователь",
"warning" : "Для входа укажите имя пользователя и пароль."
};
[%# We need this event to fire after autocomplete, because it does
# something different depending on whether or not there's already
# data in the login and password box.
# However, autocomplete happens at all sorts of different times in
# different browsers (before or after onDOMReady, before or after
# window.onload, in almost all combinations you can imagine).
# The only good solution I found is to time the event 200
# milliseconds after window.onload for WebKit (doing it immediately
# at onload works in Chrome but not in Safari, but I can't detect
# them separately using YUI), and right after onDOMReady in Gecko.
# The WebKit solution is also fairly guaranteed to work on any
# browser (it's just strange, since the fields only populate 200 ms
# after the page loads), so it's the default. IE doesn't even
# recognize our forms as login forms, so I made it use the Gecko
# method also (since it's nicer visually). Opera never autocompletes
# forms without user interaction, so it also uses the Gecko method.
#%]
if (YAHOO.env.ua.gecko || YAHOO.env.ua.ie || YAHOO.env.ua.opera) {
YAHOO.util.Event.onDOMReady(function() {
init_mini_login_form('[% qs_suffix FILTER html %]');
});
}
else {
YAHOO.util.Event.on(window, 'load', function () {
window.setTimeout(function() {
init_mini_login_form('[% qs_suffix FILTER html %]');
}, 200);
});
}
</script>
<a href="#" onclick="return hide_mini_login_form('[% qs_suffix %]')">[x]</a>
</form>
</li>
<li id="forgot_container[% qs_suffix %]">
<span class="separator">| </span>
<a id="forgot_link[% qs_suffix %]" href="[% script_url FILTER html %]#forgot"
onclick="return show_forgot_form('[% qs_suffix %]')">Забытый пароль</a>
<form action="token.cgi" method="post" id="forgot_form[% qs_suffix %]"
class="mini_forgot bz_default_hidden">
<label for="login[% qs_suffix FILTER html %]">Пользователь:</label>
<input type="text" name="loginname" size="20" id="login[% qs_suffix FILTER html %]">
<input id="forgot_button[% qs_suffix %]" value="Сбросить пароль"
type="submit">
<input type="hidden" name="a" value="reqpw">
<input type="hidden" id="token[% qs_suffix FILTER html %]" name="token" value="[% issue_hash_token(['reqpw']) FILTER html %]">
<a href="#" onclick="return hide_forgot_form('[% qs_suffix %]')">[x]</a>
</form>
</li>
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# target: string. URL to go to after login.
#%]
[% IF !target %]
[% target = "index.cgi" %]
[% END %]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS global/header.html.tmpl
title = "Вход в систему $terms.Bugzilla",
onload = "document.forms['login'].Bugzilla_login.focus()"
%]
[% USE Bugzilla %]
<p>
Для продолжения работы в [% terms.Bugzilla %] введите свои регистрационные данные.
</p>
<form name="login" action="[% target FILTER html %]" method="POST"
[%- IF Bugzilla.cgi.param("data") %] enctype="multipart/form-data"[% END %]>
<table>
<tr>
<th align="right"><label for="Bugzilla_login">Пользователь:</label></th>
<td>
<input size="35" id="Bugzilla_login" name="Bugzilla_login">
[% Param('emailsuffix') FILTER html %]
</td>
</tr>
<tr>
<th align="right"><label for="Bugzilla_password">Пароль:</label></th>
<td>
<input type="password" size="35" id="Bugzilla_password" name="Bugzilla_password">
</td>
</tr>
[% IF Param('rememberlogin') == 'defaulton' ||
Param('rememberlogin') == 'defaultoff' %]
<tr>
<th>&nbsp;</th>
<td>
<input type="checkbox" id="Bugzilla_remember" name="Bugzilla_remember" value="on"
[%+ "checked" IF Param('rememberlogin') == "defaulton" %]>
<label for="Bugzilla_remember">Запомнить мои данные на этом компьютере</label>
</td>
</tr>
[% END %]
<tr>
<th>&nbsp;</th>
<td>
<input type="checkbox" id="Bugzilla_restrictlogin" name="Bugzilla_restrictlogin"
checked="checked">
<label for="Bugzilla_restrictlogin">На время этого сеанса разрешить работу
только с текущего адреса IP (Используется для большей безопасности)</label>
</td>
</tr>
</table>
[% PROCESS "global/hidden-fields.html.tmpl"
exclude="^Bugzilla_(login|password|restrictlogin)$" %]
<input type="hidden" name="Bugzilla_login_token"
value="[% get_login_request_token() FILTER html %]">
<input type="submit" name="GoAheadAndLogIn" value="Войти" id="log_in">
<p>
(Примечание: использование этой возможности требует разрешения
устанавливать cookies для данного сайта.
Иначе Вам придется часто повторять ввод имени и пароля.)
</p>
</form>
[% Hook.process('additional_methods') %]
[%# Allow the user to create a new account, or request a token to change
# their password, assuming that our auth method allows that.
#%]
[% IF Param("createemailregexp") && user.authorizer.user_can_create_account %]
<hr>
<p>
Если вы ещё не зарегистрированы в [% terms.Bugzilla %], вы можете
<a href="createaccount.cgi">создать новую учётную запись</a>.
[% IF Param("requirelogin") %]
Необходимо иметь учётную запись, так как эта [% terms.Bugzilla %]
доступна только для аутентифицированных пользователей.
[% ELSIF target.match("_bug\.cgi$") %]
Для регистрации новой [% terms.bug_gen %] или добавления комментариев в
существующие ошибки необходимо иметь учётную запись, чтобы с вами могли связаться,
если потребуется дополнительная информация.
[% END %]
</p>
[% END %]
[% IF user.authorizer.can_change_password %]
<hr>
<form id="forgot" method="get" action="token.cgi">
<input type="hidden" name="a" value="reqpw">
Если у вас уже есть учётная запись, но вы забыли свой пароль,
введите в поле ниже свой адрес электронной почты, чтобы сменить пароль.<br>
<input size="35" name="loginname">
<input type="hidden" id="token" name="token" value="[% issue_hash_token(['reqpw']) FILTER html %]">
<input type="submit" id="request" value="Сменить пароль">
</form>
[% END %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/variables.none.tmpl %]
From: [% Param('mailfrom') %]
To: [% emailaddress %]
Subject: [% PROCESS subject %]
X-Bugzilla-Type: admin
Запрос был аннулирован с адреса [% remoteaddress %].
Если вы этого не делали, это может быть чья-либо ошибка
либо намеренная попытка взлома вашей учетной записи.
Ознакомьтесь с параметрами жетона и перешлите это сообщение
по адресу [% Param('maintainer') %], если у вас есть подозрения.
Жетон: [% token %]
Тип жетона: [% tokentype %]
Пользователь: [% emailaddress %]
Дата выдачи: [% issuedate FILTER time("%Y-%m-%d %H:%M:%S %Z", timezone)%]
Данные: [% eventdata %]
Причина отказа: [% PROCESS cancelactionmessage %]
[% BLOCK subject %]
[% IF tokentype == 'new_account' %]
Отменен запрос на регистрацию пользователя
[% ELSIF tokentype == 'password' %]
Отменен запрос на изменение пароля
[% ELSIF tokentype == 'emailnew' OR tokentype == 'emailold' %]
Отменен запрос на изменение адреса электронной почты
[% ELSE %]
Отменен жетон типа [% tokentype %]
[% END %]
[% END %]
[% BLOCK cancelactionmessage %]
[% IF cancelaction == 'account_exists' %]
Пользователь [% email %] уже существует.
[% ELSIF cancelaction == 'email_change_canceled' %]
Отменен запрос на изменение адреса электронной почты с
[% old_email %] на [% new_email %].
[% ELSIF cancelaction == 'email_change_canceled_reinstated' %]
Отменен запрос на изменение адреса электронной почты
на [% new_email %]. Восстановлены прежние значения.
[% ELSIF cancelaction == 'emailold_change_canceled' %]
Отменен запрос на изменение адреса электронной почты
на [% new_email %].
[% ELSIF cancelaction == 'password_change_canceled' %]
Запрос на изменение пароля отменен пользователем.
[% ELSIF cancelaction == 'account_creation_canceled' %]
Создание учетной записи пользователя [% emailaddress %]
отменено.
[% ELSIF cancelaction == 'user_logged_in' %]
Запрос на изменение пароля отменен входом в систему.
[% ELSIF cancelaction == 'wrong_token_for_changing_passwd' %]
Попытка использовать жетон для смены пароля.
[% ELSIF cancelaction == 'wrong_token_for_cancelling_email_change' %]
Попытка использовать жетон для отмены изменения адреса.
[% ELSIF cancelaction == 'wrong_token_for_confirming_email_change' %]
Попытка использовать жетон для подтверждения изменения адреса.
[% ELSIF cancelaction == 'wrong_token_for_creating_account' %]
Попытка использовать жетон для создания учетной записи.
[% ELSE %]
[%# Give sensible error if the cancel-token function is used incorrectly.
#%]
Неправильное использование жетонов [% terms.Bugzilla %]. Передан
параметр '[% cancelaction %]'. Правильный метод: передать код
события и описать его в файле <kbd>cancel-token.txt.tmpl</kbd>.
Если вы не разработчик [% terms.Bugzilla %], пожалуйста, перешлите
это сообщение администратору: [% Param('maintainer') %].
[% END %]
[% END %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE
# none
#
# Param("maintainer") is used to display the maintainer's email.
# Param("emailsuffix") is used to pre-fill the email field.
#%]
[% PROCESS global/variables.none.tmpl %]
[% title = BLOCK %]
Регистрация пользователя [% terms.Bugzilla %]
[% END %]
[% PROCESS global/header.html.tmpl
title = title
onload = "document.forms['account_creation_form'].login.focus();" %]
<p>
Чтобы зарегистрироваться, достаточно указать
[% IF Param('emailsuffix') == '' %]
адрес электронной почты.
[% ELSE %]
имя почтового ящика, которое в комбинации с [% Param('emailsuffix') %]
соответствует Вашему адресу электронной почты.
[% END %]
По этому адресу будет отправлено сообщение с подтверждением.
<b>Вы не сможете войти в систему до того как получите сообщение.</b>
Если сообщение не будет получено, свяжитесь с администратором
[% terms.Bugzilla %]
<a href="mailto:[% Param("maintainer") %]">[% Param("maintainer") %]</a>.
</p>
<p>
Для регистрации новых [% terms.bugs_gen %] или добавления комментариев в
существующие ошибки необходимо иметь учётную запись, чтобы с вами могли
связаться, если потребуется дополнительная информация.
Это также позволит другим пользователям чётко определить, кто является
автором комментариев или изменений, произведённых в [% terms.bugs_dat %].
<b>Обратите внимание, что ваш адрес электронной почты <u>никогда</u> не будет
показан незарегистрированным пользователям. Его смогут увидеть только
зарегистрированные пользователи.</b>
</p>
[% IF Param('createemailregexp') == '.*' && Param('emailsuffix') == '' %]
<p>
<b>ОБРАТИТЕ ВНИМАНИЕ:</b> [% terms.Bugzilla %] — общедоступная система
отслеживания [% terms.bugs_gen %]. Данные о многих [% terms.bugs_obj %],
включая адреса электронной почты, доступны зарегистрированным пользователям.
<!--
<b>Рекомендуется</b> использовать неосновной почтовый ящик или
бесплатную почтовую службу (например, Gmail, Яндекс.Почта, Mail.ru и т.п.)
во избежание получения нежелательной почты (спама) в основной почтовый ящик.
-->
</p>
[% END %]
<form id="account_creation_form" method="get" action="createaccount.cgi">
<table>
<tr>
<td align="right">
<b>Адрес электронной почты:</b>
</td>
<td>
<input size="35" id="login" name="login">
[% Param('emailsuffix') FILTER html %]
</td>
</tr>
</table>
<br>
<input type="hidden" id="token" name="token" value="[% issue_hash_token(['create_account']) FILTER html %]">
<input type="submit" id="send" value="Зарегистрироваться">
</form>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# login: string. The user's Bugzilla login email address.
#%]
[% PROCESS global/variables.none.tmpl %]
[% title = BLOCK %]
Запрос на создание учетной записи '[% login FILTER html %]' зарегистрирован
[% END %]
[% PROCESS global/header.html.tmpl title = title %]
<p>
Вам направлено по электронной почте сообщение со ссылкой для подтверждения
создания учетной записи. Ссылка будет аннулирована, если Вы не подтвердите
создание в течение [% constants.MAX_TOKEN_AGE FILTER html %] дней.
</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/variables.none.tmpl %]
From: [% Param('mailfrom') %]
To: [% emailaddress %]
Subject: Запрос на изменение адреса email пользователя [% terms.Bugzilla %]
X-Bugzilla-Type: admin
Получен запрос на изменение адреса электронной почты пользователя
[% terms.Bugzilla %] [% oldemailaddress %] на ваш адрес.
Для подтверждения изменения выберите ссылку:
[%+ urlbase %]token.cgi?t=[% token FILTER uri %]&a=cfmem
Если вы не запрашивали этого изменения либо хотите его аннулировать,
выберите ссылку:
[%+ urlbase %]token.cgi?t=[% token FILTER uri %]&a=cxlem
Если вы не ответите, запрос будет автоматически аннулирован через [% constants.MAX_TOKEN_AGE %]
дней ([% expiration_ts FILTER time("%d.%m.%Y %H:%M %Z") %]).
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
From: [% Param('mailfrom') %]
To: [% emailaddress %]
Subject: Запрос на изменение адреса email пользователя [% terms.Bugzilla %]
Importance: High
X-MSMail-Priority: High
X-Priority: 1
X-Bugzilla-Type: admin
Получен запрос на изменение Вашего адреса электронной почты в
[%+ terms.Bugzilla %] на [% newemailaddress %].
Если Вы не запрашивали этого изменения либо хотите его аннулировать,
выберите ссылку:
[%+ urlbase %]token.cgi?t=[% token FILTER uri %]&a=cxlem
Если Вы не ответите и [% newemailaddress %] подтвердит изменение,
новый адрес вступит в силу через [%- constants.MAX_TOKEN_AGE %] дней
([% expiration_ts FILTER time("%d.%m.%Y %H:%M %Z") %]).
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# token: string. The token to be used in the user account creation.
# email: email address of the user account.
# expiration_ts: expiration date of the token.
#%]
[% title = BLOCK %]Создание учетной записи для '[% email FILTER html %]'[% END %]
[% PROCESS "global/header.html.tmpl"
title = title
onload = "document.forms['confirm_account_form'].realname.focus();" %]
<p>
Для создания учетной записи установите пароль. Кроме того, можно
указать полное имя и откорректировать адрес электронной почты.
</p>
<form id="confirm_account_form" method="post" action="token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]">
<input type="hidden" name="a" value="confirm_new_account">
<table>
<tr>
<th align="right">Адрес электронной почты:</th>
<td>[% email FILTER html %]</td>
</tr>
<tr>
<th align="right"><small><i>(НЕ ОБЯЗАТЕЛЬНО)</i></small> <label for="realname">Полное имя</label>:</th>
<td><input type="text" id="realname" name="realname" value=""></td>
</tr>
<tr>
<th align="right"><label for="passwd1">Введите пароль</label>:</th>
<td>
<input type="password" id="passwd1" name="passwd1" value="">
(минимум [% constants.USER_PASSWORD_MIN_LENGTH FILTER none %] символов)
</td>
</tr>
<tr>
<th align="right"><label for="passwd2">Повторите ввод пароля</label>:</th>
<td><input type="password" id="passwd2" name="passwd2" value=""></td>
</tr>
<tr>
<th align="right">&nbsp;</th>
<td><input type="submit" id="confirm" value="Создать"></td>
</tr>
</table>
</form>
<p>
Если форма не будет заполнена до
<u>[%+ expiration_ts FILTER time("%d.%m.%Y %H:%M %Z") %]</u>,
учетная запись не будет создана.
</p>
<p>
Если Вы не хотите создавать учетную запись с этим адресом электронной
почты, нажмите кнопку "Отказ от регистрации" и данные о Вас будут удалены.
</p>
<form id="cancel_account_form" method="post" action="token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]">
<input type="hidden" name="a" value="cancel_new_account">
<input type="submit" id="confirm" value="Отказ от регистрации">
</form>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# token: string. The token to be used in this address change.
#%]
[% title = " Подтверждение изменения адреса электронной почты" %]
[% PROCESS global/header.html.tmpl %]
<p>
Для изменения адреса электронной почты введите ваш текущий пароль:
</p>
<form method="post" action="token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]">
<input type="hidden" name="a" value="chgem">
<table>
<tr>
<th align="right">Пароль:</th>
<td><input type="password" name="password" size="36"></td>
</tr>
<tr>
<th align="right">&nbsp;</th>
<td><input type="submit" id="confirm" value="Продолжить"></td>
</tr>
</table>
</form>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# token: random string used to authenticate the transaction.
# expiration_ts: expiration date of the token.
# email: email address of the new account.
#%]
[% PROCESS global/variables.none.tmpl %]
From: [% Param('mailfrom') %]
To: [% email %]
Subject: [% terms.Bugzilla %]: подтверждение создания учетной записи
X-Bugzilla-Type: admin
Системой [%+ terms.Bugzilla %] получена заявка на создание учетной записи
с адресом электронной почты ([% email %]).
Для подтверждения создания учетной записи с этим адресом электронной
почты перейдите по ссылке не позднее [%+ expiration_ts FILTER time("%H:%M %Z %d.%m.%Y") %]:
[%+ urlbase %]token.cgi?t=[% token FILTER uri %]&a=request_new_account
Если Вы не получили этого сообщения до [%+ expiration_ts FILTER time("%H:%M %Z %d.%m.%Y") %] или
хотите создать учетную запись с другим адресом электронной почты, Вы можете
начать регистрацию заново:
[%+ urlbase %]createaccount.cgi
[% IF Param('createemailregexp') == '.*' && Param('emailsuffix') == '' %]
ОБРАТИТЕ ВНИМАНИЕ: [% terms.Bugzilla %] — общедоступная система отслеживания [% terms.bugs_gen %].
Данные о многих [% terms.bugs_obj %], включая адреса электронной почты, находятся в
открытом доступе. Рекомендуется использовать неосновной почтовый ящик или
бесплатную почтовую службу (например, Gmail, mail.ru, Яндекс.Почта и т.п.)
во избежание получения нежелательной почты (спама) в основной почтовый ящик.
[% END %]
Если вы не делали такой заявки или хотите её аннулировать, перейдите
по ссылке:
[%+ urlbase %]token.cgi?t=[% token FILTER uri %]&a=cancel_new_account
Если упомянутые ссылки не работают или у Вас есть другие вопросы, связанные
с Вашей учетной записью, обратитесь к администратору: [% Param('maintainer') %].
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/variables.none.tmpl %]
From: [% Param('mailfrom') %]
To: [% emailaddress %]
Subject: Запрос на изменение пароля [% terms.Bugzilla %]
X-Bugzilla-Type: admin
Вами (или кем-то от Вашего имени) была запрошена смена пароля
[%+ terms.Bugzilla %]. Для смены пароля выберите ссылку:
[%+ urlbase %]token.cgi?t=[% token FILTER uri %]&a=cfmpw
Если Вы не запрашивали этого изменения либо хотите его аннулировать,
выберите ссылку:
[%+ urlbase %]token.cgi?t=[% token FILTER uri %]&a=cxlpw
Если Вы не ответите, запрос будет автоматически аннулирован через
[% constants.MAX_TOKEN_AGE %] дней ([% expiration_ts FILTER time("%d.%m.%Y %H:%M %Z", timezone) -%])
или при следующем входе в систему.
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% title = "Изменение пароля" %]
[% PROCESS global/header.html.tmpl %]
[% password_complexity = Param('password_complexity') %]
<p>
Для изменения пароля введите новый пароль дважды:<br>
</p>
<ul>
<li>Длина пароля должна быть не менее [% constants.USER_PASSWORD_MIN_LENGTH FILTER none %] символов.</li>
[% IF password_complexity == "mixed_letters" %]
<li>Пароль должен содержать по меньшей мере одну букву в ВЕРХНЕМ и одну букву в нижнем регистре.</li>
[% ELSIF password_complexity == "letters_numbers" %]
<li>Пароль должен содержать по меньшей мере одну букву в ВЕРХНЕМ регистре, одну букву в нижнем регистре и одну цифру.</li>
[% ELSIF password_complexity == "letters_numbers_specialchars" %]
<li>Пароль должен содержать по меньшей мере одну букву, одну цифру и один специальный символ.</li>
[% END %]
</ul>
<form method="post" action="token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]">
<input type="hidden" name="a" value="chgpw">
<table>
<tr>
<th align="right">Новый пароль:</th>
<td>
<input type="password" name="password">
</td>
</tr>
<tr>
<th align="right">Подтверждение пароля:</th>
<td>
<input type="password" name="matchpassword">
</td>
</tr>
<tr>
<th align="right">&nbsp;</th>
<td>
<input type="submit" id="update" value="Изменить">
</td>
</tr>
</table>
</form>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# realname: string. The user's real name, if any.
# login_change_date: string. The date the email change will be complete. (optional)
# new_login_name: string. The user's new Bugzilla login whilst not confirmed. (optional)
#%]
<table>
[% IF user.authorizer.can_change_password
|| (user.authorizer.can_change_email && Param('allowemailchange')) %]
<tr>
<td colspan="3">
Для подтверждения изменений учетной записи введите ваш пароль.
</td>
</tr>
<tr>
<th align="right">Пароль:</th>
<td>
<input type="hidden" name="old_login" value="[% user.login FILTER html %]">
<input type="password" name="old_password">
</td>
</tr>
<tr>
<td colspan="2"><hr></td>
</tr>
[% END %]
[% IF user.authorizer.can_change_password %]
<tr>
<th align="right">Новый пароль:</th>
<td>
<input type="password" name="new_password1">
</td>
</tr>
<tr>
<th align="right">Подтверждение пароля:</th>
<td>
<input type="password" name="new_password2">
</td>
</tr>
[% END %]
<tr>
<th align="right">Полное имя (необязательно, но желательно):</th>
<td>
<input size="35" name="realname" value="[% realname FILTER html %]">
</td>
</tr>
[% IF user.authorizer.can_change_email && Param('allowemailchange') %]
[% IF login_change_date %]
[% IF new_login_name %]
<tr>
<th align="right">Новый адрес электронной почты:</th>
<td>[% new_login_name FILTER html %]</td>
</tr>
<tr>
<th align="right">Срок подтверждения:</th>
<td>[% login_change_date FILTER time %]</td>
</tr>
[% ELSE %]
<tr>
<th align="right">Текущий адрес электронной почты:</th>
<td>[% user.login FILTER html %]</td>
</tr>
<tr>
<th align="right">Срок подтверждения:</th>
<td>[% login_change_date FILTER time %]</td>
</tr>
[% END %]
[% ELSE %]
<tr>
<th align="right">Новый адрес электронной почты:</th>
<td>
<input size="35" name="new_login_name">
</td>
</tr>
[% END %]
[% END %]
[% Hook.process('field') %]
</table>
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# has_bits: array of hashes. May be empty.
# name => Names of the permissions the user has.
# desc => Descriptions of the permissions the user has.
# set_bits: array of hashes. May be empty.
# name => Names of the permissions the user can set for
# other people.
# desc => Descriptions of the permissions the user can set for
# other people.
#%]
[% PROCESS global/variables.none.tmpl %]
<table align="center">
<tr>
<td>
[% IF has_bits.size %]
Для вашей учетной записи установлены права:
<table align="center">
[% FOREACH bit_description = has_bits %]
<tr>
<td>[% bit_description.name FILTER html %]</td>
<td>[% bit_description.desc FILTER html_light %]</td>
</tr>
[% END %]
</table>
[% FOREACH privs = ["editcomponents", "canconfirm", "editbugs"] %]
[% SET products = ${"local_$privs"} %]
[% IF products && products.size %]
<br>
<p>
Также установлены права '[% privs FILTER html %]'
для следующих продуктов:
</p>
<p>
[% FOREACH product = products %]
[% product.name FILTER html %]<br>
[% END %]
</p>
[% END %]
[% END %]
[% ELSE %]
Для вашей учетной записи прав не установлено.
[% END %]
[% IF user.in_group('editusers') %]
<br>
У вас есть право редактировать пользователей. Вы можете
включать и выключать все разрешения всем пользователям.
[% ELSIF set_bits.size %]
<br>
А также Вы можете управлять следующими правами
<a href="editusers.cgi">других пользователей</a>:
<table align="center">
[% FOREACH bit_description = set_bits %]
<tr>
<td>[% bit_description.name FILTER html %]</td>
<td>[% bit_description.desc FILTER html_light %]</td>
</tr>
[% END %]
</table>
[% END %]
[% IF user.in_group('bz_sudoers') %]
<br>
Вы включены в группу <b>bz_sudoers</b> и можете
<a href="relogin.cgi?action=prepare-sudo">работать от имени другого пользователя</a>.
[% END %]
</td>
</tr>
</table>
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# tabs: List of hashes. May not be empty. Each hash has three members:
# name: string. Name of the tab (used internally.)
# description: string. Description of the tab (used in tab title).
# saveable: boolean. True if tab has a form which can be submitted.
# True if user is not receiving self-generated mail.
# Note: For each tab name, a template "prefs/${tab.name}.tmpl" must exist,
# and its interface must be fulfilled.
# current_tab: A direct reference to one of the hashes in the tabs list.
# This tab will be displayed.
# changes_saved: boolean/string. True if the CGI processed form data before
# displaying anything, and can contain an optional custom
# message if required (which Perl still evaluates as True).
# dont_show_button: boolean. Prevent the display of the "Submit Changes" button.
#%]
[% filtered_login = user.login FILTER html %]
[% PROCESS global/header.html.tmpl
title = "Параметры пользователя"
subheader = filtered_login
style_urls = ['skins/standard/admin.css']
javascript_urls = ['js/util.js', 'js/field.js']
doc_section = "userpreferences.html"
yui = ['autocomplete']
%]
[% tabs = [ { name => "settings", label => "Общие параметры",
link => "userprefs.cgi?tab=settings", saveable => "1" },
{ name => "email", label => "Электронная почта",
link => "userprefs.cgi?tab=email", saveable => "1" },
{ name => "saved-searches", label => "Условия отбора",
link => "userprefs.cgi?tab=saved-searches", saveable => "1" },
{ name => "account", label => "Учетная запись",
link => "userprefs.cgi?tab=account", saveable => "1" },
{ name => "permissions", label => "Разрешения",
link => "userprefs.cgi?tab=permissions", saveable => "0" } ] %]
[% Hook.process('tabs') %]
[% FOREACH tab IN tabs %]
[% IF tab.name == current_tab_name %]
[% current_tab = tab %]
[% LAST %]
[% END %]
[% END %]
[% WRAPPER global/tabs.html.tmpl
tabs = tabs
current_tab = current_tab
%]
[% IF changes_saved %]
<div id="message">
[% current_tab.label FILTER lower %]: изменения сохранены.
[% IF email_changes_saved %]
<p>
По старому и по новому адресу отправлены сообщения
для подтверждения изменения адреса электронной почты.
</p>
[% END %]
</div>
[% END %]
<h3>[% current_tab.label %]</h3>
[% IF current_tab.saveable %]
<form name="userprefsform" method="post" action="userprefs.cgi">
<input type="hidden" name="tab" value="[% current_tab.name %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
[% END %]
[% PROCESS "account/prefs/${current_tab.name}.html.tmpl"
IF current_tab.name.defined %]
[% IF current_tab.saveable %]
<input type="hidden" name="dosave" value="1">
[% UNLESS dont_show_button %]
<table>
<tr>
<td width="150">&nbsp;</td>
<td>
<input type="submit" id="update" value="Сохранить">
</td>
</tr>
</table>
[% END %]
</form>
[% END %]
[% END %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# queryshare_groups: list of groups the user may share queries with
# (id, name).
# bless_group_ids: list of group ids the user may bless.
#%]
[% IF user.can_bless %]
<script type="text/javascript"><!--
function update_checkbox(group) {
var bless_groups = [[% bless_group_ids.join(",") FILTER js %]];
var checkbox = document.getElementById(group.name.replace(/share_(\d+)/, "force_$1"));
if (bz_isValueInArray(bless_groups, group.value)) {
YAHOO.util.Dom.removeClass(checkbox.parentNode, "bz_default_hidden");
} else {
YAHOO.util.Dom.addClass(checkbox.parentNode, "bz_default_hidden");
checkbox.checked = false;
}
} //-->
</script>
[% END %]
<p>Сохраненные условия отбора:</p>
<blockquote>
<table border="1" cellpadding="3">
<tr>
<th>
Условие
</th>
<th>
Отобрать
</th>
<th>
Изменить
</th>
<th>
Удалить
</th>
<th>
Показывать внизу страницы
</th>
[% may_share = user.in_group(Param('querysharegroup')) && queryshare_groups.size %]
[% IF may_share %]
<th>
Опубликовать для группы
</th>
[% END %]
</tr>
<tr>
<td>Мои [% terms.bugs %]</td>
<td>
[% filtered_username = user.login FILTER uri %]
<a href="[% Param('mybugstemplate').replace('%userid%', filtered_username) %]">Отобрать</a>
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
<td align="center">
<input type="checkbox"
name="showmybugslink"
value="1"
[% " checked" IF user.showmybugslink %]>
</td>
[% IF may_share %]
<td>
&mdash;
</td>
[% END %]
</tr>
[% FOREACH q = user.queries %]
<tr>
<td>[% q.name FILTER html %]</td>
<td>
<a href="buglist.cgi?cmdtype=dorem&amp;remaction=run&amp;namedcmd=[% q.name FILTER uri %]
[% IF q.shared_with_group.id %]&amp;sharer_id=[% user.id FILTER uri %][% END %]">Отобрать</a>
</td>
<td>
<a href="query.cgi?[% q.edit_link FILTER html %]&amp;known_name=
[% q.name FILTER uri %]">Изменить</a>
</td>
<td>
[% IF q.used_in_whine %]
Используется в <a href="editwhines.cgi">предупреждениях</a>
[% ELSE %]
<a href="buglist.cgi?cmdtype=dorem&amp;remaction=forget&amp;namedcmd=
[% q.name FILTER uri %]&amp;token=
[% issue_hash_token([q.id, q.name]) FILTER uri %]">Удалить</a>
[% END %]
</td>
<td align="center">
<input type="checkbox"
name="link_in_footer_[% q.id FILTER html %]"
value="1"
alt="[% q.name FILTER html %]"
[% " checked" IF q.link_in_footer %]>
</td>
[% IF may_share %]
<td>
<select name="share_[% q.id FILTER html %]"
[% IF user.can_bless %] onchange="update_checkbox(this);"[% END %]>
<option value="">Не публиковать</option>
[% FOREACH group = queryshare_groups %]
<option value="[% group.id %]"
[% ' selected="selected"'
IF q.shared_with_group.id == group.id %]
>[% group.name FILTER html %]</option>
[% END %]
</select>
[% IF user.can_bless %]
<span [% IF !bless_group_ids.grep("^$q.shared_with_group.id\$").0
%]class="bz_default_hidden"[% END %]>
<input type="checkbox" id="force_[% q.id FILTER html %]"
name="force_[% q.id FILTER html %]" value="1">
<label for="force_[% q.id FILTER html %]">Показывать внизу страницы</label>
</span>
[% END %]
[% IF q.shared_with_users %]
(опубликовано для [% q.shared_with_users FILTER html %]
[%+ numeral(q.shared_with_users, "пользователя", "пользователей", "пользователей") FILTER html %])
[% END %]
</td>
[% END %]
</tr>
[% END %]
</table>
[% IF user.can_bless %]
<p>Обратите внимание: для каждого условия, отмеченного "Показывать внизу страницы",
ссылка будет добавлена в набор условий каждого пользователя, входящего в группу
на момент сохранения этих изменений.</p>
[% END %]
</blockquote>
[% IF user.queries_available.size %]
<p>Условия отбора, опубликованные другими пользователями:</p>
<table border="1" cellpadding="3">
<tr>
<th>
Условие
</th>
<th>
Автор
</th>
<th>
Опубликовано для
</th>
<th>
Отобрать
</th>
<th>
Изменить
</th>
<th>
Показывать
внизу страницы
</th>
</tr>
[% FOREACH q = user.queries_available %]
<tr>
<td>[% q.name FILTER html %]</td>
<td>[% q.user.identity FILTER html %]</td>
<td>[% q.shared_with_group.name FILTER html %]</td>
<td>
<a href="buglist.cgi?cmdtype=dorem&amp;remaction=run&amp;namedcmd=
[% q.name FILTER uri %]&amp;sharer_id=
[% q.user.id FILTER uri %]">Отобрать</a>
</td>
<td>
<a href="query.cgi?[% q.edit_link FILTER html %]&amp;known_name=
[% q.name FILTER uri %]">Изменить</a>
</td>
<td align="center">
<input type="checkbox"
name="link_in_footer_[% q.id FILTER html %]"
value="1"
alt="[% q.name FILTER html %]"
[% " checked" IF q.link_in_footer %]>
</td>
</tr>
[% END %]
</table>
[% ELSE %]
<p>Нет условий отбора, опубликованных для Вас другими пользователями.</p>
[% END %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# setting_names: an array of strings
# settings: a hash of hashes, keyed by setting_name.
# Each hash contains:
# is_enabled - boolean
# default_value - string (global default for this setting)
# value - string (user-defined preference)
# is_default - boolean (true if user has no preference)
# has_settings_enabled : boolean; is true if there is at least one user pref
# enabled by the maintainer.
#%]
[% PROCESS "global/setting-descs.none.tmpl" %]
[% IF settings.size %]
[% UNLESS has_settings_enabled %]
<p class="criticalmessages">
Изменение параметров пользователя запрещено
<a href="mailto:[% Param("maintainer") %]">администратором</a>
сервера. Исправления невозможны.
</p>
[% END %]
<table border="0" cellpadding="8">
[% FOREACH name = setting_names %]
[% default_name = name _ '-isdefault' %]
[% default_val = settings.${name}.default_value %]
<tr>
<td align="right">
[% setting_descs.$name OR name FILTER html %]
</td>
<td>
[% IF settings.${name}.is_enabled %]
<select name="[% name FILTER html %]" id="[% name FILTER html %]">
<option value="[% default_name FILTER html %]"
[% ' selected="selected"' IF settings.${name}.is_default %]>
По умолчанию ([% setting_descs.${default_val} OR default_val FILTER html %])
</option>
[% FOREACH x = settings.${name}.legal_values %]
<option value="[% x FILTER html %]"
[% ' selected="selected"'
IF x == settings.${name}.value
AND NOT settings.${name}.is_default %]>
[% setting_descs.${x} OR x FILTER html %]
</option>
[% END %]
</select>
[% ELSE %]
<select name="[% name FILTER html %]" id="[% name FILTER html %]" disabled="disabled">
<option value="[% default_name FILTER html %]">
По умолчанию ([% setting_descs.${default_val} OR default_val FILTER html %])
</option>
</select>
[% END %]
</td>
</tr>
[% END %]
</table>
[% END %]
<br>
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# otheruser: Bugzilla User Object; The user whose profile activity
# we are viewing.
#
# listselectionvalues: selection values to recreate the current user list.
#
# profile_changes: An array of hashes containing the following fields:
#
# who: string; login name of who made the change
# activity_when: string; when the change was made
# what: string; the description of the field which was changed
# removed: string; the removed value (maybe empty string)
# added: string; the added value (maybe empty string)
#%]
[% title = BLOCK %]
Журнал изменений учетной записи '[% otheruser.login FILTER html %]'
[% END %]
[% PROCESS global/header.html.tmpl
title = title
%]
[% PROCESS admin/users/listselectvars.html.tmpl
listselectionvalues = listselectionvalues
%]
[% columns =
[{name => 'who'
heading => 'Кто'
}
{name => 'activity_when'
heading => 'Когда'
}
{name => 'what'
heading => 'Что'
content_use_field => 1
}
{name => 'removed'
heading => 'Удалено'
}
{name => 'added'
heading => 'Добавлено'
}
]
%]
[% PROCESS admin/table.html.tmpl
columns = columns
data = profile_changes
%]
<p><a href="editusers.cgi?action=edit&amp;userid=
[%- otheruser.id FILTER uri %]"
title="Изменить данные пользователя '[% otheruser.login FILTER html %]'">Изменить пользователя</a> или
<a title="Поиск пользователей" href="editusers.cgi">Искать другие учетные записи</a>
[% IF listselectionvalues.matchtype != 'exact' %]
или <a title="Вернуться к списку пользователей"
href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">вернуться
к списку пользователей</a>
[% END %]
</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/variables.none.tmpl %]
[% title = BLOCK %]
Администрирование экземпляра ([% terms.Bugzilla %]
[%+ constants.BUGZILLA_VERSION FILTER html %])
[% END %]
[% PROCESS global/header.html.tmpl title = title
style_urls = ['skins/standard/admin.css']
doc_section = "administration.html"
%]
<div>
Данная страница доступна только пользователям с административными правами.
Отсюда можно перейти к страницам для настройки различных аспектов этого экземпляра
[% terms.Bugzilla %]. Обратите внимание: некоторые страницы могут быть недоступны Вам,
они отмечены более светлым цветом.
</div>
<table>
<tr>
<td class="admin_links">
<dl>
[% class = user.in_group('tweakparams') ? "" : "forbidden" %]
<dt id="parameters" class="[% class %]"><a href="editparams.cgi">Настройки системы</a></dt>
<dd class="[% class %]">Установка основных параметров системы. Здесь устанавливается
адрес (URL) для доступа к системе, правила аутентификации пользователей,
выбор полей для отображения, настройка почтовых оповещений, выбор групп
пользователей для определенных задач и многое другое.</dd>
<dt id="preferences" class="[% class %]"><a href="editsettings.cgi">Настройки пользователей</a></dt>
<dd class="[% class %]">Установка настроек по умолчанию для пользователей. Эти значения
будут использованы для всех пользователей системы. Пользователи смогут изменить их
на странице <a href="userprefs.cgi?tab=settings">параметров пользователя</a>.</dd>
[% class = user.in_group('editcomponents') ? "" : "forbidden" %]
<dt id="sanitycheck" class="[% class %]"><a href="sanitycheck.cgi">Проверка целостности</a></dt>
<dd class="[% class %]">Запуск проверки целостности для поиска проблем в базе данных.
Это может занять несколько десятков минут, в зависимости от размера базы данных.
Проверку можно автоматизировать, настроив запуск <tt>sanitycheck.pl</tt> по расписанию.
В случае обнаружения ошибок оповещение будет отправлено указанному пользователю по
электронной почте.</dd>
[% class = (user.in_group('editusers') || user.can_bless) ? "" : "forbidden" %]
<dt id="users" class="[% class %]"><a href="editusers.cgi">Пользователи</a></dt>
<dd class="[% class %]">Создание новых учетных записей и изменение существующих.
Управление членством пользователей в группах.</dd>
[% class = (Param('useclassification') && user.in_group('editclassifications')) ? "" : "forbidden" %]
<dt id="classifications" class="[% class %]"><a href="editclassifications.cgi">Разделы</a></dt>
<dd class="[% class %]">Если [% terms.Bugzilla %] используется для поддержки многих продуктов
одновременно, их можно разбить на разделы. Это поможет пользователям лучше ориентироваться
как при поиске, так и при регистрации [% terms.bugs_gen %].</dd>
[% class = (user.in_group('editcomponents')
|| user.get_products_by_permission("editcomponents").size) ? "" : "forbidden" %]
<dt id="products" class="[% class %]"><a href="editproducts.cgi">Продукты</a></dt>
<dd class="[% class %]">Изменение параметров продуктов, включая настройку групп,
которое позволяет управлять доступом к [% terms.bugs_dat %] этих продуктов. Также
можно непосредственно изменить такие параметры продуктов как
<a href="editcomponents.cgi">компоненты</a>, <a href="editversions.cgi">версии</a>
и <a href="editmilestones.cgi">планы</a>.</dd>
[% class = (user.in_group('editcomponents')
|| user.get_products_by_permission('editcomponents').size) ? "" : "forbidden" %]
<dt id="flags" class="[% class %]"><a href="editflagtypes.cgi">Согласования</a></dt>
<dd class="[% class %]">Согласование — специальный атрибут [% terms.bugs_gen %]
и/или приложений, который может принимать четыре состояния: запрошено, одобрено, отклонено и не определено.
Количество согласований для [% terms.bug_gen %] не ограничено, также определяется какие
пользователи могут выполнять их.</dd>
[% Hook.process('end_links_left') %]
</dl>
</td>
<td class="admin_links">
<dl>
[% class = user.in_group('admin') ? "" : "forbidden" %]
<dt id="custom_fields" class="[% class %]"><a href="editfields.cgi">Атрибуты</a></dt>
<dd class="[% class %]">[% terms.Bugzilla %] позволяет определить новые поля,
не реализованные изначально, для учета специфических требований.
Эти поля могут использоваться наряду со стандартными: принимать некоторые значения для
[%+ terms.bugs_gen %] и участвовать в поиске.<br>
Перед созданием новых атрибутов следует изучить штатные возможности, поскольку
множество дополнительных атрибутов сделают интерфейс громоздким и сложным
для использования.</dd>
<dt id="field_values" class="[% class %]"><a href="editvalues.cgi">Значения атрибутов</a></dt>
<dd class="[% class %]">Определение допустимых значений для атрибутов, выбор в
которых ограничен некоторым списком. Здесь же определяются значения настраиваемых
атрибутов некоторых типов.</dd>
<dt id="status_workflow" class="[% class %]"><a href="editworkflow.cgi">Состояния [%terms.bugs_gen %]</a></dt>
<dd class="[% class %]">Настройка состояний: выбор начальных состояний [% terms.bugs_gen %],
выбираемых при их создании, и допустимых переходов
между состояниями при изменениях существующих [% terms.bugs_gen %].</dd>
[% class = user.in_group('creategroups') ? "" : "forbidden" %]
<dt id="groups" class="[% class %]"><a href="editgroups.cgi">Группы</a></dt>
<dd class="[% class %]">Определение групп пользователей данного экземпляра [% terms.Bugzilla %].
Группы используются для определения привилегий в системе и для ограничения доступа
к некоторым [% terms.bugs_dat %].</dd>
[% class = user.in_group('editkeywords') ? "" : "forbidden" %]
<dt id="keywords" class="[% class %]"><a href="editkeywords.cgi">Ключевые слова</a></dt>
<dd class="[% class %]">Настройка ключевых слов для присвоения [% terms.bugs_dat %]. Ключевые слова&nbsp;—
удобный инструмент пометки [% terms.bugs_gen %] для облегчения их поиска в дальнейшем.</dd>
[% class = user.in_group('bz_canusewhines') ? "" : "forbidden" %]
<dt id="whining" class="[% class %]"><a href="editwhines.cgi">Оповещения</a></dt>
<dd class="[% class %]">Настройка запросов, запускаемых по расписанию и
рассылающих результаты по электронной почте. Это удобный способ напоминаний
о назначениях и отслеживания изменений [% terms.bugs_gen %].</dd>
[% Hook.process('end_links_right') %]
</dl>
</td>
</tr>
</table>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/header.html.tmpl
title = "Создание раздела"
%]
<form method=post action="editclassifications.cgi">
<table border=0 cellpadding=4 cellspacing=0>
[% PROCESS "admin/classifications/edit-common.html.tmpl" %]
</table>
<hr>
<input type=submit value="Создать">
<input type=hidden name="action" value="new">
<input type="hidden" name="token" value="[% token FILTER html %]">
</FORM>
[% PROCESS admin/classifications/footer.html.tmpl %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/header.html.tmpl
title = "Удаление раздела"
%]
<table border=1 cellpadding=4 cellspacing=0>
<tr bgcolor="#6666ff">
<th valign="top" align="left">Поле</th>
<th valign="top" align="left">Значение</th>
</tr><tr>
<td valign="top">Раздел:</td>
<td valign="top">[% classification.name FILTER html %]</td>
</tr><tr>
<td valign="top">Описание:</td>
<td valign="top">
[% IF classification.description %]
[% classification.description FILTER html_light %]
[% ELSE %]
<font color="red">не указано</font>
[% END %]
</td>
</tr><tr>
<td valign="top">Порядок сортировки:</td>
<td valign="top">[% classification.sortkey FILTER html %]</td>
</tr>
</table>
<h2>Подтверждение</h2>
<p>Удалить этот раздел?<p>
<form method=post action="editclassifications.cgi">
<input type=submit value="Да, удалить">
<input type=hidden name="action" value="delete">
<input type=hidden name="classification" value="[% classification.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% PROCESS admin/classifications/footer.html.tmpl %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# classification: Bugzilla::Classifiation object.
#%]
<tr>
<th align="right">Раздел:</th>
<td><input size=64 maxlength=64 name="classification"
value="[% classification.name FILTER html %]"></td>
</tr>
<tr>
<th align="right">Описание:</th>
<td>
[% INCLUDE global/textarea.html.tmpl
name = 'description'
minrows = 4
cols = 64
defaultcontent = classification.description
%]
</td>
</tr>
<tr>
<th align="right"><label for="sortkey">Порядок сортировки:</label></th>
<td><input id="sortkey" size="20" maxlength="20" name="sortkey"
value="[%- classification.sortkey FILTER html %]"></td>
</tr>
[% Hook.process('rows') %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/header.html.tmpl
title = "Изменение раздела"
%]
<form method=post action="editclassifications.cgi">
<table border=0 cellpadding=4 cellspacing=0>
[% PROCESS "admin/classifications/edit-common.html.tmpl" %]
<tr valign=top>
<th align="right">
<a href="editproducts.cgi?classification=[% classification.name FILTER uri %]">
Продукты</a>:
</th>
<td>
[% IF classification.products.size > 0 %]
<table>
[% FOREACH product = classification.products %]
<tr>
<th align=right valign=top>[% product.name FILTER html %]</th>
<td valign=top>
[% IF product.description %]
[% product.description FILTER html_light %]
[% ELSE %]
<font color="red">нет описания</font>
[% END %]
</td>
</tr>
[% END %]
</table>
[% ELSE %]
<font color="red">нет продуктов</font>
[% END %]
</td>
</tr>
</table>
<input type=hidden name="classificationold"
value="[% classification.name FILTER html %]">
<input type=hidden name="action" value="update">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type=submit value="Сохранить">
</form>
[% PROCESS admin/classifications/footer.html.tmpl %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/variables.none.tmpl %]
<p>Вернуться <a href="./">в начало</a>
или <a href="editclassifications.cgi"> изменить</a> другие разделы.
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/header.html.tmpl
title = "Переместить продукты"
%]
<form method=post action="editclassifications.cgi">
<table border=0 cellpadding=4 cellspacing=0>
<tr>
<th align="right">Раздел:</th>
<td valign="top" colspan=3>[% classification.name FILTER html %]</td>
</tr><tr>
<th align="right">Описание:</th>
<td valign="top" colspan=3>
[% IF classification.description %]
[% classification.description FILTER html_light %]
[% ELSE %]
<font color="red">не указано</font>
[% END %]
</td>
</tr><tr>
<th align="right">Порядок сортировки:</th>
<td valign="top" colspan=3>[% classification.sortkey FILTER html %]</td>
</tr><tr>
<th align="right">Продукты:</th>
<td valign="top">Другие разделы</td>
<td></td>
<td valign="top">Этот раздел</td>
</tr><tr>
<td></td>
<td valign="top">
<select name="prodlist" id="prodlist" multiple="multiple" size="20">
[% FOREACH class = classifications %]
[% IF class.id != classification.id %]
[% FOREACH product = class.products %]
<option value="[% product.name FILTER html %]">
[[% class.name FILTER html %]]&nbsp;[% product.name FILTER html %]
</option>
[% END %]
[% END %]
[% END %]
</select></td>
<td align="center">
<input type=submit value="Добавить &gt;&gt;" name="add_products"><br><br>
<input type=submit value="&lt;&lt; Исключить" name="remove_products">
</td>
<td valign="middle" rowspan=2>
<select name="myprodlist" id="myprodlist" multiple="multiple" size="20">
[% FOREACH product = classification.products %]
<option value="[% product.name FILTER html %]">
[% product.name FILTER html %]
</option>
[% END %]
</select></td>
</tr>
</table>
<input type=hidden name="action" value="reclassify">
<input type=hidden name="classification" value="[% classification.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% PROCESS admin/classifications/footer.html.tmpl %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/header.html.tmpl
title = "Выберите раздел"
%]
<table border=1 cellpadding=4 cellspacing=0>
<tr bgcolor="#6666ff">
<th align="left">Изменить...</th>
<th align="left">Описание</th>
<th align="left">Порядок сортировки</th>
<th align="left">Продукты</th>
<th align="left">Действие</th>
</tr>
[% FOREACH cl = classifications %]
<tr>
<td valign="top"><a href="editclassifications.cgi?action=edit&amp;classification=[% cl.name FILTER uri %]"><b>[% cl.name FILTER html %]</b></a></td>
<td valign="top">
[% IF cl.description %]
[% cl.description FILTER html_light %]
[% ELSE %]
<font color="red">нет</font>
[% END %]
</td>
<td valign="top">[% cl.sortkey FILTER html %]</td>
[% IF (cl.id == 1) %]
<td valign="top">[% cl.product_count FILTER html %]</td>
[% ELSE %]
<td valign="top"><a href="editclassifications.cgi?action=reclassify&amp;classification=[% cl.name FILTER uri %]">переклассифицировать ([% cl.product_count FILTER html %])</a></td>
[% END %]
[%# don't allow user to delete the default id. %]
[% IF (cl.id == 1) %]
<td valign="top">&nbsp;</td>
[% ELSE %]
<td valign="top"><a href="editclassifications.cgi?action=del&amp;classification=[% cl.name FILTER uri %]">удалить</a></td>
[% END %]
</tr>
[% END %]
</table>
<p>
<a href="editclassifications.cgi?action=add">Создать новый раздел</a>.
</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# comp: object; Bugzilla::Component object representing the component the
# user wants to delete.
# product: object; Bugzilla::Product object representing the product to
# which the component belongs.
#%]
[% title = BLOCK %]Удаление компонента '[% comp.name FILTER html %]'
продукта '[% product.name FILTER html %]'
[% END %]
[% PROCESS global/header.html.tmpl
title = title
style_urls = ['skins/standard/admin.css']
%]
<table border="1" cellpadding="4" cellspacing="0">
<tr bgcolor="#6666FF">
<th valign="top" align="left">Поле</th>
<th valign="top" align="left">Значение</th>
</tr>
<tr>
<td valign="top">Компонент:</td>
<td valign="top">[% comp.name FILTER html %]</td>
</tr>
<tr>
<td valign="top">Описание компонента:</td>
<td valign="top">[% comp.description FILTER html_light %]</td>
</tr>
<tr>
<td valign="top">Ответственный исполнитель:</td>
<td valign="top">[% comp.default_assignee.login FILTER html %]</td>
[% IF Param('useqacontact') %]
</tr>
<tr>
<td valign="top">Ответственный за приемку:</td>
<td valign="top">[% comp.default_qa_contact.login FILTER html %]</td>
[% END %]
</tr>
<tr>
<td valign="top">Компонент продукта:</td>
<td valign="top">[% product.name FILTER html %]</td>
[% IF product.description %]
</tr>
<tr>
<td valign="top">Описание продукта:</td>
<td valign="top">[% product.description FILTER html_light %]</td>
[% END %]
[% IF Param('usetargetmilestone') %]
</tr>
<tr>
<td valign="top">Планы продукта:</td>
<td valign="top">
<a href="[% product.milestone_url FILTER html %]">
[% product.milestone_url FILTER html %]
</a>
</td>
[% END %]
</tr>
<tr>
<TD VALIGN="top">Открыт для регистрации [% terms.bugs_gen %]:</TD>
<TD VALIGN="top">[% IF product.is_active && comp.isactive %]Да[% ELSE %]Нет[% END %]</td>
</tr>
<tr>
<td valign="top">[% terms.Bugs_gen %]:</td>
<td valign="top">
[% IF comp.bug_count %]
<a title="Список [% terms.bugs_gen %] компонента '[% comp.name FILTER html %]'"
href="buglist.cgi?component=[% comp.name FILTER uri %]&amp;product=
[%- product.name FILTER uri %]">[% comp.bug_count %]</a>
[% ELSE %]
Не зарегистрировано
[% END %]
</td>
</tr>
</table>
<h2>Подтверждение</h2>
[% IF comp.bug_count %]
[% IF !Param("allowbugdeletion") %]
<p class="confirmation">
Для компонента
[% numeral(comp.bug_count,
"зарегистрирована ${comp.bug_count} ${terms.bug}",
"зарегистрировано ${comp.bug_count} ${terms.bug_gen}",
"зарегистрировано ${comp.bug_count} ${terms.bugs_gen}")
FILTER html %].
Без переноса их в другие компоненты удаление невозможно.
</p>
[% ELSE %]
<table border="0" cellpadding="20" width="70%" bgcolor="red"><tr><td>
Для компонента
[% numeral(comp.bug_count,
"зарегистрирована ${comp.bug_count} ${terms.bug}",
"зарегистрировано ${comp.bug_count} ${terms.bugs}",
"зарегистрировано ${comp.bug_count} ${terms.bugs_gen}")
FILTER html %]! Удаление
компонента приведет к удалению <b>ВСЕХ</b> его
[% terms.bugs_gen %] и переписки по ним.
</td></tr></table>
[% END %]
[% END %]
[% IF comp.bug_count == 0 || Param('allowbugdeletion') %]
<p>Удалить компонент?</p>
<form method="post" action="editcomponents.cgi">
<input type="submit" id="delete" value="Да, удалить">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
<input type="hidden" name="component" value="[% comp.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% END %]
[% PROCESS admin/components/footer.html.tmpl %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# product: object; Bugzilla::Product object representing the product to
# which the component belongs.
#%]
[% title = BLOCK %]Создание компонента продукта '[% product.name FILTER html %]'[% END %]
[% PROCESS global/header.html.tmpl
yui = [ 'autocomplete' ]
javascript_urls = [ "js/field.js" ]
title = title
%]
<form method="post" action="editcomponents.cgi">
<table border="0" cellpadding="4" cellspacing="0">
[% PROCESS "admin/components/edit-common.html.tmpl" %]
</table>
<hr>
<input type="submit" id="create" value="Создать">
<input type="hidden" name="action" value="new">
<input type="hidden" name='product' value="[% product.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% PROCESS admin/components/footer.html.tmpl %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# comp: object; Bugzilla::Component object.
#%]
[%# When called from the "New Product" page, the component description field
# must have a name different from the product description field. %]
[% DEFAULT desc_name = "description" %]
<tr>
<th class="field_label"><label for="component">Компонент:</label></th>
<td><input size="64" maxlength="64" name="component" id="component"
value="[%- comp.name FILTER html %]"></td>
</tr>
<tr>
<th class="field_label"><label for="[% desc_name FILTER html %]">Описание:</label></th>
<td>
[% INCLUDE global/textarea.html.tmpl
name = desc_name
id = desc_name
minrows = 4
cols = 64
wrap = 'virtual'
defaultcontent = comp.description
%]
</td>
</tr>
<tr>
<th class="field_label"><label for="initialowner">Ответственный исполнитель:</label></th>
<td>
[% INCLUDE global/userselect.html.tmpl
name => "initialowner"
id => "initialowner"
value => comp.default_assignee.login
size => 64
%]
</td>
</tr>
[% IF Param('useqacontact') %]
<tr>
<th class="field_label"><label for="initialqacontact">Ответственный за приемку:</label></th>
<td>
[% INCLUDE global/userselect.html.tmpl
name => "initialqacontact"
id => "initialqacontact"
value => comp.default_qa_contact.login
size => 64
emptyok => 1
%]
</td>
</tr>
[% END %]
<tr>
<th class="field_label"><label for="initialcc">Подписать пользователей:</label></th>
<td>
[% INCLUDE global/userselect.html.tmpl
name => "initialcc"
id => "initialcc"
value => initial_cc_names
size => 64
multiple => 5
%]
<br>
[% IF !Param("usemenuforusers") %]
<em>Введите имена пользователей через запятую.</em>
[% END %]
</td>
</tr>
[% Hook.process('rows') %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# comp: object; Bugzilla::Component object representing the component the
# user wants to edit.
# product: object; Bugzilla::Product object representing the product to
# which the component belongs.
#%]
[% PROCESS global/variables.none.tmpl %]
[% title = BLOCK %]
Изменение компонента '[% comp.name FILTER html %]' продукта '[% product.name FILTER html %]'
[% END %]
[% PROCESS global/header.html.tmpl
title = title
yui = [ 'autocomplete' ]
javascript_urls = [ "js/field.js" ]
%]
<form method="post" action="editcomponents.cgi">
<table border="0" cellpadding="4" cellspacing="0">
[% PROCESS "admin/components/edit-common.html.tmpl" %]
<tr>
<th class="field_label"><label for="isactive">Доступен для [% terms.Bugs_gen %]:</label></th>
<td><input id="isactive" name="isactive" type="checkbox" value="1"
[% 'checked="checked"' IF comp.isactive %]></td>
</tr>
<tr>
<th class="field_label">[% terms.Bugs %]:</th>
<td>
[% IF comp.bug_count > 0 %]
<a title="[% terms.Bugs %] компонента '[% comp.name FILTER html %]'"
href="buglist.cgi?component=
[%- comp.name FILTER uri %]&amp;product=
[%- product.name FILTER uri %]">[% comp.bug_count %]</a>
[% ELSE %]
Нет
[% END %]
</td>
</tr>
</table>
<input type="hidden" name="action" value="update">
<input type="hidden" name="componentold" value="[% comp.name FILTER html %]">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="submit" value="Сохранить изменения" id="update"> или <a
href="editcomponents.cgi?action=del&amp;product=
[%- product.name FILTER uri %]&amp;component=
[%- comp.name FILTER uri %]">удалить</a> компонент.
</form>
[% PROCESS admin/components/footer.html.tmpl
no_edit_component_link = 1
%]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# comp: object; Bugzilla::Component object representing the component
# product: object; Bugzilla::Product object representing the product to
# which the component belongs.
#%]
<hr>
<p>
Изменить
[% IF comp && !no_edit_component_link %]
компонент <a
title="Изменить компонент '[% comp.name FILTER html %]'"
href="editcomponents.cgi?action=edit&amp;product=
[%- product.name FILTER uri %]&amp;component=[% comp.name FILTER uri %]">
'[% comp.name FILTER html %]'</a>
или
[% END %]
[% IF !no_edit_other_components_link %]
другие компоненты продукта <a
title="Выберите компонент продукта '[% product.name FILTER html %]' to edit"
href="editcomponents.cgi?product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>,
или
[% END %]
продукт <a
title="Изменить продукт '[% product.name FILTER html %]'"
href="editproducts.cgi?action=edit&amp;product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>.
</p>
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# showbugcounts: if defined, then bug counts should be included in the table
# product: object; Bugzilla::Product object representing the product to
# which the component belongs.
#%]
[% PROCESS global/variables.none.tmpl %]
[% title = BLOCK %]Выберите компонент продукта
'[% product.name FILTER html %]'[% END %]
[% PROCESS global/header.html.tmpl
title = title
%]
[% edit_contentlink = BLOCK %]editcomponents.cgi?action=edit&amp;product=
[%- product.name FILTER uri %]&amp;component=%%name%%[% END %]
[% delete_contentlink = BLOCK %]editcomponents.cgi?action=del&amp;product=
[%- product.name FILTER uri %]&amp;component=%%name%%[% END %]
[% bug_count_contentlink = BLOCK %]buglist.cgi?component=%%name%%&amp;product=
[%- product.name FILTER uri %][% END %]
[% columns = [
{
name => "name"
heading => "Изменить..."
contentlink => edit_contentlink
},
{
name => "description"
heading => "Описание"
allow_html_content => 1
},
{
name => "initialowner"
heading => "Ответственный исполнитель"
},
]
%]
[% IF Param('useqacontact') %]
[% columns.push({
name => 'initialqacontact'
heading => 'Ответственный за приемку'
}) %]
[% END %]
[% columns.push({
name => "initial_cc_names"
heading => "Список подписанных пользователей"
},
{
name => "isactive"
heading => "Активен"
yesno_field => 1
}) %]
[% IF showbugcounts %]
[% columns.push({
name => 'bug_count'
heading => "$terms.Bugs_gen"
align => "right"
contentlink => bug_count_contentlink
}) %]
[% END %]
[% columns.push({
heading => "Действие"
content => "Удалить"
contentlink => delete_contentlink
}) %]
[%# Overrides the initialowner, the initialqacontact, and the initial_cc_names with right values %]
[% overrides.initialowner = {} %]
[% overrides.initialqacontact = {} %]
[% overrides.initial_cc_names = {} %]
[%# "component" is a reserved word in Template Toolkit. %]
[% FOREACH my_component = product.components %]
[% overrides.initialowner.name.${my_component.name} = {
override_content => 1
content => my_component.default_assignee.login
}
%]
[% overrides.initialqacontact.name.${my_component.name} = {
override_content => 1
content => my_component.default_qa_contact.login
}
%]
[% SET initial_cc_list = [] %]
[% FOREACH cc_user = my_component.initial_cc %]
[% initial_cc_list.push(cc_user.login) %]
[% END %]
[% overrides.initial_cc_names.name.${my_component.name} = {
override_content => 1
content => initial_cc_list.join(', ')
}
%]
[% END %]
[% Hook.process('before_table') %]
[% PROCESS admin/table.html.tmpl
columns = columns
data = product.components
overrides = overrides
%]
<p><a href="editcomponents.cgi?action=add&amp;product=[% product.name FILTER uri %]">Создать</a>
новый компонент продукта '[% product.name FILTER html %]'</p>
[% IF ! showbugcounts %]
<p><a href="editcomponents.cgi?product=[% product.name FILTER uri %]&amp;showbugcounts=1">
Обновить счетчики [% terms.bugs_gen %] (требует времени)</a></p>
[% END %]
[% PROCESS admin/components/footer.html.tmpl
no_edit_other_components_link = 1
%]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# products: array of product objects
# showbugcounts: if defined, then bug counts should be included in the table
#%]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS global/header.html.tmpl
title = "Выберите продукт"
%]
[% columns = [
{
name => "name"
heading => "Изменить компоненты..."
contentlink => "editcomponents.cgi?product=%%name%%"
},
{
name => "description"
heading => "Описание"
allow_html_content => 1
}
]
%]
[% IF showbugcounts %]
[% columns.push({
name => 'bug_count'
heading => "$terms.Bugs_gen"
align => "right"
contentlink => "buglist.cgi?product=%%name%%"
})
%]
[% END %]
[% PROCESS admin/table.html.tmpl
columns = columns
data = products
%]
[% IF !showbugcounts %]
<p><a href="editcomponents.cgi?showbugcounts=1">
Обновить счетчики [% terms.bugs_gen %] (требует времени)</a></p>
[% END %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# abuser: identity of the user who created the (invalid?) token.
# token_action: the action the token was supposed to serve.
# expected_action: the action the user was going to do.
# script_name: the script generating this warning.
# alternate_script: the suggested script to redirect the user to
# if he declines submission.
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
[% PROCESS global/header.html.tmpl title = "Подозрительные действия"
style_urls = ['skins/standard/global.css'] %]
[% IF abuser %]
<div class="throw_error">
<p>При использовании административного интерфейса [% terms.Bugzilla %] генерируется
случайный идентификатор, который хранится в экранной форме и базе данных.
Он используется для контроля того, что запрашиваемые изменения подготовлены при
помощи штатных форм [% terms.Bugzilla %]. В данный момент идентификатор некорректен,
это означает что форма данных заполнена на неверной странице.
Используемый идентификатор:</p>
<table border="0" cellpadding="5" cellspacing="0">
[% IF token_action != expected_action %]
<tr>
<th>Запрошенное&nbsp;действие:</th>
<td>[% token_action FILTER html %]</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
Это действие не совпадает с ожидаемым ([% expected_action FILTER html %]).
</td>
</tr>
[% END %]
[% IF abuser != user.identity %]
<tr>
<th>Создан&nbsp;пользователем:</th>
<td>[% abuser FILTER html %]</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
Идентификатор создан не Вами. Это может указывать на попытку несанкционированного
доступа от Вашего имени!
</td>
</tr>
[% END %]
</table>
<p>Обратитесь к администратору: [%+ Param("maintainer") FILTER html %].</p>
</div>
[% ELSE %]
<div class="throw_error">
Изменение запрошено без использования штатных форм (отсутствует контрольный
идентификатор действия <em>[% expected_action FILTER html %]</em> при вызове
скрипта '[% script_name FILTER html%]' ). Возможные причины:<br>
<ul>
<li>После успешных изменений нажата кнопка "Назад", как правило это
нехорошая идея, но безобидная.</li>
<li>Адрес страницы введен непосредственно в строке,
это также должно быть безопасно.</li>
<li>Вы выбрали ссылку, которая <b>неожиданно для Вас</b> направила сюда,
в этом случае действие может являться опасным.</li>
</ul>
Подтвердите сохранение предлагаемых изменений. Помните, это может привести
к неожиданным и нежелательным результатам.
</div>
<form name="check" id="check" method="post" action="[% script_name FILTER html %]">
[% PROCESS "global/hidden-fields.html.tmpl"
exclude="^(Bugzilla_login|Bugzilla_password)$" %]
<input type="submit" id="confirm" value="Подтвердить изменения">
</form>
<p>или отказаться от изменений и перейти обратно к <a href="[% alternate_script FILTER html %]">
[%- alternate_script FILTER html %]</a>.</p>
[% END %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# field: object; the field object that you are trying to delete.
# token: string; the delete_field token required to complete deletion.
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
[% title = BLOCK %]
Удаление настраиваемого атрибута '[% field.name FILTER html %]' ([% field.description FILTER html %])
[% END %]
[% PROCESS global/header.html.tmpl
title = title
style_urls = ['skins/standard/admin.css']
doc_section = "custom-fields.html#delete-custom-fields"
%]
<table border="1" cellpadding="4" cellspacing="0">
<tr bgcolor="#6666FF">
<th valign="top" align="left">Поле</th>
<th valign="top" align="left">Значение</th>
</tr>
<tr>
<td valign="top">Настраиваемый атрибут:</td>
<td valign="top">[% field.name FILTER html %]</td>
</tr>
<tr>
<td valign="top">Описание:</td>
<td valign="top">[% field.description FILTER html %]</td>
</tr>
<tr>
<td valign="top">Тип:</td>
<td valign="top">[% field_types.${field.type} FILTER html %]</td>
</tr>
</table>
<h2>Подтверждение</h2>
<p class="confirmation">
Подтвердите удаление настраиваемого атрибута из базы данных.<br>
<em>Удаление возможно только для неактивного атрибута, который
никогда не использовался при регистрации [% terms.bugs_gen FILTER html %].</em>
</p>
<a href="editfields.cgi?action=delete&amp;name=[% field.name FILTER html %]&amp;token=[% token FILTER html %]">
Удалить атрибут '[% field.description FILTER html %]'</a>
<p>
<a href="editfields.cgi">Вернуться к списку атрибутов</a>
</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# none
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
[% javascript = BLOCK %]
[% INCLUDE "admin/custom_fields/cf-js.js.tmpl" %]
[% END %]
[% PROCESS global/header.html.tmpl
title = "Создание атрибута"
onload = "document.getElementById('new_bugmail').disabled = true;"
javascript_urls = [ 'js/util.js' ]
doc_section = "custom-fields.html#add-custom-fields"
style_urls = ['skins/standard/admin.css']
%]
[%# set initial editability of fields such as Reverse Relationship Description %]
<script type="text/javascript">
YAHOO.util.Event.onDOMReady(function() {onChangeType(document.getElementById('type'))});
</script>
<p>
Добавление новых атрибутов может сделать интерфейс [% terms.Bugzilla %]
очень сложным. Многие неопытные администраторы начинают с настройки
большого количества атрибутов и впоследствии получают от пользователей
жалобы о сложности регистрации [% terms.bugs %]. Рекомендуется
хорошо обдумать создание каждого дополнительного поля. Может оказаться,
что требуемый функционал уже реализован в [% terms.Bugzilla %] и
надо лишь включить нужный параметр настройки.
</p>
<ul>
<li>Имена пользовательских атрибутов должны начинаться с "cf_", чтобы не
допустить совпадения с именами стандартных полей. Если не указать, "cf_"
будет автоматически добавлено в начало имени.</li>
<li>Описание — короткий текст, объясняющий смысл атрибута, и используемый
в качестве обозначения атрибута в элементах интерфейса.</li>
</ul>
<form id="add_field" action="editfields.cgi" method="GET">
<table border="0" cellspacing="0" cellpadding="5" id="edit_custom_field">
<tr>
<th class="narrow_label"><label for="name">Имя:</label></th>
<td>
<input type="text" id="name" name="name" value="cf_" size="40" maxlength="64">
</td>
<th>
<label for="enter_bug">Может быть установлен при регистрации [% terms.bug_gen %]:</label>
</th>
<td>
<input type="checkbox" id="enter_bug" name="enter_bug" value="1"
onchange="toggleCheckbox(this, 'new_bugmail');">
</td>
</tr>
<tr>
<th class="narrow_label"><label for="desc">Описание:</label></th>
<td><input type="text" id="desc" name="desc" value="" size="40"></td>
[%# FIXME-ru: show localized value here %]
<th>
<label for="new_bugmail">Включать в почтовые оповещения для новых [% terms.bugs_gen %]:</label>
</th>
<td><input type="checkbox" id="new_bugmail" name="new_bugmail" value="1"></td>
</tr>
<tr>
<th class="narrow_label"><label for="type">Тип:</label></th>
<td>
<select id="type" name="type" onchange="onChangeType(this)">
[% FOREACH type = field_types.keys %]
[% NEXT IF type == constants.FIELD_TYPE_UNKNOWN %]
<option value="[% type FILTER html %]">[% field_types.$type FILTER html %]</option>
[% END %]
</select>
</td>
<th><label for="obsolete">Неактивен:</label></th>
<td><input type="checkbox" id="obsolete" name="obsolete" value="1"></td>
</tr>
<tr>
<th class="narrow_label"><label for="sortkey">Порядок сортировки:</label></th>
<td>
<input type="text" id="sortkey" name="sortkey" size="6" maxlength="6">
</td>
<th align="right"><label for="is_mandatory">Обязателен:</label></th>
<td><input type="checkbox" id="is_mandatory" name="is_mandatory" value="1"></td>
</tr>
<tr>
<th class="narrow_label">Длинное описание:</th>
<td>
[% INCLUDE global/textarea.html.tmpl
name = 'long_desc'
id = 'long_desc'
minrows = 3
maxrows = 5
cols = 46
defaultcontent = defaultcontent
%]
</td>
<th>
<label for="visibility_field_id">Условия отображения:</label>
</th>
<td>
<select name="visibility_field_id" id="visibility_field_id"
onchange="onChangeVisibilityField()">
<option></option>
[% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
<option value="[% sel_field.id FILTER html %]">
[% sel_field.description FILTER html %]
([% sel_field.name FILTER html %])
</option>
[% END %]
</select>
<label for="visibility_values">
<strong>принимает любое из значений:</strong>
</label>
<select multiple="multiple" size="5" name="visibility_values"
id="visibility_values" class="field_value">
<option value=""></option>
</select>
</td>
</tr>
<tr>
<th class="narrow_label">
<label for="reverse_desc">Описание обратного отношения:</label>
</th>
<td>
<input type="text" id="reverse_desc" name="reverse_desc" value="" size="40" disabled="disabled">
<br/>
Используйте эту метку для списка [% terms.bugs_gen %], который ссылается на
[%+ terms.abug %] с этим полем
[%+ field_types.${constants.FIELD_TYPE_BUG_ID} FILTER html %].
Например, если описанием является "Дубликат", то
обратным описанием будет "Дубликаты этой [% terms.bugs %]".
Для отключения списка для этого поля оставьте его пустым.
</td>
<th>
<label for="value_field_id">
Атрибут, от которого зависит <br>
отображение значений этого атрибута:
</label>
</th>
<td>
<select disabled="disabled" name="value_field_id" id="value_field_id">
<option></option>
[% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
<option value="[% sel_field.id FILTER html %]">
[% sel_field.description FILTER html %]
([% sel_field.name FILTER html %])
</option>
[% END %]
</select>
</td>
</tr>
</table>
<p>
<input type="hidden" name="action" value="new">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="submit" id="create" value="Создать">
</p>
</form>
<p>
<a href="editfields.cgi">Вернуться к списку атрибутов</a>
</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# field: Bugzila::Field; the current field being edited
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
[% title = BLOCK %]
Изменение атрибута '[% field.name FILTER html %]' ([% field_descs.${field.name} FILTER html %])
[% END %]
[% javascript = BLOCK %]
[% INCLUDE "admin/custom_fields/cf-js.js.tmpl" %]
[% END %]
[% PROCESS global/header.html.tmpl
title = title
onload = "toggleCheckbox(document.getElementById('enter_bug'), 'new_bugmail');"
javascript_urls = [ 'js/util.js' ]
doc_section = "custom-fields.html#edit-custom-fields"
style_urls = ['skins/standard/admin.css']
%]
<p>
Описание — короткий текст, объясняющий смысл атрибута, и используемый
в качестве обозначения атрибута в элементах интерфейса.
</p>
<form id="edit_field" action="editfields.cgi" method="GET">
<table border="0" cellspacing="0" cellpadding="5" id="edit_custom_field">
<tr>
<th class="narrow_label">Имя:</th>
<td>[% field.name FILTER html %]</td>
<th>
<label for="enter_bug">Может быть установлен при регистрации [% terms.bug_gen %]:</label>
</th>
<td><input type="checkbox" id="enter_bug" name="enter_bug" value="1"
[%- " checked" IF field.enter_bug %]
onchange="toggleCheckbox(this, 'new_bugmail');"></td>
</tr>
<tr>
<th class="narrow_label"><label for="desc">Описание:</label></th>
<td><input type="text" id="desc" name="desc" size="40"
value="[% field.description FILTER html %]"></td>
[%# FIXME-ru: show localized value here %]
<th>
<label for="new_bugmail">Включать в почтовые оповещения для новых [% terms.bugs_gen %]:</label>
</th>
<td><input type="checkbox" id="new_bugmail" name="new_bugmail" value="1"
[%- " checked" IF field.mailhead %]></td>
</tr>
<tr>
<th class="narrow_label">Тип:</th>
<td>[% field_types.${field.type} FILTER html %]</td>
<th><label for="obsolete">Неактивен:</label></th>
<td><input type="checkbox" id="obsolete" name="obsolete" value="1"
[%- " checked" IF field.obsolete %]></td>
</tr>
<tr>
<th class="narrow_label"><label for="sortkey">Порядок сортировки:</label></th>
<td>
<input type="text" id="sortkey" name="sortkey" size="6" maxlength="6"
value="[% field.sortkey FILTER html %]">
</td>
<th align="right"><label for="is_mandatory">Обязателен:</label></th>
<td><input type="checkbox" id="is_mandatory" name="is_mandatory" value="1"
[%- ' checked="checked"' IF field.is_mandatory %]></td>
</tr>
<tr>
<th class="narrow_label">Длинное описание:</th>
<td>
[% INCLUDE global/textarea.html.tmpl
name = 'long_desc'
id = 'long_desc'
minrows = 3
maxrows = 5
cols = 46
defaultcontent = field.long_desc
%]
</td>
<th>
<label for="visibility_field_id">Условия отображения:</label>
</th>
<td>
<select name="visibility_field_id" id="visibility_field_id"
onchange="onChangeVisibilityField()">
<option></option>
[% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
[% NEXT IF sel_field.id == field.id %]
<option value="[% sel_field.id FILTER html %]"
[% ' selected="selected"'
IF sel_field.id == field.visibility_field.id %]>
[% sel_field.description FILTER html %]
([% sel_field.name FILTER html %])
</option>
[% END %]
</select>
<label for="visibility_values">
<strong>принимает любое из значений:</strong>
</label>
<select multiple="multiple" size="5" name="visibility_values"
id="visibility_values" class="field_value">
[% FOREACH value = field.visibility_field.legal_values %]
<option value="[% value.id FILTER html %]"
[% " selected" IF field.visibility_values.contains(value) %]>
[% IF field.visibility_field.name == 'component' %]
[% display_value('product', value.product.name) FILTER html %]:
[% END %]
[%+ display_value(field.visibility_field.name, value.name) FILTER html %]
</option>
[% END %]
</select>
</td>
</tr>
[% IF field.type == constants.FIELD_TYPE_BUG_ID %]
<tr>
<th class="narrow_label">
<label for="reverse_desc">Описание обратного отношения:</label>
</th>
<td>
<input type="text" id="reverse_desc" name="reverse_desc" size="40"
value="[% field.reverse_desc FILTER html %]">
<br/>
Используйте эту метку для списка [% terms.bugs_gen %], который ссылается на
[%+ terms.abug %] с этим полем
[%+ field_types.${constants.FIELD_TYPE_BUG_ID} FILTER html %].
Например, если описанием является "Дубликат", то
обратным описанием будет "Дубликаты этой [% terms.bugs %]".
Для отключения списка для этого поля оставьте его пустым.
</td>
<td colspan="2">&nbsp;</td>
</tr>
[% END %]
[% IF field.is_select %]
<tr>
<th>&nbsp;</th>
<td>
<a href="editvalues.cgi?field=[% field.name FILTER uri %]">Допустимые
значения атрибута</a>.
</td>
<th>
<label for="value_field_id">
Атрибут, от которого зависит <br>
отображение значений этого атрибута:
</label>
</th>
<td>
<select name="value_field_id" id="value_field_id">
<option></option>
[% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
[% NEXT IF sel_field.id == field.id %]
<option value="[% sel_field.id FILTER html %]"
[% ' selected="selected"'
IF sel_field.id == field.value_field.id %]>
[% sel_field.description FILTER html %]
([% sel_field.name FILTER html %])
</option>
[% END %]
</select>
</td>
</tr>
[% END %]
</table>
<br>
<input type="hidden" name="action" value="update">
<input type="hidden" name="name" value="[% field.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="submit" id="edit" value="Сохранить">
</form>
[% IF field.obsolete %]
<p>
<a href="editfields.cgi?action=del&amp;name=[% field.name FILTER html %]">Удалить
атрибут из базы данных.</a><br>
Удаление возможно только в случае если атрибут никогда не использовался
при регистрации [% terms.bugs_gen %].<br>
</p>
[% END %]
<p>
<a href="editfields.cgi">Вернуться к списку атрибутов</a>
</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# custom_fields: a list of Bugzilla::Field objects, representing custom fields.
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
[% PROCESS global/header.html.tmpl
title = "Атрибуты"
doc_section = "custom-fields.html"
%]
[% delete_contentlink = BLOCK %]editfields.cgi?action=del&amp;name=%%name%%[% END %]
[% columns = [
{
name => "name"
heading => "Изменить..."
contentlink => "editfields.cgi?action=edit&amp;name=%%name%%"
},
{
name => "description"
heading => "Описание"
},
{
name => "sortkey"
heading => "Порядок сортировки"
},
{
name => "type"
heading => "Тип"
},
{
name => "enter_bug"
heading => "Установка при создании $terms.bug_gen"
},
{
name => "mailhead"
heading => "Включать в оповещения при создании $terms.bug_gen"
},
{
name => "obsolete"
heading => "Неактивный"
},
{
name => "is_mandatory"
heading => "Обязателен"
},
{
name => "action"
heading => "Действие"
content => ""
}
]
%]
[% USE Bugzilla %]
[% custom_fields = Bugzilla.fields({ custom => 1 }) %]
[%# We want to display the type name of fields, not their type ID. %]
[% overrides.type = {} %]
[% FOREACH field_type = field_types.keys %]
[% overrides.type.type.$field_type = {
override_content => 1
content => field_types.$field_type
}
%]
[% END %]
[% overrides.action.obsolete = {
"1" => {
override_content => 1
content => "Удалить"
override_contentlink => 1
contentlink => delete_contentlink
}
}
%]
[% PROCESS admin/table.html.tmpl
columns = columns
overrides = overrides
data = custom_fields
%]
<p>
<a href="editfields.cgi?action=add">Создать атрибут</a>
</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# value: Bugzilla::Field::Choice; The field value being deleted.
# value_count: number; The number of values available for this field.
# field: object; the field the value is being deleted from.
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
[% title = BLOCK %]
Удаление значения '[% value.name FILTER html %]' атрибута
'[% field_descs.${field.name} FILTER html %]' ([% field.name FILTER html %])
[% END %]
[% PROCESS global/header.html.tmpl
title = title
style_urls = ['skins/standard/admin.css']
%]
<table border="1" cellpadding="4" cellspacing="0">
<tr bgcolor="#6666FF">
<th valign="top" align="left">Поле</th>
<th valign="top" align="left">Значение</th>
</tr>
<tr>
<td valign="top">Атрибут:</td>
<td valign="top">[% field_descs.${field.name} FILTER html %]</td>
</tr>
<tr>
<td valign="top">Значение атрибута:</td>
<td valign="top">[% value.name FILTER html %]</td>
</tr>
<tr>
<td valign="top">[% terms.Bugs_gen %]:</td>
<td valign="top">
[% IF value.bug_count %]
<a title="Список [% terms.bugs_gen %], использующих значение
'[% value.name FILTER html %]'
атрибута '[% field_descs.${field.name} FILTER html %]'"
href="buglist.cgi?[% field.name FILTER uri %]=
[%- value.name FILTER uri %]">
[%- value.bug_count FILTER html %]</a>
[% ELSE %]
Нет
[% END %]
</td>
</tr>
</table>
<h2>Подтверждение</h2>
[% IF value.is_default || value.bug_count || (value_count == 1)
|| value.controls_visibility_of_fields.size
|| value.controlled_values_array.size
%]
<p>Значение '[% value FILTER html %]' атрибута
'[% field_descs.${field.name} FILTER html %]' не может быть удалено:</p>
<ul class="warningmessages">
[% IF value.is_default %]
<li>Значение '[% value.name FILTER html %]' используется по умолчанию
для атрибута '[% field_descs.${field.name} FILTER html %]'.
[% IF user.in_group('tweakparams') %]
Перед удалением следует <a href="editparams.cgi?section=bugfields">изменить
умолчание</a>.
[% END %]
</li>
[% END %]
[% IF value.bug_count %]
<li>
Значение атрибута используется в [% value.bug_count FILTER html %]
[% numeral(value.bug_count,
"${terms.bug_obj}", "${terms.bugs_obj}", "${terms.bugs_obj}")
FILTER html -%].
Перед удалением следует выбрать другое значение атрибута для
<a title="Список [% terms.bugs_gen %], использующих значение '[% value FILTER html %]'
атрибута '[% field_descs.${field.name} FILTER html %]'"
href="buglist.cgi?[% field.name FILTER uri %]=
[%- value.name FILTER uri %]">
этих [%+ terms.bugs_gen %]</a>
</li>
[% END %]
[% IF value_count == 1 %]
<li>Значение '[% value.name FILTER html %]' является единственным допустимым для атрибута
'[%- field_descs.${field.name} FILTER html %]' и не может быть удалено.
</li>
[% END %]
[% IF value.controls_visibility_of_fields.size %]
<li>От этого значения зависит видимость следующих атрибутов:<br>
[% FOREACH field = value.controls_visibility_of_fields %]
<a href="editfields.cgi?action=edit&name=
[%- field.name FILTER uri %]">
[%- field.description FILTER html %]
([% field.name FILTER html %])</a><br>
[% END %]
</li>
[% END %]
[% IF value.controlled_values_array.size %]
<li>От этого значения зависит видимость следующих значений
других атрибутов:<br>
[% FOREACH field_name = value.controlled_values.keys %]
[% FOREACH controlled = value.controlled_values.${field_name} %]
<a href="editvalues.cgi?action=edit&field=
[%- controlled.field.name FILTER uri %]&value=
[%- controlled.name FILTER uri %]">
[% field_descs.${controlled.field.name} FILTER html %]
([% controlled.field.name FILTER html %]):
[%+ controlled.name FILTER html %]</a><br>
[% END %]
[% END %]
</li>
[% END %]
</ul>
[% ELSE %]
<p>Удалить значение?<p>
<form method="post" action="editvalues.cgi">
<input type="submit" value="Да, удалить" id="delete">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="field" value="[% field.name FILTER html %]">
<input type="hidden" name="value" value="[% value.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% END %]
[% PROCESS admin/fieldvalues/footer.html.tmpl
no_edit_link = 1
+%]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# field: object; the field the value is being created for
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
[% title = BLOCK %]
Создание значения атрибута '[% field_descs.${field.name} FILTER html %]' ([% field.name FILTER html %])
[% END %]
[% PROCESS global/header.html.tmpl
title = title
%]
<p>
Добавление нового значения для атрибута
'[% field_descs.${field.name} FILTER html %]'.
</p>
<form method="post" action="editvalues.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right"><label for="value">Значение:</label></th>
<td>
<input id="value" name="value" size="30"
maxlength="[% constants.MAX_FIELD_VALUE_SIZE FILTER none %]">
</td>
</tr>
<tr>
<th align="right"><label for="sortkey">Порядок сортировки:</label></th>
<td><input id="sortkey" name="sortkey" size="6" maxlength="6"></td>
</tr>
[% IF field.name == "bug_status" %]
<tr>
<th align="right"><label for="is_open">Тип состояния:</label></th>
<td>
<input type="radio" id="open_status" name="is_open" value="1"
checked="checked">
<label for="open_status">В работе</label><br>
<input type="radio" id="closed_status" name="is_open" value="0">
<label for="closed_status">Закрыта (требует указания решения)</label>
</td>
</tr>
<tr>
<th>&nbsp;</th>
<td>
Обратите внимание: Тип состояния может быть указан только при создании,
изменение впоследствии запрещено.
</td>
</tr>
[% END %]
[% IF field.value_field %]
<tr>
<th align="right">
<label for="visibility_value_id">Условие отображения: атрибут
'[% field_descs.${field.value_field.name} FILTER html %]' принимает значения
</label>
</th>
<td>
<select name="visibility_value_id" id="visibility_value_id">
<option></option>
[% FOREACH field_value = field.value_field.legal_values %]
[% NEXT IF field_value.name == '' %]
<option value="[% field_value.id FILTER none %]">
[% IF field.value_field.name == 'component' %]
[% field_value.product.name FILTER html %]:
[% END %]
[%- field_value.name FILTER html -%]
</option>
[% END %]
</select>
<small>(Чтобы значение отображалось непрерывно, оставьте без выбора.)</small>
</td>
</tr>
[% END %]
</table>
<input type="submit" id="create" value="Создать">
<input type="hidden" name="action" value="new">
<input type="hidden" name='field' value="[% field.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% PROCESS admin/fieldvalues/footer.html.tmpl
no_add_link = 1
%]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# value: Bugzilla::Field::Choice; The field value we are editing.
# field: Bugzilla::Field; The field this value belongs to.
#%]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS "global/field-descs.none.tmpl" %]
[% title = BLOCK %]
Изменение значения '[% value.name FILTER html %]' атрибута
'[% field_descs.${field.name} FILTER html %]' ([% field.name FILTER html %])
[% END %]
[% PROCESS global/header.html.tmpl
title = title
%]
<form method="post" action="editvalues.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th valign="top" align="right">
<label for="value_new">Значение атрибута:</label>
</th>
<td>
[% IF value.is_static %]
<input type="hidden" name="value_new" id="value_new"
value="[% value.name FILTER html %]">
[%- value.name FILTER html %]
[% ELSE %]
<input id="value_new" name="value_new" size="20"
maxlength="[% constants.MAX_FIELD_VALUE_SIZE FILTER none %]"
value="[% value.name FILTER html %]">
[% END %]
</td>
</tr>
<tr>
<th align="right"><label for="sortkey">Порядок сортировки:</label></th>
<td><input id="sortkey" size="6" maxlength="6" name="sortkey"
value="[%- value.sortkey FILTER html %]"></td>
</tr>
[% IF field.name == "bug_status" %]
<tr>
<th align="right"><label for="is_open">Тип состояния:</label></th>
<td>[% IF value.is_open %]В работе[% ELSE %]Закрыта[% END %]</td>
</tr>
[% END %]
[% IF field.value_field %]
<tr>
<th align="right">
<label for="visibility_value_id">Условие отображения: атрибут
'[% field_descs.${field.value_field.name} FILTER html %]' принимает значения
</label>
</th>
<td>
<select name="visibility_value_id" id="visibility_value_id">
<option></option>
[% FOREACH field_value = field.value_field.legal_values %]
[% NEXT IF field_value.name == '' %]
<option value="[% field_value.id FILTER none %]"
[% ' selected="selected"'
IF field_value.id == value.visibility_value.id %]>
[% IF field.value_field.name == 'component' %]
[% field_value.product.name FILTER html %]:
[% END %]
[% field_value.name FILTER html -%]
</option>
[% END %]
</select>
<small>(Чтобы значение отображалось непрерывно, оставьте без выбора.)</small>
</td>
</tr>
[% END %]
<tr>
<th align="right"><label for="is_active">Разрешено для использования:</label></th>
<td><input id="is_active" name="is_active" type="checkbox" value="1"
[%+ 'checked="checked"' IF value.is_active %]
[%+ 'disabled="disabled"' IF value.is_default OR value.is_static %]>
[% IF value.is_default %]
Значение задано в качестве умолчания в параметрах данного атрибута и не может быть заблокировано.
[% ELSIF value.is_static %]
Значение не может быть удалено или заблокировано.
[% END %]
[% IF !(value.is_default OR value.is_static) %]
<input id="defined_is_active" name="defined_is_active"
type="hidden" value="1">
[% END %]
</td>
</tr>
</table>
<input type="hidden" name="value" value="[% value.name FILTER html %]">
<input type="hidden" name="action" value="update">
<input type="hidden" name="field" value="[% field.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="submit" id="update" value="Сохранить">
</form>
[% PROCESS admin/fieldvalues/footer.html.tmpl
no_edit_link = 1 %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# value: string; the value being inserted/edited.
# field: object; the field which the value belongs/belonged to.
#
# no_XXX_link: boolean; if defined, then don't show the corresponding
# link. Supported parameters are:
#
# no_edit_link
# no_edit_other_link
# no_add_link
#%]
[% PROCESS "global/field-descs.none.tmpl" %]
<hr>
<p>
[% UNLESS no_add_link %]
<a title="Создать значение атрибута '[% field_descs.${field.description} FILTER html %]'."
href="editvalues.cgi?action=add&amp;field=
[%- field.name FILTER uri %]">Создать</a> новое значение.
[% END %]
[% IF value.defined && !no_edit_link %]
Изменить значение <a
title="Изменить значение '[% value.name FILTER html %]' атрибута '
[%- field_descs.${field.name} FILTER html %]'"
href="editvalues.cgi?action=edit&amp;field=
[%- field.name FILTER uri %]&amp;value=
[%- value.name FILTER uri %]">
'[% value.name FILTER html %]'</a>.
[% END %]
[% UNLESS no_edit_other_link %]
Изменить другие значения атрибута <a
href="editvalues.cgi?field=
[%- field.name FILTER uri %]">'[% field_descs.${field.name} FILTER html %]'</a>.
[% END %]
</p>
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# values: array of hashes having the following properties:
# - name: string; The value.
# - sortkey: number; The sortkey used to order the value when
# displayed to the user in a list.
#
# field: object; the field we are editing values for.
# static: array; list of values which cannot be renamed nor deleted.
#%]
[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS "global/field-descs.none.tmpl" %]
[% title = BLOCK %]Выберите значение атрибута '[% field_descs.${field.name} FILTER html %]'
([% field.name FILTER html %])[% END %]
[% PROCESS global/header.html.tmpl
title = title
%]
[% edit_contentlink = BLOCK %]editvalues.cgi?action=edit&amp;field=
[%- field.name FILTER uri %]&amp;value=%%name%%[% END %]
[% delete_contentlink = BLOCK %]editvalues.cgi?action=del&amp;field=
[%- field.name FILTER uri %]&amp;value=%%name%%[% END %]
[% columns = [
{
name => "name"
heading => "Изменить..."
contentlink => edit_contentlink
},
{
name => "sortkey"
heading => "Порядок сортировки"
},
{
name => "isactive"
heading => "Разрешено"
yesno_field => 1
},
{
name => "action"
heading => "Действие"
content => "Удалить"
contentlink => delete_contentlink
} ]
%]
[% SET overrides.action = {} %]
[% FOREACH check_value = values %]
[% IF check_value.is_static %]
[% overrides.action.name.${check_value.name} = {
override_content => 1
content => "(Удаление запрещено)"
override_contentlink => 1
contentlink => undef
}
%]
[% ELSIF check_value.is_default %]
[% overrides.action.name.${check_value.name} = {
override_content => 1
content => "(по умолчанию)"
override_contentlink => 1
contentlink => undef
}
%]
[% END %]
[% END %]
[% PROCESS admin/table.html.tmpl
columns = columns
data = values
overrides = overrides
%]
[% PROCESS admin/fieldvalues/footer.html.tmpl
no_edit_other_link = 1
%]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# fields: Array of hashes. Each hash contains only one key, "name."
# The names are the same as the keys from field_descs
# (see global/field-descs.html.tmpl).
#%]
[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS global/header.html.tmpl
title = "Выберите атрибут"
%]
[% columns = [
{
name => "name"
heading => "Изменить значения атрибута..."
content_use_field = 1
contentlink => "editvalues.cgi?field=%%name%%"
}
]
%]
[% PROCESS admin/table.html.tmpl
columns = columns
data = fields
%]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/variables.none.tmpl %]
[% title = BLOCK %]Подтвердите удаление вида согласования '[% flag_type.name FILTER html %]'[% END %]
[% PROCESS global/header.html.tmpl
title = title
doc_section = "flags-overview.html#flags-delete"
%]
<p>
[% IF flag_type.flag_count %]
Найдено
[%+ numeral(flag_type.flag_count,
"${flag_type.flag_count} согласование",
"${flag_type.flag_count} согласования",
"${flag_type.flag_count} согласований")
FILTER html %]
вида [% flag_type.name FILTER html %].
Если вы удалите этот вид, соответствующие запросы тоже будут удалены.
[% END %]
Вместо удаления вида вы можете
<a href="editflagtypes.cgi?action=deactivate&amp;id=[% flag_type.id %]&amp;token=
[%- token FILTER html %]">запретить его</a>.
В этом случае согласования этого типа останутся в базе данных, но не будут
отображаться на экране.
</p>
<table>
<tr>
<td colspan="2">
Вы в самом деле хотите удалить этот вид согласования?
</td>
</tr>
<tr>
<td>
<a href="editflagtypes.cgi?action=delete&amp;id=[% flag_type.id %]&amp;token=
[%- token FILTER html %]">Да, удалить
</a>
</td>
<td align="right">
<a href="editflagtypes.cgi">
Нет, не удалять
</a>
</td>
</tr>
</table>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS "global/js-products.html.tmpl" %]
[% PROCESS global/header.html.tmpl
title = 'Настройка видов согласования'
style = "
table#flag_types_bugs tr th,
table#flag_types_attachments tr th { text-align: left; }
.inactive { color: #787878; }
.multiplicable { display: block; }
"
onload="var f = document.flagtype_form; selectProduct(f.product, f.component, null, null, '__All__');"
javascript_urls=["js/productform.js"]
doc_section = "flags-overview.html#flag-types"
%]
<p>
Согласования — это пометки, определяющие одобрено или отклонено некоторое
состояние для [% terms.bug_gen %] или приложения. Согласования видны
как пометки ("+" для одобренных, "-" для отклоненных, и "?" для запрошенных)
против названия вида.
</p>
<p>
Например, вы можете описать согласование "review" для пользователей, которые
запрашивают инспекцию предлагаемых изменений. Когда автор запросит инспекцию,
приложение будет помечено "review?". Когда рецензент изучит изменения,
пометка изменится на "review+" либо "review-" в зависимости от принятого решения.
</p>
<p>
Можно выбрать виды согласований, допустимые для конкретного продукта
и компонента. Если продукт выбран без указания компонента, отображаются
виды согласований, допустимые хотя бы для одного из компонентов.
</p>
<form id="flagtype_form" name="flagtype_form" action="editflagtypes.cgi" method="get">
<table>
<tr>
<th><label for="product">Продукт:</label></th>
<td>
<select name="product" onchange="selectProduct(this, this.form.component, null, null, '__Все__');">
<option value="">__Все__</option>
[% FOREACH prod = products %]
<option value="[% prod.name FILTER html %]"
[% " selected" IF selected_product == prod.name %]>
[% prod.name FILTER html %]</option>
[% END %]
</select>
</td>
<th><label for="component">Компонент:</label></th>
<td>
<select name="component">
<option value="">__Все__</option>
[% FOREACH comp = components %]
<option value="[% comp FILTER html %]"
[% " selected" IF selected_component == comp %]>
[% comp FILTER html %]</option>
[% END %]
</select>
</td>
<td>
<input type="checkbox" id="show_flag_counts" name="show_flag_counts" value="1"
[%+ 'checked="checked"' IF show_flag_counts %]>
<label for="show_flag_counts">Показать статистику согласований</label>
</td>
<td><input type="submit" id="submit" value="Выбрать"></td>
</tr>
</table>
</form>
<h3>Виды согласований для [% terms.bugs_gen %]</h3>
[% PROCESS display_flag_types types=bug_types types_id='bugs' %]
<p>
<a href="editflagtypes.cgi?action=enter&amp;target_type=bug">Создать вид согласования для [% terms.bugs_gen %]</a>
</p>
<h3>Виды согласований для приложений</h3>
[% PROCESS display_flag_types types=attachment_types types_id='attachments' %]
<p>
<a href="editflagtypes.cgi?action=enter&amp;target_type=attachment">Создать вид согласования для приложений</a>
</p>
[% PROCESS global/footer.html.tmpl %]
[% BLOCK display_flag_types %]
<table id="flag_types_[% types_id FILTER html %]" cellspacing="0" cellpadding="4" border="1">
<tr>
<th>Изменить имя ...</th>
<th>Описание</th>
<th>Порядок сортировки</th>
<th>Параметры</th>
<th>Ответственные</th>
<th>Инициаторы</th>
[% IF show_flag_counts %]
<th>Статистика</th>
[%# Note to translators: translate the strings in quotes only. %]
[% state_desc = {granted = 'одобрено' denied = 'отклонено' pending = 'в процессе'} %]
[% END %]
<th>Действия</th>
</tr>
[% FOREACH type = types %]
<tr class="[% IF type.is_active %]разрешено[% ELSE %]запрещено[% END %]">
<td><a href="editflagtypes.cgi?action=edit&amp;id=[% type.id %]">[% type.name FILTER html FILTER no_break %]</a></td>
<td>[% type.description FILTER html %]</td>
<td align="right">[% type.sortkey FILTER html %]</td>
<td>
[% IF type.is_requestable %]
<span class="requestable">по запросу</span>
[% END %]
[% IF type.is_requestable && type.is_requesteeble %]
<span class="requesteeble">(адресное)</span>
[% END %]
[% IF type.is_multiplicable %]
<span class="multiplicable">многократное</span>
[% END %]
</td>
<td>[% IF type.grant_group %][% type.grant_group.name FILTER html %][% END %]</td>
<td>[% IF type.request_group %][% type.request_group.name FILTER html %][% END %]</td>
[% IF show_flag_counts %]
<td>
[% FOREACH state = ['granted', 'pending', 'denied'] %]
[% bug_list = bug_lists.${type.id}.$state || [] %]
[% IF bug_list.size %]
<a href="buglist.cgi?bug_id=[% bug_list.unique.nsort.join(",") FILTER html %]">
[% bug_list.size FILTER html %] [%+ state_desc.$state FILTER html %]
</a>
<br>
[% ELSE %]
0 [% state_desc.$state FILTER html %]<br>
[% END %]
[% END %]
</td>
[% END %]
<td>
<a href="editflagtypes.cgi?action=copy&amp;id=[% type.id %]">Размножить</a>
| <a href="editflagtypes.cgi?action=confirmdelete&amp;id=[% type.id %]">Удалить</a>
</td>
</tr>
[% END %]
</table>
[% END %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# group: The Bugzilla::Group being changed.
# regexp: the regexp according to which the update is performed.
#%]
[% IF regexp %]
[% title = "Подтверждение: исключение пользователей из группы по шаблону?" %]
[% ELSE %]
[% title = "Подтверждение: исключение всех явно заданных пользователей из группы?" %]
[% END %]
[% PROCESS global/header.html.tmpl
title = title
doc_section = "groups.html"
%]
[% IF regexp %]
<p>Подтвердите удаление из группы '[% group.name FILTER html %]' всех пользователей,
чьи учетные записи соответствуют шаблону:
'[% regexp FILTER html %]'</p>
[% ELSE %]
<p>Подтвердите удаление из группы '[% group.name FILTER html %]
всех явно заданных пользователей.'</p>
[% END %]
<p>Обычно эти функции требуются только при настройке групп, созданных
в [% terms.Bugzilla %] версии 2.16 и ранее. Используйте их
<b>очень осторожно</b>, только после изучения документации.
</p>
<form method="post" action="editgroups.cgi">
<input type="hidden" name="group_id" value="[% group.id FILTER html %]">
<input type="hidden" name="regexp" value="[% regexp FILTER html %]">
<input type="hidden" name="action" value="remove_regexp">
<input name="token" type="hidden" value="[% token FILTER html %]">
<input id="confirm" name="confirm" type="submit" value="Исключить">
<p>или <a href="editgroups.cgi">вернуться к списку групп</a>.</p>
</form>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# none
#%]
[% PROCESS global/header.html.tmpl
title = "Добавление группы"
subheader = "Эта страница позволит вам определить новую группу пользователей."
doc_section = "groups.html#create-groups"
%]
<form method="post" action="editgroups.cgi">
<table border="1" cellpadding="4" cellspacing="0"><tr>
<th>Новое имя</th>
<th>Новое описание</th>
<th>Новый шаблон пользователя</th>
<th>Использовать для [% terms.bugs_gen %]</th>
</tr><tr>
<td><input size="20" name="name"></td>
<td><input size="40" name="desc"></td>
<td><input size="30" name="regexp"></td>
<td><input type="checkbox" name="isactive" value="1" checked></td>
</tr>
<tr>
<th>Значок (URL):</th>
<td colspan="3"><input type="text" size="70" maxlength="255" id="icon_url" name="icon_url"></td>
</tr>
[% Hook.process('field') %]
</table>
<hr>
<input type="checkbox" id="insertnew" name="insertnew" value="1"
[% IF Param("makeproductgroups") %] checked[% END %]>
<label for="insertnew">Добавить новую группу во все имеющиеся продукты.</label>
<p>
<input type="submit" id="create" value="Добавить">
<input type="hidden" name="action" value="new">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
<p><b>Имя</b> это то, что использует функция B<!-- blah -->ugzilla->user->in_group() в специальных
файлах cgi, которые вы пишете для использования данной группой. Оно также может
использоваться людьми, регистрирующими [% terms.bugs_acc %]
по электронной почте, чтобы ограничить доступ к [% terms.bug_obj %]
некоторым набором групп.</p>
<p><b>Описание</b> это то, что будет показано при редактировании [% terms.bugs_gen %]
членам группы. Они должны определить, будет ли [% terms.bug %]
доступна всем или только членам этой группы.</p>
<p>Флажок <b>Использовать для [% terms.bugs_gen %]</b> определяет,
может ли группа использоваться для управления доступом к [% terms.bugs_dat %].
Если его снять, пользователи впредь не смогут добавить [% terms.bugs_acc %]
к этой группе, хотя уже имеющиеся в группе [% terms.bugs %], будут принадлежать
ей. Это менее радикальный способ остановить рост группы, нежели
удаление группы. <b>Обратите внимание: Если вы создаете группу, вы, вероятно,
хотите, чтобы она могла быть использована для работы с [% terms.bugs_abl %].
В этом случае вы должны оставить флажок включенным.</b></p>
<p><b>Шаблон пользователя</b> необязателен, если он указан,
членство в этой группе автоматически предоставлено любому, чей адрес
электронной почты соответствует указанному шаблону.</p>
<p>
<b>Значок</b> — необязательный параметр, адрес URL изображения, используемого
для символического представления группы. Адрес URL может быть относительным
(от базового URL этого экземпляра) или абсолютным. Значок отображается
в комментариях к [% terms.bugs_dat %] рядом с именем автора.
</p>
[% IF Param("makeproductgroups") %]
<p>По умолчанию новая группа ассоциируется с имеющимися продуктами.
Отмена опции "Добавлять новую группу во все имеющиеся продукты" предотвратит
это, и приведет к тому, что группа станет видимой только тогда, когда будет
добавлена к продукту.</p>
[% ELSE %]
<p>Установка опции "Добавлять новую группу во все имеющиеся продукты"
приведёт к ассоциации новой группы с имеющимися продуктами. Оставление этой
опции не установленной приведёт к тому, что группа станет видимой только
тогда, когда будет добавлена к продукту.</p>
[% END %]
<p>Вернуться к <a href="./">в начало</a>
или к <a href="editgroups.cgi">списку групп</a>.
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# group: A Bugzilla::Group object representing the group that is
# about to be deleted.
# shared_queries: int; The number of queries being shared with this
# group.
#%]
[% PROCESS global/header.html.tmpl
title = "Удаление группы"
doc_section = "groups.html"
%]
<table border="1">
<tr>
<th>ID</th>
<th>Имя</th>
<th>Описание</th>
</tr>
<tr>
<td>[% group.id FILTER html %]</td>
<td>[% group.name FILTER html %]</td>
<td>[% group.description FILTER html_light %]</td>
</tr>
</table>
<form method="post" action="editgroups.cgi">
[% IF group.members_non_inherited.size %]
<p><b>В состав этой группы напрямую включены
[% group.members_non_inherited.size FILTER html %] пользователей.
Непустая группа не подлежит удалению.</b>
<br><a href="editusers.cgi?action=list&amp;groupid=
[%- group.id FILTER uri %]&amp;grouprestrict=1">Показать
список членов группы</a> - <label><input type="checkbox" name="removeusers">Исключить
всех автоматически.</label></p>
[% END %]
[% IF group.granted_by_direct(constants.GROUP_MEMBERSHIP).size %]
<p><b>Члены этой группы унаследовали членство в следующих группах:</b></p>
<ul>
[% FOREACH grantor = group.granted_by_direct(constants.GROUP_MEMBERSHIP) %]
<li>[% grantor.name FILTER html %]</li>
[% END %]
</ul>
[% END %]
[% IF group.bugs.size %]
<p><b>Зарегистрированы [% group.bugs.size FILTER html %] [%+ terms.bug %], доступ
к которым дан только членам этой группы reports. Группа, используемая для разграничения
доступа к [% terms.bugs_dat %] не подлежит удалению.</b>
<br><a href="buglist.cgi?field0-0-0=bug_group&amp;type0-0-0=equals&amp;value0-0-0=
[%- group.name FILTER uri %]">Показать
список [% terms.bugs_gen %]</a> -
<label><input type="checkbox" name="removebugs">Удалить
все связи с этой группой автоматически.</label></p>
<p><b>Внимание:</b> Использование этой функции может сделать некоторые [% terms.bugs %]
общедоступными. <b>Настоятельно рекомендуется</b> изучить все принадлежащие
группе [% terms.bugs %] и проверить права доступа.</p>
[% END %]
[% IF group.products.size %]
<p><b>Эта группа сопоставлена со следующими продуктами:</b></p>
[% SET any_hidden = 0 %]
<ul>
[% FOREACH data = group.products %]
[% SET active = [] %]
[% FOREACH control = data.controls.keys.sort %]
[% NEXT IF !data.controls.$control %]
[% IF control == 'othercontrol' OR control == 'membercontrol' %]
[% SWITCH data.controls.$control %]
[% CASE constants.CONTROLMAPMANDATORY %]
[% SET type = "Mandatory" %]
[% CASE constants.CONTROLMAPSHOWN %]
[% SET type = "Shown" %]
[% CASE constants.CONTROLMAPDEFAULT %]
[% SET type = "Default" %]
[% END %]
[% active.push("$control: $type") %]
[% ELSE %]
[% active.push(control) %]
[% END %]
[% END %]
[% SET hidden = 0 %]
[% IF data.controls.othercontrol == constants.CONTROLMAPMANDATORY
AND data.controls.membercontrol == constants.CONTROLMAPMANDATORY
AND data.controls.entry
%]
[% SET hidden = 1 %]
[% END %]
<li><a href="editproducts.cgi?action=editgroupcontrols&amp;product=
[%- data.product.name FILTER uri %]">
[%- data.product.name FILTER html %]</a>
([% active.join(', ') FILTER html %])
[% IF hidden %]
<strong>ПРЕДУПРЕЖДЕНИЕ: Этот продукт в данное время скрыт.
Удаление этой группы сделает этот продукт общедоступным,
если он не подпадает под другую группу.
</strong>
[% END %]</li>
[% END %]
</ul>
<p><label><input type="checkbox" name="unbind">Удалить группу и удалить
эти права доступа.</label></p>
[% END %]
[% IF group.flag_types.size %]
<p><b>Эта группа используется при определении прав на согласование.
Группа, используемая для контроля согласований, не подлежит удалению.</b>
<br><a href="editflagtypes.cgi?action=list&amp;group=
[%- group.id FILTER uri %]">Показать
список видов согласований</a> -
<label><input type="checkbox" name="removeflags">Удалить
соответствующие ограничения для согласований.</label></p>
[% END %]
[% IF shared_queries %]
<p>
<b>Для этой группы опубликовано условий отбора: [% shared_queries %]</b>
Удаление группы приведет к тому, что эти условия будут доступны
только их владельцам.
</p>
[% END %]
<h2>Подтверждение</h2>
<p>Вы действительно хотите удалить группу.?</p>
[% IF group.users.size || group.bugs.size || group.products.size
|| group.flags.size
%]
<p><b>Вы должны отметить все флаги на этой странице или исправить описанные
проблемы вручную до начала удаления.</b></p>
[% END %]
<p>
<input type="submit" id="delete" value="Да, удалить">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="group" value="[% group.id FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</p>
</form>
Вернуться к <a href="editgroups.cgi">списку групп</a>.
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# group - A Bugzilla::Group representing the group being edited.
# *_current - Arrays of Bugzilla::Group objects that show the current
# values for this group, as far as grants.
# *_available - Arrays of Bugzilla::Group objects that show the current
# available values for each grant.
#%]
[% title = BLOCK %]Изменение группы: [% group.name FILTER html %][% END %]
[% PROCESS global/header.html.tmpl
title = title
doc_section = "groups.html#edit-groups"
style = "
.grant_table { border-collapse: collapse; }
.grant_table td, .grant_table th {
padding-left: .5em;
}
.grant_table td.one, .grant_table th.one {
border-right: 1px solid black;
padding-right: .5em;
}
"
%]
<form method="post" action="editgroups.cgi">
<input type="hidden" name="action" value="postchanges">
<input type="hidden" name="group_id" value="[% group.id FILTER html %]">
<table border="1" cellpadding="4">
<tr>
<th>Группа:</th>
<td>
[% IF group.is_bug_group %]
<input type="text" name="name" size="60"
value="[% group.name FILTER html %]">
[% ELSE %]
[% group.name FILTER html %]
[% END %]
</td>
</tr>
<tr>
<th>Описание:</th>
<td>
[% IF group.is_bug_group %]
<input type="text" name="desc" size="70"
value="[% group.description FILTER html %]">
[% ELSE %]
[% group.description FILTER html %]
[% END %]
</td>
</tr>
<tr>
<th>Шаблон пользователей:</th>
<td>
<input type="text" name="regexp" size="40"
value="[% group.user_regexp FILTER html %]">
</td>
</tr>
<tr>
<th>
Значок (URL):
[% IF group.icon_url %]
<img src="[% group.icon_url FILTER html %]" alt="[% group.name FILTER html %]">
[% END %]
</th>
<td>
<input type="text" name="icon_url" size="70" maxlength="255"
value="[% group.icon_url FILTER html %]">
</td>
</tr>
[% IF group.is_bug_group %]
<tr>
<th>Использовать для [% terms.bugs_gen %]:</th>
<td>
<input type="checkbox" name="isactive"
value="1" [% 'checked="checked"' IF group.is_active %]>
</td>
</tr>
[% END %]
[% Hook.process('field') %]
</table>
<h4>Групповой доступ</h4>
<table class="grant_table">
<tr>
<th class="one">Группы, входящие в данную группу<br>
(&quot;Члены группы <var>X</var> автоматически включены в
[%+ group.name FILTER html %]&quot;)</th>
<th>Группы, включающие данную группу<br>
(&quot;Члены группы [% group.name FILTER html %] автоматически
включаются в ...&quot;)</th>
</tr>
<tr>
<td class="one">
[% PROCESS select_pair name = "members" size = 10
items_available = members_available
items_current = members_current %]
</td>
<td>[% PROCESS select_pair name = "member_of" size = 10
items_available = member_of_available
items_current = member_of_current %]</td>
</tr>
</table>
<table class="grant_table">
<tr>
<th class="one">
Группы, управляющие этой группой<br>
(&quot;Члены группы <var>X</var> имеют право добавлять пользователей в
[%+ group.name FILTER html %]&quot;)
</th>
<th>Группы, управляемые этой группой<br>
(&quot;Члены группы [% group.name FILTER html %] имеют право добавлять пользователей в ...&quot;)
</th>
</tr>
<tr>
<td class="one">
[% PROCESS select_pair name = "bless_from" size = 10
items_available = bless_from_available
items_current = bless_from_current %]
</td>
<td>[% PROCESS select_pair name = "bless_to" size = 10
items_available = bless_to_available
items_current = bless_to_current %]
</td>
</tr>
</table>
[% IF Param('usevisibilitygroups') %]
<table class="grant_table">
<tr>
<th class="one">
Группы, которым видна эта группа<br>
(&quot;Члены группы <var>X</var> видят пользователей, входящих в
[%+ group.name FILTER html %]&quot;)
</th>
<th>Группы, видимые этой группе<br>
(&quot;Члены группы [% group.name FILTER html %] видят пользователей из ...&quot;)
</th>
</tr>
<tr>
<td class="one">
[% PROCESS select_pair name = "visible_from" size = 10
items_available = visible_from_available
items_current = visible_from_current %]
</td>
<td>[% PROCESS select_pair name = "visible_to_me" size = 10
items_available = visible_to_me_available
items_current = visible_to_me_current %]
</td>
</tr>
</table>
[% END %]
<input type="submit" id="update-group" value="Сохранить">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
<h4>Массовое удаление</h4>
<p>Форма для массового удаления пользователей из групп.
Эта функция очень важна после перехода с версии [% terms.Bugzilla %]
2.16.</p>
<table><tr><td>
<form method="post" action="editgroups.cgi">
<fieldset>
<legend>Исключить из группы пользователей, учетные записи которых
сответствуют шаблону:</legend>
<input type="text" size="20" name="regexp">
<input type="submit" id="remove-membership" value="Исключить пользователей">
<p>Если шаблон не указан, из группы будут исключены все явно включенные
в нее пользователи.</p>
<input type="hidden" name="action" value="confirm_remove">
<input type="hidden" name="group_id" value="[% group.id FILTER html %]">
</fieldset>
</form>
</td></tr></table>
<p>Вернуться к <a href="editgroups.cgi">списку групп</a>.</p>
[% PROCESS global/footer.html.tmpl %]
[% BLOCK select_pair %]
<table class="select_pair">
<tr>
<th><label for="[% "${name}_add" FILTER html %]">Добавить<br>
(выберите для добавления)</label></th>
<th><label for="[% "${name}_remove" FILTER html %]">Входит<br>
(выберите для исключения)</label></th>
</tr>
<tr>
<td>
<select multiple="multiple" size="[% size FILTER html %]"
name="[% "${name}_add" FILTER html %]"
id="[% "${name}_add" FILTER html %]">
[% FOREACH item = items_available %]
<option value="[% item.id FILTER html %]">
[% item.name FILTER html %]</option>
[% END %]
</select>
</td>
<td>
<select multiple="multiple" size="[% size FILTER html %]"
name="[% "${name}_remove" FILTER html %]"
id="[% "${name}_remove" FILTER html %]">
[% FOREACH item = items_current %]
<option value="[% item.id FILTER html %]">
[% item.name FILTER html %]</option>
[% END %]
</select>
</td>
</tr>
</table>
[% END %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# groups: array with group objects having the properties:
# - id: number. The ID of the group.
# - name: string. The name of the group.
# - description: string. The description of the group.
# - userregexp: string. The user regexp for the given group.
# - isactive: boolean int. Specifies if the group is active or not.
# - isbuggroup: boolean int. Specifies if it can be used for bugs.
#%]
[% PROCESS global/header.html.tmpl
title = "Группы пользователей"
subheader = "Позволяет настраивать группы для включения пользователей."
doc_section = "groups.html"
%]
[% edit_contentlink = "editgroups.cgi?action=changeform&amp;group=%%id%%" %]
[% del_contentlink = "editgroups.cgi?action=del&amp;group=%%id%%" %]
[% columns =
[{name => 'name'
heading => 'Имя'
contentlink => edit_contentlink
}
{name => 'description'
heading => 'Описание'
allow_html_content => 1
}
{name => 'userregexp'
heading => 'Шаблон пользователя'
}
{name => 'is_active_bug_group'
heading => "Использовать для $terms.bugs_gen"
align => 'center'
}
{name => 'type'
heading => 'Тип'
align => 'center'
}
{name => 'action'
heading => 'Действие'
}
]
%]
[%# FIXME-ru: переводы описаний стандартных групп %]
[% overrides.is_active_bug_group = {
'is_active_bug_group' => {
"0" => {
override_content => 1
content => "&nbsp;"
}
"1" => {
override_content => 1
content => "X"
}
}
}
overrides.userregexp = {
'userregexp' => {
"" => {
override_content => 1
content => "&nbsp;"
}
}
}
%]
[% FOREACH group IN ["chartgroup", "insidergroup", "timetrackinggroup", "querysharegroup"] %]
[% special_group = Param(group) %]
[% IF special_group %]
[% overrides.action.name.$special_group = {
override_content => 1
content => "(используется в параметре '$group')"
}
%]
[% END %]
[% END %]
[% overrides.action.isbuggroup = {
"1" => {
override_content => 1
content => "Удалить"
override_contentlink => 1
contentlink => del_contentlink
}
}
overrides.type.isbuggroup = {
"0" => {
override_content => 1
content => "системная"
}
"1" => {
override_content => 1
content => "пользовательская"
}
}
%]
[% PROCESS admin/table.html.tmpl
columns = columns
data = groups
overrides = overrides
%]
<p><a href="editgroups.cgi?action=add">Создать группу</a></p>
<p>
<b>Имя</b> — это то, что использует функция B<!-- blah -->ugzilla->user->in_group() в
специальных файлах cgi, которые вы пишете для использования данной
группой. Оно также может использоваться пользователями, регистрирующими
[% terms.bugs_acc %] по электронной почте, чтобы ограничить доступ к
[% terms.bug_obj %] некоторым набором групп. Имя не может содержать
пробелов.
</p>
<p>
<b>Описание</b> отображается в форме редактирования
[% terms.bugs_gen %] членам группы. Они должны определить, будет ли
[% terms.bug %] доступна всем или только членам этой группы.
</p>
<p>
<b>Шаблон пользователя</b> необязателен, если он указан, членство в
этой группе автоматически предоставлено любому, чей адрес электронной
почты соответствует указанному шаблону. Синтаксис шаблона соответствует
регулярному выражению Perl. Пример: '@mycompany\.com$'
</p>
<p>
Флажок <b>Использовать для [% terms.bugs_gen %]</b> определяет,
может ли группа использоваться для управления доступом к
[% terms.bugs_dat %]. Если его снять, пользователи впредь не смогут
добавить [% terms.bugs_acc %] к этой группе, хотя уже имеющиеся в
группе [% terms.bugs %] будут принадлежать ей. Это менее радикальный
способ остановить рост группы, нежели ее удаление. Кроме того,
ненужные группы не загромождают форму редактирования [% terms.bugs_gen %].
</p>
<p>
Поле <b>Тип</b> указывает на системные группы, их нельзя удалить.
</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# keyword: A Bugzilla::Keyword object.
#%]
[% PROCESS global/header.html.tmpl
title = "Удаление ключевого слова"
%]
<p>
[% IF keyword.bug_count > 0 %]
[% numeral(keyword.bug_count,
"Найдена ${keyword.bug_count} ${terms.bug}",
"Найдены ${keyword.bug_count} ${terms.bug_gen}",
"Найдено ${keyword.bug_count} ${terms.bugs_gen}")
FILTER html %] со ссылкой на это ключевое слово.
[% END %]
Вы <b>уверены</b>, что хотите удалить ключевое слово
<code>[% keyword.name FILTER html %]</code>?
</p>
<form method="post" action="editkeywords.cgi">
<input type="hidden" name="id" value="[% keyword.id FILTER html %]">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="submit" id="delete"
value="Да, удалить это ключевое слово">
</form>
<p><a href="editkeywords.cgi">Редактировать другие ключевые слова</a>.</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# none
#%]
[% PROCESS global/header.html.tmpl
title = "Добавьте ключевое слово"
subheader = "Эта страница позволит вам добавить новое ключевое слово."
%]
<form method="post" action="editkeywords.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right">Имя:</th>
<td><input size="64" maxlength="64" name="name" value=""></td>
</tr>
<tr>
<th align="right">Описание:</th>
<td>
[% INCLUDE global/textarea.html.tmpl
name = 'description'
minrows = 4
cols = 64
wrap = 'virtual'
%]
</td>
</tr>
</table>
<hr>
<input type="hidden" name="id" value="-1">
<input type="submit" id="create" value="Добавить">
<input type="hidden" name="action" value="new">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
<p><a href="editkeywords.cgi">Редактировать другие ключевые слова</a>.</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# keyword: A Bugzilla::Keyword object.
#%]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS global/header.html.tmpl
title = "Изменение ключевого слова"
%]
<form method="post" action="editkeywords.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right">Имя:</th>
<td><input size="64" maxlength="64" name="name"
value="[% keyword.name FILTER html %]"></td>
</tr>
<tr>
<th align="right">Описание:</th>
<td>
[% INCLUDE global/textarea.html.tmpl
name = 'description'
minrows = 4
cols = 64
wrap = 'virtual'
defaultcontent = keyword.description
%]
</td>
</tr>
<tr>
<th align="right">[% terms.Bugs %]:</th>
<td>
[% IF keyword.bug_count > 0 %]
<a href="buglist.cgi?keywords=[% keyword.name FILTER uri %]">
[% keyword.bug_count FILTER html %]</a>
[% ELSE %]
нет
[% END %]
</td>
</tr>
</table>
<input type="submit" id="update" value="Сохранить изменения">
<input type="hidden" name="action" value="update">
<input type="hidden" name="id" value="[% keyword.id FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
<p><a href="editkeywords.cgi">Редактировать другие ключевые слова</a>.</p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# keywords: array keyword objects having the properties:
# - id: number. The ID of the keyword.
# - name: string. The name of the keyword.
# - description: string. The description of the keyword.
# - bug_count: number. The number of bugs with the keyword.
#%]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS global/header.html.tmpl
title = "Выберите ключевое слово"
%]
[% columns = [
{
name => "name"
heading => "Изменить..."
contentlink => "editkeywords.cgi?action=edit&amp;id=%%id%%"
},
{
name => "description"
heading => "Описание"
allow_html_content => 1
},
{
name => "bug_count"
heading => "$terms.Bugs_gen"
align => "right"
contentlink => "buglist.cgi?keywords=%%name%%"
},
{
heading => "Действие"
content => "Удалить"
contentlink => "editkeywords.cgi?action=del&amp;id=%%id%%"
}
]
%]
[% PROCESS admin/table.html.tmpl
columns = columns
data = keywords
footer = footer_row
%]
<p><a href="editkeywords.cgi?action=add">Создать ключевое слово</a></p>
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# product: object; Bugzilla::Product object representing the product to
# which the milestone belongs.
# milestone: object; Bugzilla::Milestone object representing the
# milestone the user wants to delete.
#%]
[% title = BLOCK %]Удаление плана продукта '[% product.name FILTER html %]'
[% END %]
[% PROCESS global/header.html.tmpl
title = title
style_urls = ['skins/standard/admin.css']
%]
<table border="1" cellpadding="4" cellspacing="0">
<tr bgcolor="#6666FF">
<th valign="top" align="left">Поле</th>
<th valign="top" align="left">Значение</th>
</tr>
<tr>
<td valign="top">Название плана:</td>
<td valign="top">[% milestone.name FILTER html %]</td>
</tr>
<tr>
<td valign="top">Продукт:</td>
<td valign="top">[% product.name FILTER html %]</td>
</tr>
<tr>
<td valign="top">[% terms.Bugs %]:</td>
<td valign="top">
[% IF milestone.bug_count %]
<a title="Список [% terms.bugs_gen %] запланированных в '
[% milestone.name FILTER html %]'"
href="buglist.cgi?target_milestone=[% milestone.name FILTER uri %]&amp;product=
[%- product.name FILTER uri %]">
[% milestone.bug_count FILTER none %]</a>
[% ELSE %]
нет
[% END %]
</td>
</tr>
</table>
<h2>Подтверждение</h2>
[% IF milestone.bug_count %]
<p class="confirmation">
Данное значение используется в [% milestone.bug_count FILTER none %]
[% numeral(milestone.bug_count,
"${terms.bug_obj}", "${terms.bugs_obj}", "${terms.bugs_obj}")
FILTER html -%]!
Удаление значения плана приведет к переносу <b>ВСЕХ</b>
[% terms.bugs_obj %] на
[% product.default_milestone FILTER html %], план по умолчанию
для продукта [% product.name FILTER html %].
</p>
[% END %]
<p>Удалить план?<p>
<form method="post" action="editmilestones.cgi">
<input type="submit" id="delete" value="Да, удалить">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
<input type="hidden" name="milestone" value="[% milestone.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% PROCESS admin/milestones/footer.html.tmpl %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# product: object; Bugzilla::Product object representing the product to
# which the milestone belongs.
#%]
[% title = BLOCK %]Создание плана продукта '[% product.name FILTER html %]'[% END %]
[% subheader = BLOCK %]Страница добавления нового плана для продукта
'[% product.name FILTER html %]'.[% END %]
[% PROCESS global/header.html.tmpl
title = title
subheader = subheader
onload = "document.forms['f'].milestone.focus()"
%]
<form name="f" method="post" action="editmilestones.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right"><label for="milestone">Название плана:</label></th>
<td><input id="milestone" size="64" maxlength="64" name="milestone"
value=""></td>
</tr>
<tr>
<th align="right"><label for="sortkey">Порядок сортировки:</label></th>
<td><input id="sortkey" size="20" maxlength="20" name="sortkey"
value=""></td>
</tr>
</table>
<input type="submit" id="create" value="Создать">
<input type="hidden" name="action" value="new">
<input type="hidden" name='product' value="[% product.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% PROCESS admin/milestones/footer.html.tmpl
no_add_milestone_link = 1
%]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# product: object; Bugzilla::Product object representing the product to
# which the milestone belongs.
# milestone: object; Bugzilla::Milestone object representing the
# milestone the user wants to edit.
#%]
[% PROCESS global/variables.none.tmpl %]
[% title = BLOCK %]Изменение плана '[% milestone.name FILTER html %]' продукта '
[%- product.name FILTER html %]'[% END %]
[% PROCESS global/header.html.tmpl
title = title
onload = "document.forms['f'].milestone.select()"
%]
<form name="f" method="post" action="editmilestones.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th class="field_label"><label for="milestone">Название плана:</label></th>
<td><input id="milestone" size="64" maxlength="64" name="milestone" value="
[%- milestone.name FILTER html %]"></td>
</tr>
<tr>
<th class="field_label"><label for="sortkey">Порядок сортировки:</label></th>
<td><input id="sortkey" size="20" maxlength="20" name="sortkey" value="
[%- milestone.sortkey FILTER html %]"></td>
</tr>
<tr>
<th class="field_label"><label for="isactive">Доступен для [% terms.Bugs_gen %]:</label></th>
<td><input id="isactive" name="isactive" type="checkbox" value="1"
[% 'checked="checked"' IF milestone.isactive %]></td>
</tr>
</table>
<input type="hidden" name="milestoneold" value="[% milestone.name FILTER html %]">
<input type="hidden" name="action" value="update">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
<input type="submit" id="update" value="Сохранить изменения">
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
[% PROCESS admin/milestones/footer.html.tmpl
no_edit_milestone_link = 1 %]
[% PROCESS global/footer.html.tmpl %]
[%# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
#%]
[%# INTERFACE:
# product: object; Bugzilla::Product object representing the product to
# which the milestone belongs.
#
# milestone: object; Bugzilla::Milestone object representing the
# milestone.
#
# no_XXX_link: boolean; if defined, then don't show the corresponding
# link. Supported parameters are:
#
# no_edit_milestone_link
# no_edit_other_milestones_link
# no_add_milestone_link
#%]
<hr>
<p>
[% UNLESS no_add_milestone_link %]
<a title="Создать план для продукта '[% product.name FILTER html %]'"
href="editmilestones.cgi?action=add&amp;product=
[%- product.name FILTER uri %]">Создать</a> новый план.
[% END %]
[% IF milestone.name && !no_edit_milestone_link %]
Изменить план <a
title="Изменить план '[% milestone.name FILTER html %]' продукта '
[%- product.name FILTER html %]'"
href="editmilestones.cgi?action=edit&amp;product=
[%- product.name FILTER uri %]&amp;milestone=
[%- milestone.name FILTER uri %]">
'[% milestone.name FILTER html %]'</a>.
[% END %]
[% UNLESS no_edit_other_milestones_link %]
Изменить другие планы продукта <a
href="editmilestones.cgi?product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>.
[% END %]
Изменить продукт <a
href="editproducts.cgi?action=edit&amp;product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>.
</p>
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment