Bug 75225 - more correct scripts

git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1204 6955db30-a419-402b-8a0d-67ecbb4d7f56
master
vfilippov 2011-02-02 13:16:11 +00:00
parent a87a64ef01
commit 055928b6c3
7 changed files with 95 additions and 99 deletions

View File

@ -47,7 +47,7 @@ Bugzilla->send_header(
if ($args->{type} eq 'search')
{
my $json = bz_encode_json(Bugzilla->full_json_query_visibility);
print "qfVisibility = $json;";
print "var qfVisibility = $json;";
}
elsif ($args->{type} eq 'bug')
{

92
js/bug-visibility.js Normal file
View File

@ -0,0 +1,92 @@
YAHOO.util.Event.addListener(window, 'load', initControlledFields);
function initControlledFields()
{
for (var i in show_fields)
initControlledField(i);
}
function initControlledField(i)
{
var f = document.getElementById(i);
YAHOO.util.Event.addListener(f, 'change', handleControllerField, f);
}
function getSelectedIds(sel)
{
var lm = sel.id.length+2;
var opt = {};
for (var i = 0; i < sel.options.length; i++)
{
if (sel.options[i].selected)
{
id = sel.options[i].id;
opt[id.substr(1, id.length-lm)] = true;
}
}
return opt;
}
function handleControllerField(e, controller)
{
var vis, label_container, field_container, id;
var opt = getSelectedIds(controller);
for (var controlled_id in show_fields[controller.id]['fields'])
{
vis = false;
for (var value in show_fields[controller.id]['fields'][controlled_id])
{
if (opt[value])
{
vis = true;
break;
}
}
label_container = document.getElementById('field_label_' + controlled_id);
field_container = document.getElementById('field_container_' + controlled_id);
if (vis)
{
YAHOO.util.Dom.removeClass(label_container, 'bz_hidden_field');
YAHOO.util.Dom.removeClass(field_container, 'bz_hidden_field');
}
else
{
YAHOO.util.Dom.addClass(label_container, 'bz_hidden_field');
YAHOO.util.Dom.addClass(field_container, 'bz_hidden_field');
}
}
var item, controlled, copt, controlled_value;
for (var controlled_id in show_fields[controller.id]['values'])
{
controlled = document.getElementById(controlled_id);
copt = getSelectedIds(controlled);
bz_clearOptions(controlled);
for (var i in show_fields[controlled.id]['legal'])
{
controlled_value = show_fields[controlled.id]['legal'][i];
vis = false;
item = show_fields[controller.id]['values'][controlled_id][controlled_value[0]];
if (!item)
vis = true;
else
{
for (var value in item)
{
if (opt[value])
{
vis = true;
break;
}
}
}
if (vis)
{
item = bz_createOptionInSelect(controlled, controlled_value[1], controlled_value[1]);
item.id = 'v'+controlled_value[0]+'_'+controlled_id;
if (copt[controlled_value[0]])
item.selected = true;
}
}
}
}

View File

@ -21,99 +21,6 @@
/* This library assumes that the needed YUI libraries have been loaded
already. */
var show_fields = {};
YAHOO.util.Event.addListener(window, 'load', initControlledFields);
function initControlledFields()
{
for (var i in show_fields)
initControlledField(i);
}
function initControlledField(i)
{
var f = document.getElementById(i);
YAHOO.util.Event.addListener(f, 'change', handleControllerField, f);
}
function getSelectedIds(sel)
{
var lm = sel.id.length+2;
var opt = {};
for (var i = 0; i < sel.options.length; i++)
{
if (sel.options[i].selected)
{
id = sel.options[i].id;
opt[id.substr(1, id.length-lm)] = true;
}
}
return opt;
}
function handleControllerField(e, controller)
{
var vis, label_container, field_container, id;
var opt = getSelectedIds(controller);
for (var controlled_id in show_fields[controller.id]['fields'])
{
vis = false;
for (var value in show_fields[controller.id]['fields'][controlled_id])
{
if (opt[value])
{
vis = true;
break;
}
}
label_container = document.getElementById('field_label_' + controlled_id);
field_container = document.getElementById('field_container_' + controlled_id);
if (vis)
{
YAHOO.util.Dom.removeClass(label_container, 'bz_hidden_field');
YAHOO.util.Dom.removeClass(field_container, 'bz_hidden_field');
}
else
{
YAHOO.util.Dom.addClass(label_container, 'bz_hidden_field');
YAHOO.util.Dom.addClass(field_container, 'bz_hidden_field');
}
}
var item, controlled, copt, controlled_value;
for (var controlled_id in show_fields[controller.id]['values'])
{
controlled = document.getElementById(controlled_id);
copt = getSelectedIds(controlled);
bz_clearOptions(controlled);
for (var i in show_fields[controlled.id]['legal'])
{
controlled_value = show_fields[controlled.id]['legal'][i];
vis = false;
item = show_fields[controller.id]['values'][controlled_id][controlled_value[0]];
if (!item)
vis = true;
else
{
for (var value in item)
{
if (opt[value])
{
vis = true;
break;
}
}
}
if (vis)
{
item = bz_createOptionInSelect(controlled, controlled_value[1], controlled_value[1]);
item.id = 'v'+controlled_value[0]+'_'+controlled_id;
if (copt[controlled_value[0]])
item.selected = true;
}
}
}
}
function createCalendar(name) {
var cal = new YAHOO.widget.Calendar('calendar_' + name,
'con_calendar_' + name);

View File

@ -1,6 +1,5 @@
/* JavaScript code to hide and show values of select fields on the query form */
var qfVisibility = {};
var qfHandling = {};
YAHOO.util.Event.addListener(window, 'load', initQueryformFields);

View File

@ -35,7 +35,7 @@
style_urls = [ 'skins/standard/create_attachment.css',
'skins/standard/yui/calendar.css' ]
javascript_urls = [ "js/attachment.js", "js/util.js", "js/yui/calendar.js",
"js/field.js", "js/TUI.js", "fieldvaluecontrol.cgi?type=bug" ]
"js/field.js", "js/TUI.js", "js/bug-visibility.js", "fieldvaluecontrol.cgi?type=bug" ]
onload = 'set_assign_to();'
%]

View File

@ -38,8 +38,6 @@
[% select_fields.${field.name} = field %]
[% END %]
<script type="text/javascript" src="fieldvaluecontrol.cgi?type=bug"></script>
<script type="text/javascript">
var user_settings = {
'is_insider' : [% user.is_insider ? 1 : 0 %],

View File

@ -36,7 +36,7 @@
[% title = "$terms.Bug $bug.bug_id &ndash; $filtered_desc &ndash; $filtered_prodcomp &ndash; $filtered_stat" %]
[% header = "$terms.Bug&nbsp;$bug.bug_id" %]
[% header_addl_info = "Last modified: $filtered_timestamp" %]
[% javascript_urls = [ "js/util.js", "js/field.js", "js/yui/calendar.js" ] %]
[% javascript_urls = [ "js/util.js", "js/field.js", "js/yui/calendar.js", "js/bug-visibility.js", "fieldvaluecontrol.cgi?type=bug" ] %]
[% style_urls = [ "skins/standard/yui/calendar.css",
"skins/standard/show_bug.css" ] %]
[% doc_section = "bug_page.html" %]