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
|
sub alert
|
||||||
{
|
{
|
||||||
my ($bug, $is_new) = @_;
|
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 нужно откатывать отдельно...
|
# bugs_fulltext нужно откатывать отдельно...
|
||||||
if ($is_new)
|
if ($is_new)
|
||||||
{
|
{
|
||||||
|
@ -90,7 +99,12 @@ sub alert
|
||||||
Bugzilla->dbh->bz_rollback_to_savepoint;
|
Bugzilla->dbh->bz_rollback_to_savepoint;
|
||||||
if ($THROW_ERROR)
|
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 %]
|
[% END %]
|
||||||
[% ELSIF error == "import_fields_mandatory" %]
|
[% ELSIF error == "import_fields_mandatory" %]
|
||||||
The following missing fields: [% fields.join(", ") | html %] are required to enter new bugs.
|
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" %]
|
[% ELSIF error == "invalid_field_value" %]
|
||||||
The value <b>"[% value_obj.name | html %]"</b> of field <b>[% value_obj.field.description | html %]</b>
|
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
|
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}})
|
if ($bug->{failed_checkers} && @{$bug->{failed_checkers}})
|
||||||
{
|
{
|
||||||
push @$failed_checkers, $bug;
|
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;
|
next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue