Bug 42133
Excel bug import git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@176 6955db30-a419-402b-8a0d-67ecbb4d7f56custis
parent
2c3e8fe1cd
commit
a0198ba25c
|
@ -121,24 +121,56 @@ else
|
|||
my @keys = $cgi->param;
|
||||
my $bugs = {};
|
||||
my $forall = {};
|
||||
my $tr = {};
|
||||
# переименования полей багов
|
||||
for (grep { /^t_/so } @keys)
|
||||
{
|
||||
if ($cgi->param($_) && $cgi->param($_) ne substr($_,2))
|
||||
{
|
||||
$tr->{substr($_,2)} = $cgi->param($_);
|
||||
}
|
||||
}
|
||||
for (@keys)
|
||||
{
|
||||
if (/^b_(.*?)_(\d+)$/so)
|
||||
{
|
||||
$bugs->{$2}->{$1} = $cgi->param($_);
|
||||
# поля багов
|
||||
$bugs->{$2}->{$tr->{$1} || $1} = $cgi->param($_);
|
||||
}
|
||||
elsif (/^f_/so)
|
||||
{
|
||||
# скрытые значения полей для всех багов (шаблон)
|
||||
$forall->{$'} = $cgi->param($_) if $cgi->param($_);
|
||||
}
|
||||
}
|
||||
my $r = 0;
|
||||
my $ids = [];
|
||||
my $f = 0;
|
||||
Bugzilla->dbh->bz_start_transaction;
|
||||
for my $bug (values %$bugs)
|
||||
{
|
||||
$bug->{$_} ||= $forall->{$_} for keys %$forall;
|
||||
$r += post_bug($bug) ? 1 : 0 if $bug->{enabled};
|
||||
if ($bug->{enabled})
|
||||
{
|
||||
my $id = post_bug($bug);
|
||||
if ($id)
|
||||
{
|
||||
$r++;
|
||||
push @$ids, $id;
|
||||
}
|
||||
else
|
||||
{
|
||||
Bugzilla->dbh->bz_rollback_transaction;
|
||||
$f = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
unless ($f)
|
||||
{
|
||||
Bugzilla->dbh->bz_commit_transaction;
|
||||
print $cgi->redirect(-location => 'importxls.cgi?result='.$r);
|
||||
}
|
||||
print $cgi->redirect(-location => 'importxls.cgi?result='.$r);
|
||||
}
|
||||
|
||||
# разобрать лист Excel
|
||||
|
@ -204,6 +236,7 @@ sub post_bug
|
|||
}
|
||||
my $um = Bugzilla->usage_mode;
|
||||
Bugzilla->usage_mode(USAGE_MODE_EMAIL);
|
||||
Bugzilla->error_mode(ERROR_MODE_WEBPAGE);
|
||||
my $bug_id = do 'post_bug.cgi';
|
||||
Bugzilla->usage_mode($um);
|
||||
return $bug_id;
|
||||
|
|
|
@ -5,10 +5,15 @@
|
|||
[% title = 'Excel import' %]
|
||||
|
||||
[% PROCESS "global/field-descs.none.tmpl" %]
|
||||
[% PROCESS global/header.html.tmpl %]
|
||||
|
||||
[% field_descs.platform = field_descs.rep_platform %]
|
||||
[% field_descs.delete("rep_platform") %]
|
||||
|
||||
[% PROCESS global/header.html.tmpl %]
|
||||
[% FOR k = field_descs.keys %]
|
||||
[% IF k.match('\.|^(\[Bug creation\]|days_elapsed|owner_idle_time|changeddate|creation_ts|delta_ts)$') %]
|
||||
[% field_descs.delete(k) %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
[% IF form || show_error %]
|
||||
<h2>Mass Bug Import from Excel files</h2>
|
||||
|
@ -83,20 +88,13 @@ function toggleallbugz(chk)
|
|||
for (i = 0; i < bugz.children.length; i++)
|
||||
document.getElementById('b_enabled_'+(""+bugz.children[i].id).substr(5)).checked = chk;
|
||||
}
|
||||
function fieldrename(field)
|
||||
{
|
||||
document.getElementById('tp_'+field).style.display='none';
|
||||
document.getElementById('t_'+field).style.display='';
|
||||
}
|
||||
</script>
|
||||
|
||||
<form action="importxls.cgi" method="post">
|
||||
<input type="hidden" name="commit" value="1" />
|
||||
[% FOR key = forall.keys %]
|
||||
<input type="hidden" name="f_[% key FILTER html %]" value="[% forall.${key} FILTER html %]" />
|
||||
[% END %]
|
||||
<table>
|
||||
<tr>
|
||||
<td><input type="checkbox" onclick="toggleallbugz(this.checked)" /></td>
|
||||
[% FOR field = fields %]
|
||||
<td>[% IF field_descs.${field} %][% field_descs.${field} %][% ELSE %]<span style="color: #A0A0A0">[% field %]</span>[% END %]</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
[% lens = {} %]
|
||||
[% FOR bug = data %]
|
||||
[% FOR field = fields %]
|
||||
|
@ -112,6 +110,27 @@ function toggleallbugz(chk)
|
|||
[% lens.${key} = 3 %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
<form action="importxls.cgi" method="post">
|
||||
<input type="hidden" name="commit" value="1" />
|
||||
[% FOR key = forall.keys %]
|
||||
<input type="hidden" name="f_[% key FILTER html %]" value="[% forall.${key} FILTER html %]" />
|
||||
[% END %]
|
||||
<table>
|
||||
<tr>
|
||||
<td><input type="checkbox" onclick="toggleallbugz(this.checked)" /></td>
|
||||
[% FOR field = fields %]
|
||||
<td style="white-space: nowrap">
|
||||
<p id="tp_[% field %]"><a href="javascript:void fieldrename('[% field.replace("['\"]", '\\$&') %]')">[% IF field_descs.${field} %][% field_descs.${field} %][% ELSE %]<span style="color: red">[% field %]</span>[% END %]</a></p>
|
||||
<select id="t_[% field %]" name="t_[% field %]" style="display:none; width: 90px">
|
||||
<option value="[% field %]">[% IF field_descs.${field} %][% field_descs.${field} %][% ELSE %]Unknown field - [% field %][% END %]</option>
|
||||
[% FOR f = field_descs.keys.sort %]
|
||||
<option value="[% f %]">[% field_descs.${f} %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
<tbody id="bugz">
|
||||
[% FOR bug = data %]
|
||||
<tr id="bugz_[% bug.num %]">
|
||||
|
|
Loading…
Reference in New Issue