Bug 42133 - Do not append missing mandatory columns, but alert instead

git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@985 6955db30-a419-402b-8a0d-67ecbb4d7f56
master
vfilippov 2010-10-11 16:09:09 +00:00
parent 7aaf013ae7
commit 8503edbe86
2 changed files with 31 additions and 17 deletions

View File

@ -23,7 +23,8 @@ use Bugzilla::User;
# константы
use constant BUG_DAYS => 92;
use constant XLS_LISTNAME => 'Bugz';
use constant MANDATORY_FIELDS => [qw(short_desc product component)];
my $MANDATORY_FIELDS = [qw(short_desc product component)];
# начинаем-с
my $user = Bugzilla->login(LOGIN_REQUIRED);
@ -87,6 +88,7 @@ for (keys %$args)
$vars->{bug_tpl} = $bug_tpl;
$vars->{name_tr} = $name_tr;
$vars->{mandatory_fields} = $MANDATORY_FIELDS;
# нужно всосать из шаблонов field_descs...
# и несколько поменять... ;-/ поганый хак, конечно, а чё делать-то.
@ -190,15 +192,6 @@ unless ($args->{commit})
}
}
# показываем табличку с багами
my %fhash = map { (exists $name_tr->{$_} ? $name_tr->{$_} : $_) => 1 } @{$table->{fields}};
for (@{ MANDATORY_FIELDS() })
{
unless ($fhash{$_} || $bug_tpl->{$_})
{
push @{$table->{fields}}, $_;
$name_tr->{$_} = $_;
}
}
$vars->{fields} = $table->{fields};
$vars->{data} = $table->{data};
}

View File

@ -84,17 +84,38 @@ function addfield()
<h2>Select worksheet items to import as bugs</h2>
<script language="JavaScript">
var mandatory_columns = {
[% FOR f = mandatory_fields %]
"[% f %]": "[% import_field_descs.${f} | js %]",
[% END %]
"": ""
};
delete mandatory_columns[""];
var columnIds = [ [% FOR f = fields %][% IF NOT loop.first %],[% END %]"[% f | js %]"[% END %] ];
function toggleallbugz(chk)
{
var bgz = document.getElementById("bugz");
for (var i = 0; i < bgz.childNodes.length; i++)
if (bgz.childNodes[i].id && bgz.childNodes[i].id != "")
document.getElementById('b_enabled_'+(""+bgz.childNodes[i].id).substr(5)).checked = chk;
var bgz = document.getElementById("bugz");
for (var i = 0; i < bgz.childNodes.length; i++)
if (bgz.childNodes[i].id && bgz.childNodes[i].id != "")
document.getElementById('b_enabled_'+(""+bgz.childNodes[i].id).substr(5)).checked = chk;
}
function fieldrename(field)
{
document.getElementById('tp_'+field).style.display='none';
document.getElementById('t_'+field).style.display='';
document.getElementById('tp_'+field).style.display='none';
document.getElementById('t_'+field).style.display='';
}
function checkColumns()
{
var found = {}, foundall = true;
for (var i in columnIds)
found[document.getElementById('t_'+columnIds[i]).value] = true;
var notfound = [];
for (var j in mandatory_columns)
if (!found[j])
notfound.push(mandatory_columns[j]);
if (notfound.length > 0)
alert('Поля "'+notfound.join('", "')+'" являются обязательными, но не выбраны вами!');
return notfound.length == 0;
}
</script>
@ -114,7 +135,7 @@ function fieldrename(field)
[% END %]
[% END %]
<form action="importxls.cgi" method="post">
<form action="importxls.cgi" method="post" onsubmit="return checkColumns()">
<input type="hidden" name="commit" value="1" />
<input type="hidden" name="bugdays" value="[% bugdays | html %]" />
<input type="hidden" name="listname" value="[% listname | html %]" />