Bug 66910 - Do some refactoring

git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1675 6955db30-a419-402b-8a0d-67ecbb4d7f56
master
akrasilnikov 2013-06-05 12:16:17 +00:00
parent 1aeb072046
commit 9cf7f835f4
5 changed files with 99 additions and 152 deletions

View File

@ -679,7 +679,7 @@ sub run_create_validators
# These are converted into IDs
delete $params->{product};
delete $params->{component};
# used for keywords only
delete $params->{keywords_description};
@ -1733,43 +1733,44 @@ sub _check_keywords {
if (!ref $invocant) {
return [] if !Bugzilla->user->in_group('editbugs', $product->id);
}
# CustIS Bug 66910 - Adding new keyword to DB
my @keyword_descriptions;
foreach my $kd (split(/[@]+/, trim($keyword_description_string))) {
my @this_kd = split(/[=]+/, $kd);
push @keyword_descriptions, { $this_kd[0] => $this_kd[1]};
my @this_kd = split(/[=]+/, $kd);
push @keyword_descriptions, { $this_kd[0] => $this_kd[1]};
}
my %keywords;
foreach my $keyword (split(/[\s,]+/, $keyword_string)) {
next unless $keyword;
my $obj = new Bugzilla::Keyword({ name => $keyword });
# CustIS Bug 66910 - Adding new keyword to DB
if (!$obj)
{
my $this_kd = "";
foreach (@keyword_descriptions)
{
if (exists($_->{$keyword}))
{
$this_kd = $_->{$keyword};
}
}
# CustIS Bug 66910 - Adding new keyword to DB
my $obj = Bugzilla::Keyword->create({
name => $keyword,
description => $this_kd
});
if (!$obj)
{
my $this_kd = "";
foreach (@keyword_descriptions)
{
if (exists($_->{$keyword}))
{
$this_kd = $_->{$keyword};
}
}
my $obj = Bugzilla::Keyword->create({
name => $keyword,
description => $this_kd
});
$keywords{$obj->id} = $obj;
}
else
{
$keywords{$obj->id} = $obj;
}
else
{
$keywords{$obj->id} = $obj;
}
}
#ThrowUserError("unknown_keyword", { keyword => $keyword }) if !$obj;
#$keywords{$obj->id} = $obj;
#ThrowUserError("unknown_keyword", { keyword => $keyword }) if !$obj;
#$keywords{$obj->id} = $obj;
}
return [values %keywords];
}

View File

@ -229,7 +229,7 @@ function updateRemainingTime()
function changeform_onsubmit()
{
if (check_new_keywords() == false) return false;
if (check_new_keywords(document.changeform) == false) return false;
var wtInput = document.changeform.work_time;
if (!wtInput)
@ -317,64 +317,3 @@ function att_file_onchange(e)
}
}
}
// CustIS bug 66910 - check new keywords and requery description for its
function check_new_keywords()
{
var non_exist_keywords = [];
var cnt_exist_keywords = 0;
var input_keywords = document.changeform.keywords.value.split(",");
var exist_keywords = [];
for(var i = 0; i < emptyKeywordsOptions.length; i++)
{
exist_keywords[i] = emptyKeywordsOptions[i].name.trim();
}
for(var i = 0; i < input_keywords.length; i++)
{
if (input_keywords[i].trim() != "" && exist_keywords.indexOf(input_keywords[i].trim()) == -1)
{
non_exist_keywords[cnt_exist_keywords] = input_keywords[i].trim();
cnt_exist_keywords++;
}
}
if (non_exist_keywords.length > 0)
{
var keywords_submit = true;
var kd_container = document.getElementById("keywords_description_container");
if (kd_container.children[0] == undefined)
{
var desc_html = "";
for(var i = 0; i < non_exist_keywords.length; i++)
{
desc_html += "<br /><label>Description for new item of keywords - <b>" + non_exist_keywords[i].trim() + "</b></label><br /><input type=\"text\" value=\"\" class=\"text_input\" name=\"kd\" id=\"keyword_description_" + i + "\" style=\"border: solid 1px red;\" /> <br/>";
}
kd_container.innerHTML = desc_html;
keywords_submit = false;
}
else
{
var kd_descriptions_val = "";
var kd_descriptions = kd_container.getElementsByTagName("INPUT");
for (var i = 0; i < kd_descriptions.length; i++)
{
if (kd_descriptions[i].value == "")
{
keywords_submit = false;
}
if (kd_descriptions_val != "")
{
kd_descriptions_val += "@";
}
var this_id = kd_descriptions[i].getAttribute('id').replace("keyword_description_", "");
kd_descriptions_val += non_exist_keywords[this_id].trim() + "=" + kd_descriptions[i].value;
}
kd_container.innerHTML = kd_container.innerHTML + "<input type=\"hidden\" value=\"" + kd_descriptions_val + "\" name=\"keywords_description\" />"
}
return keywords_submit;
}
}

View File

@ -267,3 +267,72 @@ function _value_id(field_name, id)
{
return 'v' + id + '_' + field_name;
}
// CustIS bug 66910 - check new keywords and requery description for its
function check_new_keywords(form)
{
var non_exist_keywords = [];
var cnt_exist_keywords = 0;
var input_keywords = form.keywords.value.split(",");
var exist_keywords = [];
for(var i = 0; i < emptyKeywordsOptions.length; i++)
{
exist_keywords[i] = emptyKeywordsOptions[i].name.trim();
}
for(var i = 0; i < input_keywords.length; i++)
{
if (input_keywords[i].trim() != "" && exist_keywords.indexOf(input_keywords[i].trim()) == -1)
{
non_exist_keywords[cnt_exist_keywords] = input_keywords[i].trim();
cnt_exist_keywords++;
}
}
if (non_exist_keywords.length > 0)
{
var keywords_submit = true;
var kd_container = document.getElementById("keywords_description_container");
var desc_html = "";
for(var i = 0; i < non_exist_keywords.length; i++)
{
var this_value = "";
if (document.getElementById('kd_' + i) != undefined && document.getElementById('kd_' + i).value != "" && document.getElementById('kd_' + i).getAttribute('data-key') == non_exist_keywords[i].trim())
{
this_value = document.getElementById('kd_' + i).value;
}
desc_html += "<br /><label>Description for new item of keywords - <b>" + non_exist_keywords[i].trim() + "</b></label><br /><input type=\"text\" value=\"" + this_value + "\" class=\"text_input\" name=\"kd\" id=\"kd_" + i + "\" data-key=\"" + non_exist_keywords[i].trim() + "\" style=\"border: solid 1px red;\" /> <br/>";
}
kd_container.innerHTML = desc_html;
var kd_descriptions_val = "";
var kd_descriptions = kd_container.getElementsByTagName("INPUT");
for (var i = 0; i < kd_descriptions.length; i++)
{
if (kd_descriptions[i].value != "")
{
if (kd_descriptions_val != "")
{
kd_descriptions_val += "@";
}
var this_key = kd_descriptions[i].getAttribute('data-key');
kd_descriptions_val += this_key + "=" + kd_descriptions[i].value;
}
else
{
keywords_submit = false;
}
}
if (kd_descriptions_val != "")
{
kd_container.innerHTML = kd_container.innerHTML + "<input type=\"hidden\" value=\"" + kd_descriptions_val + "\" name=\"keywords_description\" />"
}
else
{
keywords_submit = false;
}
return keywords_submit;
}
return true;
}

View File

@ -338,7 +338,7 @@ if (defined $cgi->param('keywords')) {
foreach my $b (@bug_objects) {
my $return =
$b->modify_keywords(scalar $cgi->param('keywords'),
scalar $cgi->param('keywords_description'),
scalar $cgi->param('keywords_description'),
scalar $cgi->param('keywordaction'));
$any_keyword_changes ||= $return;
}

View File

@ -92,7 +92,7 @@ var noTimeTracking = [% product.notimetracking ? 'true' : 'false' %];
function validateEntryForm(theform)
{
if (check_new_keywords() == false) return false;
if (check_new_keywords(document.Create) == false) return false;
if (theform.short_desc.value == '')
{
@ -129,68 +129,6 @@ function validateEntryForm(theform)
return true;
}
// CustIS bug 66910 - check new keywords and requery description for its
function check_new_keywords()
{
var non_exist_keywords = [];
var cnt_exist_keywords = 0;
var input_keywords = document.Create.keywords.value.split(",");
var exist_keywords = [];
for(var i = 0; i < emptyKeywordsOptions.length; i++)
{
exist_keywords[i] = emptyKeywordsOptions[i].name.trim();
}
for(var i = 0; i < input_keywords.length; i++)
{
if (input_keywords[i].trim() != "" && exist_keywords.indexOf(input_keywords[i].trim()) == -1)
{
non_exist_keywords[cnt_exist_keywords] = input_keywords[i].trim();
cnt_exist_keywords++;
}
}
if (non_exist_keywords.length > 0)
{
var keywords_submit = true;
var kd_container = document.getElementById("keywords_description_container");
if (kd_container.children[0] == undefined)
{
var desc_html = "";
for(var i = 0; i < non_exist_keywords.length; i++)
{
desc_html += "<br /><label>Description for - <b>" + non_exist_keywords[i].trim() + "</b></label><br /><input type=\"text\" value=\"\" name=\"kd\" id=\"keyword_description_" + i + "\" style=\"border: solid 1px red; width: 296px;\" /> <br/>";
}
kd_container.innerHTML = desc_html;
keywords_submit = false;
}
else
{
var kd_descriptions_val = "";
var kd_descriptions = kd_container.getElementsByTagName("INPUT");
for (var i = 0; i < kd_descriptions.length; i++)
{
if (kd_descriptions[i].value == "")
{
keywords_submit = false;
}
if (kd_descriptions_val != "")
{
kd_descriptions_val += "@";
}
var this_id = kd_descriptions[i].getAttribute('id').replace("keyword_description_", "");
kd_descriptions_val += non_exist_keywords[this_id].trim() + "=" + kd_descriptions[i].value;
kd_descriptions[i].value = kd_descriptions[i].value;
}
kd_container.innerHTML = kd_container.innerHTML + "<input type=\"hidden\" value=\"" + kd_descriptions_val + "\" name=\"keywords_description\" />"
}
return keywords_submit;
}
}
function set_assign_to() {
// Based on the selected component, fill the "Assign To:" field
// with the default component owner, and the "QA Contact:" field