Bug 74070 - Warn before change for non-fatal checkers
git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1252 6955db30-a419-402b-8a0d-67ecbb4d7f56master
parent
f2d4016217
commit
9afd15d535
|
@ -74,9 +74,18 @@ sub check
|
|||
sub alert
|
||||
{
|
||||
my ($bug, $is_new) = @_;
|
||||
if (my @fatals = grep { $_->is_fatal } @{$bug->{failed_checkers}})
|
||||
my (@fatal, @warn);
|
||||
map { $_->is_fatal ? push(@fatal, $_) : push(@warn, $_) } @{$bug->{failed_checkers}};
|
||||
my $force = 1 && Bugzilla->cgi->param('force_checkers');
|
||||
if (!@fatal && (!@warn || $force))
|
||||
{
|
||||
# фатальных нет, нефатальных либо тоже нет, либо пользователь сказал "DO WHAT I SAY"
|
||||
$bug->{passed_checkers} = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
# откатываем изменения
|
||||
$bug->{passed_checkers} = 0;
|
||||
# bugs_fulltext нужно откатывать отдельно...
|
||||
if ($is_new)
|
||||
{
|
||||
|
@ -90,7 +99,12 @@ sub alert
|
|||
Bugzilla->dbh->bz_rollback_to_savepoint;
|
||||
if ($THROW_ERROR)
|
||||
{
|
||||
ThrowUserError('checkers_failed', { failed => [ $bug ] });
|
||||
Bugzilla->template->process("verify-checkers.html.tmpl", {
|
||||
failed => [ $bug ],
|
||||
allow_commit => !@fatal,
|
||||
exclude_params_re => '^force_checkers$',
|
||||
}) || ThrowTemplateError(Bugzilla->template->error);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
[% END %]
|
||||
[% ELSIF error == "import_fields_mandatory" %]
|
||||
The following missing fields: [% fields.join(", ") | html %] are required to enter new bugs.
|
||||
[% ELSIF error == "checkers_failed" %]
|
||||
[% PROCESS "failed-checkers.html.tmpl" f = failed %]
|
||||
[% ELSIF error == "invalid_field_value" %]
|
||||
The value <b>"[% value_obj.name | html %]"</b> of field <b>[% value_obj.field.description | html %]</b>
|
||||
is unavailable for the selected value "<b>[% controller | html %]</b>" of
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
[% PROCESS "global/field-descs.none.tmpl" %]
|
||||
|
||||
[% PROCESS global/header.html.tmpl
|
||||
title = 'Изменения не удовлетворяют проверкам' %]
|
||||
|
||||
<div class="user-error-div">
|
||||
|
||||
[% PROCESS "failed-checkers.html.tmpl" f = failed %]
|
||||
|
||||
[% IF allow_commit %]
|
||||
|
||||
<form action="process_bug.cgi" method="post" style="margin-top: 1em">
|
||||
[% PROCESS "global/hidden-fields.html.tmpl" exclude = exclude_params_re %]
|
||||
<input type="hidden" name="force_checkers" value="1" />
|
||||
<input type="submit" value="Я знаю, что делаю! Внести изменения!" id="forcesubmit" style="color: gray" disabled="disabled" /> <span id="countdown_span"></span>
|
||||
</form>
|
||||
|
||||
<p style="margin-bottom: 0">
|
||||
Либо нажмите <b><a href="javascript:history.back()">Назад</a></b>
|
||||
и внесите другие, корректные изменения.
|
||||
</p>
|
||||
|
||||
<script type="text/javascript">
|
||||
var downcounter = 3;
|
||||
function countdown()
|
||||
{
|
||||
var s = document.getElementById('forcesubmit');
|
||||
var t = document.getElementById('countdown_span');
|
||||
if (downcounter > 0)
|
||||
{
|
||||
t.innerHTML = downcounter + '...';
|
||||
downcounter--;
|
||||
setTimeout(countdown, 1000);
|
||||
}
|
||||
else
|
||||
{
|
||||
t.innerHTML = '';
|
||||
s.style.color = '';
|
||||
s.disabled = false;
|
||||
}
|
||||
}
|
||||
countdown();
|
||||
</script>
|
||||
|
||||
[% ELSE %]
|
||||
|
||||
<p style="margin-bottom: 0">
|
||||
Изменения блокированы. Нажмите <b><a href="javascript:history.back()">Назад</a></b>
|
||||
и внесите корректные изменения.
|
||||
</p>
|
||||
|
||||
[% END %]
|
||||
|
||||
</div>
|
||||
|
||||
[% PROCESS global/footer.html.tmpl %]
|
|
@ -575,9 +575,10 @@ foreach my $bug (@bug_objects) {
|
|||
if ($bug->{failed_checkers} && @{$bug->{failed_checkers}})
|
||||
{
|
||||
push @$failed_checkers, $bug;
|
||||
if (grep { $_->is_fatal } @{$bug->{failed_checkers}})
|
||||
unless ($bug->{passed_checkers})
|
||||
{
|
||||
# When we are here, rollback_to_savepoint is already done in Checkers.pm
|
||||
# This means update is blocked
|
||||
# and rollback_to_savepoint is already done in Checkers.pm
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue