From 3a372a916f3545d37390f692f24f7e1c4d5351b5 Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Wed, 17 May 2017 16:19:36 -0400 Subject: Bug 1363803 - Consolidate YUI js and css into one js and one css file --- .gitignore | 4 + Bugzilla/Install/Filesystem.pm | 77 +++- Bugzilla/Template.pm | 17 +- Bugzilla/Util.pm | 8 +- .../default/bug/create/create-automative.html.tmpl | 1 - .../default/bug/create/create-creative.html.tmpl | 1 - .../bug/create/create-data-compliance.html.tmpl | 1 - .../create/create-dev-engagement-event.html.tmpl | 1 - .../en/default/bug/create/create-doc.html.tmpl | 1 - .../default/bug/create/create-fsa-budget.html.tmpl | 1 - .../en/default/bug/create/create-mdn.html.tmpl | 1 - .../en/default/bug/create/create-mozpr.html.tmpl | 1 - .../en/default/bug/create/create-swag.html.tmpl | 1 - .../bug/create/create-user-engagement.html.tmpl | 1 - .../default/pages/attachment_bounty_form.html.tmpl | 1 - .../en/default/pages/group_admins.html.tmpl | 1 - .../en/default/pages/triage_reports.html.tmpl | 1 - .../en/default/pages/user_activity.html.tmpl | 1 - .../template/en/default/guided/guided.html.tmpl | 4 +- .../en/default/pages/mydashboard.html.tmpl | 6 +- extensions/MyDashboard/web/js/flags.js | 394 +++++++++--------- extensions/MyDashboard/web/js/query.js | 462 +++++++++++---------- .../en/default/pages/productdashboard.html.tmpl | 9 +- extensions/ProductDashboard/web/js/components.js | 136 +++--- extensions/ProductDashboard/web/js/duplicates.js | 38 +- extensions/ProductDashboard/web/js/popularity.js | 38 +- extensions/ProductDashboard/web/js/recents.js | 44 +- extensions/ProductDashboard/web/js/roadmap.js | 30 +- extensions/ProductDashboard/web/js/summary.js | 64 +-- .../bug/create/create-remo-budget.html.tmpl | 1 - .../default/bug/create/create-remo-swag.html.tmpl | 1 - .../en/default/pages/remo-form-payment.html.tmpl | 1 - .../template/en/default/pages/splinter.html.tmpl | 12 +- js/yui.js.list | 12 + js/yui/yahoo-dom-event/yahoo-dom-event-min.js | 14 + js/yui/yahoo-dom-event/yahoo-dom-event.js | 14 - js/yui3.js.list | 75 ++++ skins/yui.css.list | 5 + skins/yui3.css.list | 5 + template/en/default/attachment/create.html.tmpl | 1 - template/en/default/attachment/edit.html.tmpl | 1 - template/en/default/bug/create/create.html.tmpl | 1 - template/en/default/bug/show-header.html.tmpl | 2 - template/en/default/bug/summarize-time.html.tmpl | 1 - template/en/default/global/header.html.tmpl | 53 +-- template/en/default/global/value-descs.js.tmpl | 12 +- template/en/default/list/list.html.tmpl | 1 - template/en/default/reports/report.html.tmpl | 1 - .../en/default/search/search-advanced.html.tmpl | 1 - .../default/search/search-create-series.html.tmpl | 1 - .../en/default/search/search-instant.html.tmpl | 1 - .../default/search/search-report-graph.html.tmpl | 1 - .../default/search/search-report-table.html.tmpl | 1 - 53 files changed, 829 insertions(+), 734 deletions(-) create mode 100644 js/yui.js.list create mode 100644 js/yui/yahoo-dom-event/yahoo-dom-event-min.js delete mode 100644 js/yui/yahoo-dom-event/yahoo-dom-event.js create mode 100644 js/yui3.js.list create mode 100644 skins/yui.css.list create mode 100644 skins/yui3.css.list diff --git a/.gitignore b/.gitignore index 7ef5e263d..18f2d0a17 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ /**/.htaccess +/skins/yui.css +/skins/yui3.css +/js/yui.js +/js/yui3.js /lib/* /local/* /template/en/custom diff --git a/Bugzilla/Install/Filesystem.pm b/Bugzilla/Install/Filesystem.pm index 7cfda8304..79eeca98e 100644 --- a/Bugzilla/Install/Filesystem.pm +++ b/Bugzilla/Install/Filesystem.pm @@ -30,6 +30,8 @@ use File::Find; use File::Path; use File::Basename; use File::Copy qw(move); +use File::Spec; +use Cwd (); use File::Slurp; use IO::File; use POSIX (); @@ -350,6 +352,36 @@ sub FILESYSTEM { "$skinsdir/contrib" => DIR_WS_SERVE, ); + my $yui_all_css = sub { + return join("\n", + map { + my $css = read_file($_); + _css_url_fix($css, $_, "skins/yui.css.list") + } read_file("skins/yui.css.list", { chomp => 1 }) + ); + }; + + my $yui_all_js = sub { + return join("\n", + map { scalar read_file($_) } read_file("js/yui.js.list", { chomp => 1 }) + ); + }; + + my $yui3_all_css = sub { + return join("\n", + map { + my $css = read_file($_); + _css_url_fix($css, $_, "skins/yui3.css.list") + } read_file("skins/yui3.css.list", { chomp => 1 }) + ); + }; + + my $yui3_all_js = sub { + return join("\n", + map { scalar read_file($_) } read_file("js/yui3.js.list", { chomp => 1 }) + ); + }; + # The name of each file, pointing at its default permissions and # default contents. my %create_files = ( @@ -361,6 +393,18 @@ sub FILESYSTEM { # or something else is not running as the webserver or root. "$datadir/mailer.testfile" => { perms => CGI_WRITE, contents => '' }, + "js/yui.js" => { perms => CGI_READ, + overwrite => 1, + contents => $yui_all_js }, + "skins/yui.css" => { perms => CGI_READ, + overwrite => 1, + contents => $yui_all_css }, + "js/yui3.js" => { perms => CGI_READ, + overwrite => 1, + contents => $yui3_all_js }, + "skins/yui3.css" => { perms => CGI_READ, + overwrite => 1, + contents => $yui3_all_css }, ); # Because checksetup controls the creation of index.html separately @@ -520,6 +564,31 @@ sub update_filesystem { _remove_dynamic_assets(); } +sub _css_url_fix { + my ($content, $from, $to) = @_; + my $from_dir = dirname(File::Spec->rel2abs($from, bz_locations()->{libpath})); + my $to_dir = dirname(File::Spec->rel2abs($to, bz_locations()->{libpath})); + + return css_url_rewrite( + $content, + sub { + my ($url) = @_; + if ( $url =~ m{^(?:/|data:)} ) { + return sprintf 'url(%s)', $url; + } + else { + my $new_url = File::Spec->abs2rel( + Cwd::realpath( + File::Spec->rel2abs( $url, $from_dir ) + ), + $to_dir + ); + return sprintf "url(%s)", $new_url; + } + } + ); +} + sub _remove_empty_css_files { my $skinsdir = bz_locations()->{'skinsdir'}; foreach my $css_file (glob("$skinsdir/custom/*.css"), @@ -623,7 +692,13 @@ sub _create_files { print "Creating $file...\n"; my $fh = IO::File->new( $file, O_WRONLY | O_CREAT, $info->{perms} ) or die "unable to write $file: $!"; - print $fh $info->{contents} if exists $info->{contents}; + my $contents = $info->{contents}; + if (defined $contents && ref($contents) eq 'CODE') { + print $fh $contents->(); + } + elsif (defined $contents) { + print $fh $contents; + } $fh->close; } } diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index b08cffbde..29b1d4a13 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -383,28 +383,23 @@ sub mtime_filter { # Set up the skin CSS cascade: # -# 1. standard/global.css -# 2. YUI CSS +# 1. YUI CSS +# 2. standard/global.css # 3. Standard Bugzilla stylesheet set # 4. Third-party "skin" stylesheet set, per user prefs # 5. Inline css passed to global/header.html.tmpl # 6. Custom Bugzilla stylesheet set sub css_files { - my ($style_urls, $yui, $yui_css) = @_; + my ($style_urls, $no_yui) = @_; # global.css belongs on every page my @requested_css = ( 'skins/standard/global.css', @$style_urls ); - my @yui_required_css; - foreach my $yui_name (@$yui) { - next if !$yui_css->{$yui_name}; - push(@yui_required_css, "js/yui/assets/skins/sam/$yui_name.css"); - } - unshift(@requested_css, @yui_required_css); - + unshift @requested_css, "skins/yui.css" unless $no_yui; + my @css_sets = map { _css_link_set($_) } @requested_css; - + my %by_type = (standard => [], skin => [], custom => []); foreach my $set (@css_sets) { foreach my $key (keys %$set) { diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index ca8187c5f..5337ce940 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -18,7 +18,7 @@ use base qw(Exporter); css_class_quote html_light_quote i_am_cgi i_am_webservice correct_urlbase remote_ip validate_ip do_ssl_redirect_if_required use_attachbase - diff_arrays on_main_db + diff_arrays on_main_db css_url_rewrite trim wrap_hard wrap_comment find_wrap_point format_time validate_date validate_time datetime_from time_ago file_mod_time is_7bit_clean @@ -427,6 +427,12 @@ sub diff_arrays { return (\@removed, \@added); } +sub css_url_rewrite { + my ($content, $callback) = @_; + $content =~ s{(?($2)}eig; + return $content; +} + sub trim { my ($str) = @_; if ($str) { diff --git a/extensions/BMO/template/en/default/bug/create/create-automative.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-automative.html.tmpl index c19bed29b..413532f3f 100644 --- a/extensions/BMO/template/en/default/bug/create/create-automative.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-automative.html.tmpl @@ -87,7 +87,6 @@ function validateAndSubmit() { javascript = inline_javascript javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/field.js', 'js/util.js' ] - yui = [ "calendar", "selector" ] %] [% USE Bugzilla %] diff --git a/extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl index 88e744abe..8825344a3 100644 --- a/extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl @@ -115,7 +115,6 @@ function toggleTypeOther(element) { javascript = inline_javascript javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/field.js', 'js/util.js' ] - yui = [ "calendar" ] %] [% USE Bugzilla %] diff --git a/extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl index f24fd340d..bade9a588 100644 --- a/extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl @@ -69,7 +69,6 @@ javascript_urls = [ 'js/field.js', 'js/util.js', 'extensions/BMO/web/js/form_validate.js' ] - yui = [ 'calendar', 'selector' ] %]

Data Compliance Form

diff --git a/extensions/BMO/template/en/default/bug/create/create-dev-engagement-event.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-dev-engagement-event.html.tmpl index d0d34069b..5742a17e9 100644 --- a/extensions/BMO/template/en/default/bug/create/create-dev-engagement-event.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-dev-engagement-event.html.tmpl @@ -46,7 +46,6 @@ 'js/util.js', 'extensions/BMO/web/js/form_validate.js', 'extensions/BMO/web/js/dev_engagement.js' ] - yui = [ 'calendar' ] %]

Developer Events Request Form

diff --git a/extensions/BMO/template/en/default/bug/create/create-doc.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-doc.html.tmpl index c7f883fb4..0ee909005 100644 --- a/extensions/BMO/template/en/default/bug/create/create-doc.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-doc.html.tmpl @@ -40,7 +40,6 @@ function validateAndSubmit() { javascript = inline_javascript javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/field.js', 'js/util.js', 'js/bug.js' ] - yui = [ 'datatable', 'button' ] %] [% USE Bugzilla %] diff --git a/extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl index c35d66942..502f92c32 100644 --- a/extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl @@ -75,7 +75,6 @@ function validateAndSubmit() { javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/util.js', 'js/field.js' ] - yui = [ 'calendar' ] %]

FSA Budget Request Form

diff --git a/extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl index 89c28f114..b17736ce6 100644 --- a/extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl @@ -170,7 +170,6 @@ strong.required:before { title = "Mozilla Developer Network Feedback" style = inline_style javascript = inline_javascript - yui = [ 'history' ] javascript_urls = [ 'extensions/BMO/web/js/form_validate.js' ] %] diff --git a/extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl index c62d8b99f..975006232 100644 --- a/extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl @@ -274,7 +274,6 @@ function validate_form() { javascript = inline_javascript javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/field.js', 'js/util.js' ] - yui = [ "calendar" ] %] [% UNLESS user.in_group('pr-private') %] diff --git a/extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl index 6742c42db..859d77194 100644 --- a/extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl @@ -508,7 +508,6 @@ function showGear() { javascript = inline_javascript javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/field.js', 'js/util.js' ] - yui = [ 'calendar' ] %]

Mozilla Gear

diff --git a/extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl b/extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl index 23ea0bb86..f15e4f47d 100644 --- a/extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl +++ b/extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl @@ -81,7 +81,6 @@ function toggleGoalOther() { javascript = inline_javascript javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/field.js', 'js/util.js' ] - yui = [ "calendar" ] %] [% USE Bugzilla %] diff --git a/extensions/BMO/template/en/default/pages/attachment_bounty_form.html.tmpl b/extensions/BMO/template/en/default/pages/attachment_bounty_form.html.tmpl index 9b6901330..ffbb1acbc 100644 --- a/extensions/BMO/template/en/default/pages/attachment_bounty_form.html.tmpl +++ b/extensions/BMO/template/en/default/pages/attachment_bounty_form.html.tmpl @@ -124,7 +124,6 @@ function validateAndSubmit() { javascript = inline_javascript javascript_urls = [ 'extensions/BMO/web/js/form_validate.js', 'js/field.js', 'js/util.js' ] - yui = [ "calendar", "selector" ] %] [% USE Bugzilla %] diff --git a/extensions/BMO/template/en/default/pages/group_admins.html.tmpl b/extensions/BMO/template/en/default/pages/group_admins.html.tmpl index c81c95748..cfa3bd3ea 100644 --- a/extensions/BMO/template/en/default/pages/group_admins.html.tmpl +++ b/extensions/BMO/template/en/default/pages/group_admins.html.tmpl @@ -21,7 +21,6 @@ [% INCLUDE global/header.html.tmpl title = "Group Admins Report" style_urls = [ "extensions/BMO/web/styles/reports.css" ] - yui = [ "datasource" ] %] [% IF groups.size > 0 %] diff --git a/extensions/BMO/template/en/default/pages/triage_reports.html.tmpl b/extensions/BMO/template/en/default/pages/triage_reports.html.tmpl index 7958f27d2..05efefca5 100644 --- a/extensions/BMO/template/en/default/pages/triage_reports.html.tmpl +++ b/extensions/BMO/template/en/default/pages/triage_reports.html.tmpl @@ -41,7 +41,6 @@ var selected_components = [ [% INCLUDE global/header.html.tmpl title = "Unconfirmed Reports" generate_api_token = 1 - yui = [ 'calendar' ] javascript = js_data javascript_urls = [ "js/util.js", "js/field.js", "js/productform.js", "extensions/BMO/web/js/triage_reports.js" ] diff --git a/extensions/BMO/template/en/default/pages/user_activity.html.tmpl b/extensions/BMO/template/en/default/pages/user_activity.html.tmpl index ad79b3c4d..d850c91b2 100644 --- a/extensions/BMO/template/en/default/pages/user_activity.html.tmpl +++ b/extensions/BMO/template/en/default/pages/user_activity.html.tmpl @@ -15,7 +15,6 @@ [% INCLUDE global/header.html.tmpl title = "User Activity Report" _ who_title generate_api_token = 1 - yui = [ 'calendar' ] javascript_urls = [ "js/util.js", "js/field.js" ] style_urls = [ "extensions/BMO/web/styles/reports.css" ] diff --git a/extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl b/extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl index ee1ba2931..e4b0b44a8 100644 --- a/extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl +++ b/extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl @@ -18,9 +18,7 @@ title = "Enter A Bug" generate_api_token = 1 javascript_urls = js_urls - style_urls = [ 'extensions/GuidedBugEntry/web/style/guided.css', - 'js/yui/assets/skins/sam/container.css' ] - yui = [ 'history', 'datatable', 'container' ] + style_urls = [ 'extensions/GuidedBugEntry/web/style/guided.css' ] %] diff --git a/extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl b/extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl index eda53ebe4..028d1b9b0 100644 --- a/extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl +++ b/extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl @@ -11,10 +11,10 @@ [% PROCESS global/header.html.tmpl title = "My Dashboard" generate_api_token = 1 - style_urls = [ "extensions/MyDashboard/web/styles/mydashboard.css", + style_urls = [ "skins/yui3.css", + "extensions/MyDashboard/web/styles/mydashboard.css", "extensions/ProdCompSearch/web/styles/prod_comp_search.css" ] - yui = ["json", "connection"], - javascript_urls = [ "js/yui3/yui/yui-min.js", + javascript_urls = [ "js/yui3.js", "extensions/MyDashboard/web/js/query.js", "extensions/MyDashboard/web/js/flags.js", "extensions/ProdCompSearch/web/js/prod_comp_search.js", diff --git a/extensions/MyDashboard/web/js/flags.js b/extensions/MyDashboard/web/js/flags.js index e8c175155..95b256708 100644 --- a/extensions/MyDashboard/web/js/flags.js +++ b/extensions/MyDashboard/web/js/flags.js @@ -7,224 +7,226 @@ */ // Flag tables -YUI({ - base: 'js/yui3/', - combine: false -}).use("node", "datatable", "datatable-sort", "json-stringify", "escape", - "datatable-datasource", "datasource-io", "datasource-jsonschema", function(Y) { - // Common - var counter = 0; - var dataSource = { - requestee: null, - requester: null - }; - var dataTable = { - requestee: null, - requester: null - }; - - var updateFlagTable = function(type) { - if (!type) return; - - counter = counter + 1; - - var callback = { - success: function(e) { - if (e.response) { - Y.one('#' + type + '_count_refresh').removeClass('bz_default_hidden'); - Y.one("#" + type + "_flags_found").setHTML( - e.response.results.length + ' flags found'); - dataTable[type].set('data', e.response.results); +$(function () { + YUI({ + base: 'js/yui3/', + combine: false + }).use("node", "datatable", "datatable-sort", "json-stringify", "escape", + "datatable-datasource", "datasource-io", "datasource-jsonschema", function(Y) { + // Common + var counter = 0; + var dataSource = { + requestee: null, + requester: null + }; + var dataTable = { + requestee: null, + requester: null + }; + + var updateFlagTable = function(type) { + if (!type) return; + + counter = counter + 1; + + var callback = { + success: function(e) { + if (e.response) { + Y.one('#' + type + '_count_refresh').removeClass('bz_default_hidden'); + Y.one("#" + type + "_flags_found").setHTML( + e.response.results.length + ' flags found'); + dataTable[type].set('data', e.response.results); + } + }, + failure: function(o) { + if (o.error) { + alert("Failed to load flag list from Bugzilla:\n\n" + o.error.message); + } else { + alert("Failed to load flag list from Bugzilla."); + } } - }, - failure: function(o) { - if (o.error) { - alert("Failed to load flag list from Bugzilla:\n\n" + o.error.message); - } else { - alert("Failed to load flag list from Bugzilla."); + }; + + var json_object = { + version: "1.1", + method: "MyDashboard.run_flag_query", + id: counter, + params: { type : type, + Bugzilla_api_token : (BUGZILLA.api_token ? BUGZILLA.api_token : '') } + }; + + var stringified = Y.JSON.stringify(json_object); + + Y.one('#' + type + '_count_refresh').addClass('bz_default_hidden'); + + dataTable[type].set('data', []); + dataTable[type].render("#" + type + "_table"); + dataTable[type].showMessage('loadingMessage'); + + dataSource[type].sendRequest({ + request: stringified, + cfg: { + method: "POST", + headers: { 'Content-Type': 'application/json' } + }, + callback: callback + }); + }; + + var loadBugList = function(type) { + if (!type) return; + var data = dataTable[type].data; + var ids = []; + for (var i = 0, l = data.size(); i < l; i++) { + ids.push(data.item(i).get('bug_id')); } + var url = 'buglist.cgi?bug_id=' + ids.join('%2C'); + window.open(url, '_blank'); }; - var json_object = { - version: "1.1", - method: "MyDashboard.run_flag_query", - id: counter, - params: { type : type, - Bugzilla_api_token : (BUGZILLA.api_token ? BUGZILLA.api_token : '') + var bugLinkFormatter = function(o) { + var bug_closed = ""; + if (o.data.bug_status == 'RESOLVED' || o.data.bug_status == 'VERIFIED') { + bug_closed = "bz_closed"; } + return '' + o.value + ''; }; - var stringified = Y.JSON.stringify(json_object); + var updatedFormatter = function(o) { + return '' + + Y.Escape.html(o.data.updated_fancy) + ''; + }; - Y.one('#' + type + '_count_refresh').addClass('bz_default_hidden'); + var requesteeFormatter = function(o) { + return o.value + ? Y.Escape.html(o.value) + : 'anyone'; + }; - dataTable[type].set('data', []); - dataTable[type].render("#" + type + "_table"); - dataTable[type].showMessage('loadingMessage'); + var flagNameFormatter = function(o) { + if (parseInt(o.data.attach_id) + && parseInt(o.data.is_patch) + && MyDashboard.splinter_base) + { + return '' + + Y.Escape.html(o.value) + ''; + } + else { + return Y.Escape.html(o.value); + } + }; - dataSource[type].sendRequest({ - request: stringified, - cfg: { - method: "POST", - headers: { 'Content-Type': 'application/json' } - }, - callback: callback + // Requestee + dataSource.requestee = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); + dataSource.requestee.on('error', function(e) { + try { + var response = Y.JSON.parse(e.data.responseText); + if (response.error) + e.error.message = response.error.message; + } catch(ex) { + // ignore + } + }); + dataTable.requestee = new Y.DataTable({ + columns: [ + { key: "requester", label: "Requester", sortable: true }, + { key: "type", label: "Flag", sortable: true, + formatter: flagNameFormatter, allowHTML: true }, + { key: "bug_id", label: "Bug", sortable: true, + formatter: bugLinkFormatter, allowHTML: true }, + { key: "updated", label: "Updated", sortable: true, + formatter: updatedFormatter, allowHTML: true } + ], + strings: { + emptyMessage: 'No flag data found.', + } }); - }; - - var loadBugList = function(type) { - if (!type) return; - var data = dataTable[type].data; - var ids = []; - for (var i = 0, l = data.size(); i < l; i++) { - ids.push(data.item(i).get('bug_id')); - } - var url = 'buglist.cgi?bug_id=' + ids.join('%2C'); - window.open(url, '_blank'); - }; - - var bugLinkFormatter = function(o) { - var bug_closed = ""; - if (o.data.bug_status == 'RESOLVED' || o.data.bug_status == 'VERIFIED') { - bug_closed = "bz_closed"; - } - return '' + o.value + ''; - }; - - var updatedFormatter = function(o) { - return '' + - Y.Escape.html(o.data.updated_fancy) + ''; - }; - - var requesteeFormatter = function(o) { - return o.value - ? Y.Escape.html(o.value) - : 'anyone'; - }; - - var flagNameFormatter = function(o) { - if (parseInt(o.data.attach_id) - && parseInt(o.data.is_patch) - && MyDashboard.splinter_base) - { - return '' + - Y.Escape.html(o.value) + ''; - } - else { - return Y.Escape.html(o.value); - } - }; - - // Requestee - dataSource.requestee = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); - dataSource.requestee.on('error', function(e) { - try { - var response = Y.JSON.parse(e.data.responseText); - if (response.error) - e.error.message = response.error.message; - } catch(ex) { - // ignore - } - }); - dataTable.requestee = new Y.DataTable({ - columns: [ - { key: "requester", label: "Requester", sortable: true }, - { key: "type", label: "Flag", sortable: true, - formatter: flagNameFormatter, allowHTML: true }, - { key: "bug_id", label: "Bug", sortable: true, - formatter: bugLinkFormatter, allowHTML: true }, - { key: "updated", label: "Updated", sortable: true, - formatter: updatedFormatter, allowHTML: true } - ], - strings: { - emptyMessage: 'No flag data found.', - } - }); - dataTable.requestee.plug(Y.Plugin.DataTableSort); + dataTable.requestee.plug(Y.Plugin.DataTableSort); - dataTable.requestee.plug(Y.Plugin.DataTableDataSource, { - datasource: dataSource.requestee - }); + dataTable.requestee.plug(Y.Plugin.DataTableDataSource, { + datasource: dataSource.requestee + }); - dataSource.requestee.plug(Y.Plugin.DataSourceJSONSchema, { - schema: { - resultListLocator: "result.result.requestee", - resultFields: ["requester", "type", "attach_id", "is_patch", "bug_id", - "bug_status", "bug_summary", "updated", "updated_fancy"] - } - }); + dataSource.requestee.plug(Y.Plugin.DataSourceJSONSchema, { + schema: { + resultListLocator: "result.result.requestee", + resultFields: ["requester", "type", "attach_id", "is_patch", "bug_id", + "bug_status", "bug_summary", "updated", "updated_fancy"] + } + }); - dataTable.requestee.render("#requestee_table"); + dataTable.requestee.render("#requestee_table"); - Y.one('#requestee_refresh').on('click', function(e) { - updateFlagTable('requestee'); - }); - Y.one('#requestee_buglist').on('click', function(e) { - loadBugList('requestee'); - }); + Y.one('#requestee_refresh').on('click', function(e) { + updateFlagTable('requestee'); + }); + Y.one('#requestee_buglist').on('click', function(e) { + loadBugList('requestee'); + }); - // Requester - dataSource.requester = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); - dataSource.requester.on('error', function(e) { - try { - var response = Y.JSON.parse(e.data.responseText); - if (response.error) - e.error.message = response.error.message; - } catch(ex) { - // ignore - } - }); - dataTable.requester = new Y.DataTable({ - columns: [ - { key:"requestee", label:"Requestee", sortable:true, - formatter: requesteeFormatter, allowHTML: true }, - { key:"type", label:"Flag", sortable:true, - formatter: flagNameFormatter, allowHTML: true }, - { key:"bug_id", label:"Bug", sortable:true, - formatter: bugLinkFormatter, allowHTML: true }, - { key: "updated", label: "Updated", sortable: true, - formatter: updatedFormatter, allowHTML: true } - ], - strings: { - emptyMessage: 'No flag data found.', - } - }); + // Requester + dataSource.requester = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); + dataSource.requester.on('error', function(e) { + try { + var response = Y.JSON.parse(e.data.responseText); + if (response.error) + e.error.message = response.error.message; + } catch(ex) { + // ignore + } + }); + dataTable.requester = new Y.DataTable({ + columns: [ + { key:"requestee", label:"Requestee", sortable:true, + formatter: requesteeFormatter, allowHTML: true }, + { key:"type", label:"Flag", sortable:true, + formatter: flagNameFormatter, allowHTML: true }, + { key:"bug_id", label:"Bug", sortable:true, + formatter: bugLinkFormatter, allowHTML: true }, + { key: "updated", label: "Updated", sortable: true, + formatter: updatedFormatter, allowHTML: true } + ], + strings: { + emptyMessage: 'No flag data found.', + } + }); - dataTable.requester.plug(Y.Plugin.DataTableSort); + dataTable.requester.plug(Y.Plugin.DataTableSort); - dataTable.requester.plug(Y.Plugin.DataTableDataSource, { - datasource: dataSource.requester - }); + dataTable.requester.plug(Y.Plugin.DataTableDataSource, { + datasource: dataSource.requester + }); - dataSource.requester.plug(Y.Plugin.DataSourceJSONSchema, { - schema: { - resultListLocator: "result.result.requester", - resultFields: ["requestee", "type", "attach_id", "is_patch", "bug_id", - "bug_status", "bug_summary", "updated", "updated_fancy"] - } - }); + dataSource.requester.plug(Y.Plugin.DataSourceJSONSchema, { + schema: { + resultListLocator: "result.result.requester", + resultFields: ["requestee", "type", "attach_id", "is_patch", "bug_id", + "bug_status", "bug_summary", "updated", "updated_fancy"] + } + }); - // Initial load - Y.on("contentready", function (e) { - updateFlagTable("requestee"); - }, "#requestee_table"); - Y.on("contentready", function (e) { - updateFlagTable("requester"); - }, "#requester_table"); + // Initial load + Y.on("contentready", function (e) { + updateFlagTable("requestee"); + }, "#requestee_table"); + Y.on("contentready", function (e) { + updateFlagTable("requester"); + }, "#requester_table"); - Y.one('#requester_refresh').on('click', function(e) { - updateFlagTable('requester'); - }); - Y.one('#requester_buglist').on('click', function(e) { - loadBugList('requester'); + Y.one('#requester_refresh').on('click', function(e) { + updateFlagTable('requester'); + }); + Y.one('#requester_buglist').on('click', function(e) { + loadBugList('requester'); + }); }); }); diff --git a/extensions/MyDashboard/web/js/query.js b/extensions/MyDashboard/web/js/query.js index 9cea27f87..a95c0be61 100644 --- a/extensions/MyDashboard/web/js/query.js +++ b/extensions/MyDashboard/web/js/query.js @@ -11,274 +11,276 @@ if (typeof(MyDashboard) == 'undefined') { } // Main query code -YUI({ - base: 'js/yui3/', - combine: false, - groups: { - gallery: { - combine: false, - base: 'js/yui3/', - patterns: { 'gallery-': {} } - } - } -}).use("node", "datatable", "datatable-sort", "datatable-message", "json-stringify", - "datatable-datasource", "datasource-io", "datasource-jsonschema", "cookie", - "gallery-datatable-row-expansion-bmo", "handlebars", "escape", function(Y) { - var counter = 0, - bugQueryTable = null, - bugQuery = null, - lastChangesQuery = null, - lastChangesCache = {}, - default_query = "assignedbugs"; - - // Grab last used query name from cookie or use default - var query_cookie = Y.Cookie.get("my_dashboard_query"); - if (query_cookie) { - var cookie_value_found = 0; - Y.one("#query").get("options").each( function() { - if (this.get("value") == query_cookie) { - this.set('selected', true); - default_query = query_cookie; - cookie_value_found = 1; +$(function() { + YUI({ + base: 'js/yui3/', + combine: false, + groups: { + gallery: { + combine: false, + base: 'js/yui3/', + patterns: { 'gallery-': {} } } - }); - if (!cookie_value_found) { - Y.Cookie.set("my_dashboard_query", ""); } - } - - var bugQuery = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); - - bugQuery.plug(Y.Plugin.DataSourceJSONSchema, { - schema: { - resultListLocator: "result.result.bugs", - resultFields: ["bug_id", "changeddate", "changeddate_fancy", - "bug_status", "short_desc", "changeddate_api" ], - metaFields: { - description: "result.result.description", - heading: "result.result.heading", - buffer: "result.result.buffer", - mark_read: "result.result.mark_read" + }).use("node", "datatable", "datatable-sort", "datatable-message", "json-stringify", + "datatable-datasource", "datasource-io", "datasource-jsonschema", "cookie", + "gallery-datatable-row-expansion-bmo", "handlebars", "escape", function(Y) { + var counter = 0, + bugQueryTable = null, + bugQuery = null, + lastChangesQuery = null, + lastChangesCache = {}, + default_query = "assignedbugs"; + + // Grab last used query name from cookie or use default + var query_cookie = Y.Cookie.get("my_dashboard_query"); + if (query_cookie) { + var cookie_value_found = 0; + Y.one("#query").get("options").each( function() { + if (this.get("value") == query_cookie) { + this.set('selected', true); + default_query = query_cookie; + cookie_value_found = 1; + } + }); + if (!cookie_value_found) { + Y.Cookie.set("my_dashboard_query", ""); } } - }); - bugQuery.on('error', function(e) { - try { - var response = Y.JSON.parse(e.data.responseText); - if (response.error) - e.error.message = response.error.message; - } catch(ex) { - // ignore - } - }); - - var bugQueryCallback = { - success: function(e) { - if (e.response) { - Y.one('#query_count_refresh').removeClass('bz_default_hidden'); - Y.one("#query_container .query_description").setHTML(e.response.meta.description); - Y.one("#query_container .query_heading").setHTML(e.response.meta.heading); - Y.one("#query_bugs_found").setHTML( - '' + e.response.results.length + ' bugs found'); - bugQueryTable.set('data', e.response.results); - - var mark_read = e.response.meta.mark_read; - if (mark_read) { - Y.one('#query_markread').setHTML( mark_read ); - Y.one('#bar_markread').removeClass('bz_default_hidden'); - Y.one('#query_markread_text').setHTML( mark_read ); - Y.one('#query_markread').removeClass('bz_default_hidden'); - } - else { - Y.one('#bar_markread').addClass('bz_default_hidden'); - Y.one('#query_markread').addClass('bz_default_hidden'); + var bugQuery = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); + + bugQuery.plug(Y.Plugin.DataSourceJSONSchema, { + schema: { + resultListLocator: "result.result.bugs", + resultFields: ["bug_id", "changeddate", "changeddate_fancy", + "bug_status", "short_desc", "changeddate_api" ], + metaFields: { + description: "result.result.description", + heading: "result.result.heading", + buffer: "result.result.buffer", + mark_read: "result.result.mark_read" } - Y.one('#query_markread_text').addClass('bz_default_hidden'); } - }, - failure: function(o) { - if (o.error) { - alert("Failed to load bug list from Bugzilla:\n\n" + o.error.message); - } else { - alert("Failed to load bug list from Bugzilla."); + }); + + bugQuery.on('error', function(e) { + try { + var response = Y.JSON.parse(e.data.responseText); + if (response.error) + e.error.message = response.error.message; + } catch(ex) { + // ignore } - } - }; + }); - var updateQueryTable = function(query_name) { - if (!query_name) return; + var bugQueryCallback = { + success: function(e) { + if (e.response) { + Y.one('#query_count_refresh').removeClass('bz_default_hidden'); + Y.one("#query_container .query_description").setHTML(e.response.meta.description); + Y.one("#query_container .query_heading").setHTML(e.response.meta.heading); + Y.one("#query_bugs_found").setHTML( + '' + e.response.results.length + ' bugs found'); + bugQueryTable.set('data', e.response.results); + + var mark_read = e.response.meta.mark_read; + if (mark_read) { + Y.one('#query_markread').setHTML( mark_read ); + Y.one('#bar_markread').removeClass('bz_default_hidden'); + Y.one('#query_markread_text').setHTML( mark_read ); + Y.one('#query_markread').removeClass('bz_default_hidden'); + } + else { + Y.one('#bar_markread').addClass('bz_default_hidden'); + Y.one('#query_markread').addClass('bz_default_hidden'); + } + Y.one('#query_markread_text').addClass('bz_default_hidden'); + } + }, + failure: function(o) { + if (o.error) { + alert("Failed to load bug list from Bugzilla:\n\n" + o.error.message); + } else { + alert("Failed to load bug list from Bugzilla."); + } + } + }; - counter = counter + 1; - lastChangesCache = {}; + var updateQueryTable = function(query_name) { + if (!query_name) return; - Y.one('#query_count_refresh').addClass('bz_default_hidden'); - bugQueryTable.set('data', []); - bugQueryTable.render("#query_table"); - bugQueryTable.showMessage('loadingMessage'); + counter = counter + 1; + lastChangesCache = {}; - var bugQueryParams = { - version: "1.1", - method: "MyDashboard.run_bug_query", - id: counter, - params: { query : query_name, - Bugzilla_api_token : (BUGZILLA.api_token ? BUGZILLA.api_token : '') - } - }; + Y.one('#query_count_refresh').addClass('bz_default_hidden'); + bugQueryTable.set('data', []); + bugQueryTable.render("#query_table"); + bugQueryTable.showMessage('loadingMessage'); - bugQuery.sendRequest({ - request: Y.JSON.stringify(bugQueryParams), - cfg: { - method: "POST", - headers: { 'Content-Type': 'application/json' } - }, - callback: bugQueryCallback - }); - }; + var bugQueryParams = { + version: "1.1", + method: "MyDashboard.run_bug_query", + id: counter, + params: { query : query_name, + Bugzilla_api_token : (BUGZILLA.api_token ? BUGZILLA.api_token : '') + } + }; - var updatedFormatter = function(o) { - return '' + - Y.Escape.html(o.data.changeddate_fancy) + ''; - }; + bugQuery.sendRequest({ + request: Y.JSON.stringify(bugQueryParams), + cfg: { + method: "POST", + headers: { 'Content-Type': 'application/json' } + }, + callback: bugQueryCallback + }); + }; + var updatedFormatter = function(o) { + return '' + + Y.Escape.html(o.data.changeddate_fancy) + ''; + }; - lastChangesQuery = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); - lastChangesQuery.plug(Y.Plugin.DataSourceJSONSchema, { - schema: { - resultListLocator: "result.results", - resultFields: ["last_changes"], - } - }); + lastChangesQuery = new Y.DataSource.IO({ source: 'jsonrpc.cgi' }); - lastChangesQuery.on('error', function(e) { - try { - var response = Y.JSON.parse(e.data.responseText); - if (response.error) - e.error.message = response.error.message; - } catch(ex) { - // ignore - } - }); + lastChangesQuery.plug(Y.Plugin.DataSourceJSONSchema, { + schema: { + resultListLocator: "result.results", + resultFields: ["last_changes"], + } + }); - bugQueryTable = new Y.DataTable({ - columns: [ - { key: Y.Plugin.DataTableRowExpansion.column_key, label: ' ', sortable: false }, - { key: "bug_id", label: "Bug", allowHTML: true, sortable: true, - formatter: '{value}' }, - { key: "changeddate", label: "Updated", formatter: updatedFormatter, - allowHTML: true, sortable: true }, - { key: "bug_status", label: "Status", sortable: true }, - { key: "short_desc", label: "Summary", sortable: true }, - ], - }); + lastChangesQuery.on('error', function(e) { + try { + var response = Y.JSON.parse(e.data.responseText); + if (response.error) + e.error.message = response.error.message; + } catch(ex) { + // ignore + } + }); - var last_changes_source = Y.one('#last-changes-template').getHTML(), - last_changes_template = Y.Handlebars.compile(last_changes_source); + bugQueryTable = new Y.DataTable({ + columns: [ + { key: Y.Plugin.DataTableRowExpansion.column_key, label: ' ', sortable: false }, + { key: "bug_id", label: "Bug", allowHTML: true, sortable: true, + formatter: '{value}' }, + { key: "changeddate", label: "Updated", formatter: updatedFormatter, + allowHTML: true, sortable: true }, + { key: "bug_status", label: "Status", sortable: true }, + { key: "short_desc", label: "Summary", sortable: true }, + ], + }); - var stub_source = Y.one('#last-changes-stub').getHTML(), - stub_template = Y.Handlebars.compile(stub_source); + var last_changes_source = Y.one('#last-changes-template').getHTML(), + last_changes_template = Y.Handlebars.compile(last_changes_source); + var stub_source = Y.one('#last-changes-stub').getHTML(), + stub_template = Y.Handlebars.compile(stub_source); - bugQueryTable.plug(Y.Plugin.DataTableRowExpansion, { - uniqueIdKey: 'bug_id', - template: function(data) { - var bug_id = data.bug_id; - var lastChangesCallback = { - success: function(e) { - if (e.response) { - var last_changes = e.response.results[0].last_changes; - last_changes['bug_id'] = bug_id; - lastChangesCache[bug_id] = last_changes; - Y.one('#last_changes_stub_' + bug_id).setHTML(last_changes_template(last_changes)); - } - }, - failure: function(o) { - if (o.error) { - alert("Failed to load last changes from Bugzilla:\n\n" + o.error.message); - } else { - alert("Failed to load last changes from Bugzilla."); - } - } - }; + bugQueryTable.plug(Y.Plugin.DataTableRowExpansion, { + uniqueIdKey: 'bug_id', + template: function(data) { + var bug_id = data.bug_id; - if (!lastChangesCache[bug_id]) { - var lastChangesParams = { - version: "1.1", - method: "MyDashboard.run_last_changes", - params: { - bug_id: data.bug_id, - changeddate_api: data.changeddate_api, - Bugzilla_api_token : (BUGZILLA.api_token ? BUGZILLA.api_token : '') + var lastChangesCallback = { + success: function(e) { + if (e.response) { + var last_changes = e.response.results[0].last_changes; + last_changes['bug_id'] = bug_id; + lastChangesCache[bug_id] = last_changes; + Y.one('#last_changes_stub_' + bug_id).setHTML(last_changes_template(last_changes)); + } + }, + failure: function(o) { + if (o.error) { + alert("Failed to load last changes from Bugzilla:\n\n" + o.error.message); + } else { + alert("Failed to load last changes from Bugzilla."); + } } }; - lastChangesQuery.sendRequest({ - request: Y.JSON.stringify(lastChangesParams), - cfg: { - method: "POST", - headers: { 'Content-Type': 'application/json' } - }, - callback: lastChangesCallback - }); + if (!lastChangesCache[bug_id]) { + var lastChangesParams = { + version: "1.1", + method: "MyDashboard.run_last_changes", + params: { + bug_id: data.bug_id, + changeddate_api: data.changeddate_api, + Bugzilla_api_token : (BUGZILLA.api_token ? BUGZILLA.api_token : '') + } + }; + + lastChangesQuery.sendRequest({ + request: Y.JSON.stringify(lastChangesParams), + cfg: { + method: "POST", + headers: { 'Content-Type': 'application/json' } + }, + callback: lastChangesCallback + }); + + return stub_template({bug_id: bug_id}); + } + else { + return last_changes_template(lastChangesCache[bug_id]); + } - return stub_template({bug_id: bug_id}); - } - else { - return last_changes_template(lastChangesCache[bug_id]); } + }); - } - }); - - bugQueryTable.plug(Y.Plugin.DataTableSort); + bugQueryTable.plug(Y.Plugin.DataTableSort); - bugQueryTable.plug(Y.Plugin.DataTableDataSource, { - datasource: bugQuery - }); + bugQueryTable.plug(Y.Plugin.DataTableDataSource, { + datasource: bugQuery + }); - // Initial load - Y.on("contentready", function (e) { - updateQueryTable(default_query); - }, "#query_table"); + // Initial load + Y.on("contentready", function (e) { + updateQueryTable(default_query); + }, "#query_table"); - Y.one('#query').on('change', function(e) { - var index = e.target.get('selectedIndex'); - var selected_value = e.target.get("options").item(index).getAttribute('value'); - updateQueryTable(selected_value); - Y.Cookie.set("my_dashboard_query", selected_value, { expires: new Date("January 12, 2025") }); - }); + Y.one('#query').on('change', function(e) { + var index = e.target.get('selectedIndex'); + var selected_value = e.target.get("options").item(index).getAttribute('value'); + updateQueryTable(selected_value); + Y.Cookie.set("my_dashboard_query", selected_value, { expires: new Date("January 12, 2025") }); + }); - Y.one('#query_refresh').on('click', function(e) { - var query_select = Y.one('#query'); - var index = query_select.get('selectedIndex'); - var selected_value = query_select.get("options").item(index).getAttribute('value'); - updateQueryTable(selected_value); - }); + Y.one('#query_refresh').on('click', function(e) { + var query_select = Y.one('#query'); + var index = query_select.get('selectedIndex'); + var selected_value = query_select.get("options").item(index).getAttribute('value'); + updateQueryTable(selected_value); + }); - Y.one('#query_markread').on('click', function(e) { - var data = bugQueryTable.data; - var bug_ids = []; + Y.one('#query_markread').on('click', function(e) { + var data = bugQueryTable.data; + var bug_ids = []; - Y.one('#query_markread').addClass('bz_default_hidden'); - Y.one('#query_markread_text').removeClass('bz_default_hidden'); + Y.one('#query_markread').addClass('bz_default_hidden'); + Y.one('#query_markread_text').removeClass('bz_default_hidden'); - for (var i = 0, l = data.size(); i < l; i++) { - bug_ids.push(data.item(i).get('bug_id')); - } - YAHOO.bugzilla.bugUserLastVisit.update(bug_ids); - YAHOO.bugzilla.bugInterest.unmark(bug_ids); - }); + for (var i = 0, l = data.size(); i < l; i++) { + bug_ids.push(data.item(i).get('bug_id')); + } + YAHOO.bugzilla.bugUserLastVisit.update(bug_ids); + YAHOO.bugzilla.bugInterest.unmark(bug_ids); + }); - Y.one('#query_buglist').on('click', function(e) { - var data = bugQueryTable.data; - var ids = []; - for (var i = 0, l = data.size(); i < l; i++) { - ids.push(data.item(i).get('bug_id')); - } - var url = 'buglist.cgi?bug_id=' + ids.join('%2C'); - window.open(url, '_blank'); + Y.one('#query_buglist').on('click', function(e) { + var data = bugQueryTable.data; + var ids = []; + for (var i = 0, l = data.size(); i < l; i++) { + ids.push(data.item(i).get('bug_id')); + } + var url = 'buglist.cgi?bug_id=' + ids.join('%2C'); + window.open(url, '_blank'); + }); }); }); diff --git a/extensions/ProductDashboard/template/en/default/pages/productdashboard.html.tmpl b/extensions/ProductDashboard/template/en/default/pages/productdashboard.html.tmpl index 3a01f879f..413239b6c 100644 --- a/extensions/ProductDashboard/template/en/default/pages/productdashboard.html.tmpl +++ b/extensions/ProductDashboard/template/en/default/pages/productdashboard.html.tmpl @@ -8,15 +8,14 @@ [% PROCESS global/variables.none.tmpl %] -[% javascript_urls = [ "js/yui3/yui/yui-min.js", +[% javascript_urls = [ "js/yui3.js", "js/util.js", "js/field.js" ] %] [% IF current_tab_name == 'summary' %] [% javascript_urls.push("extensions/ProductDashboard/web/js/summary.js") %] - [% ELSIF current_tab_name == 'recents' %] - [% yui = [ "calendar" ] %] +[% ELSIF current_tab_name == 'recents' %] [% javascript_urls.push("js/field.js") %] [% javascript_urls.push("js/util.js") %] [% javascript_urls.push("extensions/ProductDashboard/web/js/recents.js") %] @@ -46,8 +45,8 @@ title = "Product Dashboard: $filtered_product" generate_api_token = 1 javascript = js - style_urls = [ "skins/standard/buglist.css", - "js/yui/assets/skins/sam/paginator.css", + style_urls = [ "skins/yui3.css", + "skins/standard/buglist.css", "extensions/ProductDashboard/web/styles/productdashboard.css" ] %] diff --git a/extensions/ProductDashboard/web/js/components.js b/extensions/ProductDashboard/web/js/components.js index 8b0d28587..0c48576a7 100644 --- a/extensions/ProductDashboard/web/js/components.js +++ b/extensions/ProductDashboard/web/js/components.js @@ -6,85 +6,87 @@ * defined by the Mozilla Public License, v. 2.0. */ -YUI({ - base: 'js/yui3/', - combine: false -}).use("datatable", "datatable-sort", "escape", function(Y) { - if (typeof PD.updated_recently != 'undefined') { - var columns = [ - { key:"id", label:"ID", sortable:true, allowHTML: true, - formatter: '{value}' }, - { key:"bug_status", label:"Status", sortable:true }, - { key:"version", label:"Version", sortable:true }, - { key:"component", label:"Component", sortable:true }, - { key:"severity", label:"Severity", sortable:true }, - { key:"summary", label:"Summary", sortable:false }, - ]; +$(function() { + YUI({ + base: 'js/yui3/', + combine: false + }).use("datatable", "datatable-sort", "escape", function(Y) { + if (typeof PD.updated_recently != 'undefined') { + var columns = [ + { key:"id", label:"ID", sortable:true, allowHTML: true, + formatter: '{value}' }, + { key:"bug_status", label:"Status", sortable:true }, + { key:"version", label:"Version", sortable:true }, + { key:"component", label:"Component", sortable:true }, + { key:"severity", label:"Severity", sortable:true }, + { key:"summary", label:"Summary", sortable:false }, + ]; - var updatedRecentlyDataTable = new Y.DataTable({ - columns: columns, - data: PD.updated_recently - }); - updatedRecentlyDataTable.render("#updated_recently"); - - if (typeof PD.past_due != 'undefined') { - var pastDueDataTable = new Y.DataTable({ + var updatedRecentlyDataTable = new Y.DataTable({ columns: columns, - data: PD.past_due + data: PD.updated_recently }); - pastDueDataTable.render('#past_due'); - } - } + updatedRecentlyDataTable.render("#updated_recently"); - if (typeof PD.component_counts != 'undefined') { - var summary_url = '' + - Y.Escape.html(o.value) + '' - } - }, - { key:"count", label:"Count", sortable:true }, - { key:"percentage", label:"Percentage", sortable:false, allowHTML: true, - formatter: '
{value}%
' }, - { key:"link", label:"Link", sortable:false, allowHTML: true } - ]; + if (typeof PD.past_due != 'undefined') { + var pastDueDataTable = new Y.DataTable({ + columns: columns, + data: PD.past_due + }); + pastDueDataTable.render('#past_due'); + } + } - var componentsDataTable = new Y.DataTable({ - columns: columns, - data: PD.component_counts - }); - componentsDataTable.render("#component_counts"); + if (typeof PD.component_counts != 'undefined') { + var summary_url = '' + - Y.Escape.html(o.value) + ''; - }; + var columns = [ + { key:"name", label:"Name", sortable:true, allowHTML: true, + formatter: function (o) { + return summary_url + '&component=' + + encodeURIComponent(o.value) + '">' + + Y.Escape.html(o.value) + '' + } + }, + { key:"count", label:"Count", sortable:true }, + { key:"percentage", label:"Percentage", sortable:false, allowHTML: true, + formatter: '
{value}%
' }, + { key:"link", label:"Link", sortable:false, allowHTML: true } + ]; - var versionsDataTable = new Y.DataTable({ - columns: columns, - data: PD.version_counts - }); - versionsDataTable.render('#version_counts'); + var componentsDataTable = new Y.DataTable({ + columns: columns, + data: PD.component_counts + }); + componentsDataTable.render("#component_counts"); - if (typeof PD.milestone_counts != 'undefined') { columns[0].formatter = function (o) { - return summary_url + '&target_milestone=' + - encodeURIComponent(o.value) + '">' + - Y.Escape.html(o.value) + ''; + return summary_url + '&version=' + + encodeURIComponent(o.value) + '">' + + Y.Escape.html(o.value) + ''; }; - var milestonesDataTable = new Y.DataTable({ + var versionsDataTable = new Y.DataTable({ columns: columns, - data: PD.milestone_counts + data: PD.version_counts }); - milestonesDataTable.render('#milestone_counts'); + versionsDataTable.render('#version_counts'); + + if (typeof PD.milestone_counts != 'undefined') { + columns[0].formatter = function (o) { + return summary_url + '&target_milestone=' + + encodeURIComponent(o.value) + '">' + + Y.Escape.html(o.value) + ''; + }; + + var milestonesDataTable = new Y.DataTable({ + columns: columns, + data: PD.milestone_counts + }); + milestonesDataTable.render('#milestone_counts'); + } } - } + }); }); diff --git a/extensions/ProductDashboard/web/js/duplicates.js b/extensions/ProductDashboard/web/js/duplicates.js index 5e3193a65..57f890d6e 100644 --- a/extensions/ProductDashboard/web/js/duplicates.js +++ b/extensions/ProductDashboard/web/js/duplicates.js @@ -6,23 +6,25 @@ * defined by the Mozilla Public License, v. 2.0. */ -YUI({ - base: 'js/yui3/', - combine: false -}).use("datatable", "datatable-sort", function (Y) { - var column_defs = [ - { key:"id", label:"ID", sortable:true, allowHTML: true, - formatter: '{value}' }, - { key:"count", label:"Count", sortable:true }, - { key:"status", label:"Status", sortable:true }, - { key:"version", label:"Version", sortable:true }, - { key:"component", label:"Component", sortable:true }, - { key:"severity", label:"Severity", sortable:true }, - { key:"summary", label:"Summary", sortable:false }, - ]; +$(function() { + YUI({ + base: 'js/yui3/', + combine: false + }).use("datatable", "datatable-sort", function (Y) { + var column_defs = [ + { key:"id", label:"ID", sortable:true, allowHTML: true, + formatter: '{value}' }, + { key:"count", label:"Count", sortable:true }, + { key:"status", label:"Status", sortable:true }, + { key:"version", label:"Version", sortable:true }, + { key:"component", label:"Component", sortable:true }, + { key:"severity", label:"Severity", sortable:true }, + { key:"summary", label:"Summary", sortable:false }, + ]; - var duplicatesDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.duplicates - }).render('#duplicates'); + var duplicatesDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.duplicates + }).render('#duplicates'); + }); }); diff --git a/extensions/ProductDashboard/web/js/popularity.js b/extensions/ProductDashboard/web/js/popularity.js index b78b67867..d496481fa 100644 --- a/extensions/ProductDashboard/web/js/popularity.js +++ b/extensions/ProductDashboard/web/js/popularity.js @@ -6,23 +6,25 @@ * defined by the Mozilla Public License, v. 2.0. */ -YUI({ - base: 'js/yui3/', - combine: false -}).use("datatable", "datatable-sort", function (Y) { - var column_defs = [ - { key:"id", label:"ID", sortable:true, allowHTML: true, - formatter: '{value}' }, - { key:"count", label:"Count", sortable:true }, - { key:"status", label:"Status", sortable:true }, - { key:"version", label:"Version", sortable:true }, - { key:"component", label:"Component", sortable:true }, - { key:"severity", label:"Severity", sortable:true }, - { key:"summary", label:"Summary", sortable:false }, - ]; +$(function() { + YUI({ + base: 'js/yui3/', + combine: false + }).use("datatable", "datatable-sort", function (Y) { + var column_defs = [ + { key:"id", label:"ID", sortable:true, allowHTML: true, + formatter: '{value}' }, + { key:"count", label:"Count", sortable:true }, + { key:"status", label:"Status", sortable:true }, + { key:"version", label:"Version", sortable:true }, + { key:"component", label:"Component", sortable:true }, + { key:"severity", label:"Severity", sortable:true }, + { key:"summary", label:"Summary", sortable:false }, + ]; - var popularityDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.popularity - }).render('#popularity'); + var popularityDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.popularity + }).render('#popularity'); + }); }); diff --git a/extensions/ProductDashboard/web/js/recents.js b/extensions/ProductDashboard/web/js/recents.js index 84e1758b6..d3a596c64 100644 --- a/extensions/ProductDashboard/web/js/recents.js +++ b/extensions/ProductDashboard/web/js/recents.js @@ -6,27 +6,29 @@ * defined by the Mozilla Public License, v. 2.0. */ -YUI({ - base: 'js/yui3/', - combine: false -}).use("datatable", "datatable-sort", function (Y) { - var column_defs = [ - { key:"id", label:"ID", sortable:true, allowHTML: true, - formatter: '{value}' }, - { key:"status", label:"Status", sortable:true }, - { key:"version", label:"Version", sortable:true }, - { key:"component", label:"Component", sortable:true }, - { key:"severity", label:"Severity", sortable:true }, - { key:"summary", label:"Summary", sortable:false }, - ]; +$(function () { + YUI({ + base: 'js/yui3/', + combine: false + }).use("datatable", "datatable-sort", function (Y) { + var column_defs = [ + { key:"id", label:"ID", sortable:true, allowHTML: true, + formatter: '{value}' }, + { key:"status", label:"Status", sortable:true }, + { key:"version", label:"Version", sortable:true }, + { key:"component", label:"Component", sortable:true }, + { key:"severity", label:"Severity", sortable:true }, + { key:"summary", label:"Summary", sortable:false }, + ]; - var recentlyOpenedDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.recents.opened - }).render('#recently_opened'); + var recentlyOpenedDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.recents.opened + }).render('#recently_opened'); - var recentlyClosedDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.recents.closed - }).render('#recently_closed'); + var recentlyClosedDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.recents.closed + }).render('#recently_closed'); + }); }); diff --git a/extensions/ProductDashboard/web/js/roadmap.js b/extensions/ProductDashboard/web/js/roadmap.js index 1bef5b091..466446c13 100644 --- a/extensions/ProductDashboard/web/js/roadmap.js +++ b/extensions/ProductDashboard/web/js/roadmap.js @@ -6,19 +6,21 @@ * defined by the Mozilla Public License, v. 2.0. */ -YUI({ - base: 'js/yui3/', - combine: false -}).use("datatable", "datatable-sort", function (Y) { - var column_defs = [ - { key: 'name', label: 'Name', sortable: true }, - { key: 'percentage', label: 'Percentage', sortable: false, allowHTML: true, - formatter: '
{value}%
' }, - { key: 'link', label: 'Links', allowHTML: true, sortable: false } - ]; +$(function() { + YUI({ + base: 'js/yui3/', + combine: false + }).use("datatable", "datatable-sort", function (Y) { + var column_defs = [ + { key: 'name', label: 'Name', sortable: true }, + { key: 'percentage', label: 'Percentage', sortable: false, allowHTML: true, + formatter: '
{value}%
' }, + { key: 'link', label: 'Links', allowHTML: true, sortable: false } + ]; - var roadmapDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.roadmap, - }).render('#bug_milestones'); + var roadmapDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.roadmap, + }).render('#bug_milestones'); + }); }); diff --git a/extensions/ProductDashboard/web/js/summary.js b/extensions/ProductDashboard/web/js/summary.js index 59d000d7b..c4501200a 100644 --- a/extensions/ProductDashboard/web/js/summary.js +++ b/extensions/ProductDashboard/web/js/summary.js @@ -6,40 +6,42 @@ * defined by the Mozilla Public License, v. 2.0. */ -YUI({ - base: 'js/yui3/', - combine: false -}).use("datatable", "datatable-sort", function (Y) { - var column_defs = [ - { key: 'name', label: 'Name', sortable: true }, - { key: 'count', label: 'Count', sortable: true }, - { key: 'percentage', label: 'Percentage', sortable: true, allowHTML: true, - formatter: '
{value}%
' }, - { key: 'link', label: 'Link', allowHTML: true } - ]; +$(function() { + YUI({ + base: 'js/yui3/', + combine: false + }).use("datatable", "datatable-sort", function (Y) { + var column_defs = [ + { key: 'name', label: 'Name', sortable: true }, + { key: 'count', label: 'Count', sortable: true }, + { key: 'percentage', label: 'Percentage', sortable: true, allowHTML: true, + formatter: '
{value}%
' }, + { key: 'link', label: 'Link', allowHTML: true } + ]; - var bugsCountDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.summary.bug_counts - }).render('#bug_counts'); + var bugsCountDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.summary.bug_counts + }).render('#bug_counts'); - var statusCountsDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.summary.status_counts - }).render('#status_counts'); + var statusCountsDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.summary.status_counts + }).render('#status_counts'); - var priorityCountsDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.summary.priority_counts - }).render('#priority_counts'); + var priorityCountsDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.summary.priority_counts + }).render('#priority_counts'); - var severityCountsDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.summary.severity_counts - }).render('#severity_counts'); + var severityCountsDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.summary.severity_counts + }).render('#severity_counts'); - var assigneeCountsDataTable = new Y.DataTable({ - columns: column_defs, - data: PD.summary.assignee_counts - }).render('#assignee_counts'); + var assigneeCountsDataTable = new Y.DataTable({ + columns: column_defs, + data: PD.summary.assignee_counts + }).render('#assignee_counts'); + }); }); diff --git a/extensions/REMO/template/en/default/bug/create/create-remo-budget.html.tmpl b/extensions/REMO/template/en/default/bug/create/create-remo-budget.html.tmpl index f1453c356..571fbb0e1 100644 --- a/extensions/REMO/template/en/default/bug/create/create-remo-budget.html.tmpl +++ b/extensions/REMO/template/en/default/bug/create/create-remo-budget.html.tmpl @@ -15,7 +15,6 @@ javascript_urls = [ 'extensions/REMO/web/js/form_validate.js', 'js/util.js', 'js/field.js' ] - yui = [ 'calendar' ] %] [% IF user.in_group("mozilla-reps") %] diff --git a/extensions/REMO/template/en/default/bug/create/create-remo-swag.html.tmpl b/extensions/REMO/template/en/default/bug/create/create-remo-swag.html.tmpl index 0e2637cf3..85f21cf33 100644 --- a/extensions/REMO/template/en/default/bug/create/create-remo-swag.html.tmpl +++ b/extensions/REMO/template/en/default/bug/create/create-remo-swag.html.tmpl @@ -16,7 +16,6 @@ 'js/field.js', 'js/util.js' ] style_urls = [ "extensions/REMO/web/styles/moz_reps.css" ] - yui = [ 'calendar' ] %] [% IF !user.in_group("mozilla-reps") %] diff --git a/extensions/REMO/template/en/default/pages/remo-form-payment.html.tmpl b/extensions/REMO/template/en/default/pages/remo-form-payment.html.tmpl index a37df1f89..acf4a98d6 100644 --- a/extensions/REMO/template/en/default/pages/remo-form-payment.html.tmpl +++ b/extensions/REMO/template/en/default/pages/remo-form-payment.html.tmpl @@ -28,7 +28,6 @@ 'extensions/REMO/web/js/payment.js', 'js/util.js', 'js/field.js' ] - yui = ['connection', 'json'] %] diff --git a/extensions/Splinter/template/en/default/pages/splinter.html.tmpl b/extensions/Splinter/template/en/default/pages/splinter.html.tmpl index 9ecaded3f..c2640b422 100644 --- a/extensions/Splinter/template/en/default/pages/splinter.html.tmpl +++ b/extensions/Splinter/template/en/default/pages/splinter.html.tmpl @@ -27,17 +27,9 @@ title = "Patch Review" generate_api_token = 1 header = "Patch Review" - style_urls = [ "js/yui/assets/skins/sam/container.css", - "js/yui/assets/skins/sam/button.css", - "js/yui/assets/skins/sam/datatable.css", - "extensions/Splinter/web/splinter.css", + style_urls = [ "extensions/Splinter/web/splinter.css", "skins/custom/bug_groups.css" ] - javascript_urls = [ "js/yui/element/element-min.js", - "js/yui/container/container-min.js", - "js/yui/button/button-min.js", - "js/yui/json/json-min.js", - "js/yui/datasource/datasource-min.js", - "js/yui/datatable/datatable-min.js", + javascript_urls = [ "js/yui.js", "extensions/Splinter/web/splinter.js", "js/field.js" ] bodyclasses = bodyclasses diff --git a/js/yui.js.list b/js/yui.js.list new file mode 100644 index 000000000..c8c90f7f4 --- /dev/null +++ b/js/yui.js.list @@ -0,0 +1,12 @@ +js/yui/yahoo-dom-event/yahoo-dom-event-min.js +js/yui/cookie/cookie-min.js +js/yui/connection/connection-min.js +js/yui/json/json-min.js +js/yui/selector/selector-min.js +js/yui/element/element-min.js +js/yui/container/container-min.js +js/yui/calendar/calendar-min.js +js/yui/history/history-min.js +js/yui/button/button-min.js +js/yui/datasource/datasource-min.js +js/yui/datatable/datatable-min.js diff --git a/js/yui/yahoo-dom-event/yahoo-dom-event-min.js b/js/yui/yahoo-dom-event/yahoo-dom-event-min.js new file mode 100644 index 000000000..46c58bfed --- /dev/null +++ b/js/yui/yahoo-dom-event/yahoo-dom-event-min.js @@ -0,0 +1,14 @@ +/* +Copyright (c) 2011, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.com/yui/license.html +version: 2.9.0 +*/ +if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var b=arguments,g=null,e,c,f;for(e=0;e":">",'"':""","'":"'","/":"/","`":"`"},d=["toString","valueOf"],e={isArray:function(j){return a.toString.apply(j)===c;},isBoolean:function(j){return typeof j==="boolean";},isFunction:function(j){return(typeof j==="function")||a.toString.apply(j)===h;},isNull:function(j){return j===null;},isNumber:function(j){return typeof j==="number"&&isFinite(j);},isObject:function(j){return(j&&(typeof j==="object"||f.isFunction(j)))||false;},isString:function(j){return typeof j==="string";},isUndefined:function(j){return typeof j==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(l,k){var j,n,m;for(j=0;j"'\/`]/g,function(k){return g[k];});},extend:function(m,n,l){if(!n||!m){throw new Error("extend failed, please check that "+"all dependencies are included.");}var k=function(){},j;k.prototype=n.prototype;m.prototype=new k();m.prototype.constructor=m;m.superclass=n.prototype;if(n.prototype.constructor==a.constructor){n.prototype.constructor=n;}if(l){for(j in l){if(f.hasOwnProperty(l,j)){m.prototype[j]=l[j];}}f._IEEnumFix(m.prototype,l);}},augmentObject:function(n,m){if(!m||!n){throw new Error("Absorb failed, verify dependencies.");}var j=arguments,l,o,k=j[2];if(k&&k!==true){for(l=2;l0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}if(r.length>1){r.pop();}r.push("]");}else{r.push("{");for(l in j){if(f.hasOwnProperty(j,l)){r.push(l+m);if(f.isObject(j[l])){r.push((p>0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}}if(r.length>1){r.pop();}r.push("}");}return r.join("");},substitute:function(x,y,E,l){var D,C,B,G,t,u,F=[],p,z=x.length,A="dump",r=" ",q="{",m="}",n,w;for(;;){D=x.lastIndexOf(q,z);if(D<0){break;}C=x.indexOf(m,D);if(D+1>C){break;}p=x.substring(D+1,C);G=p;u=null;B=G.indexOf(r);if(B>-1){u=G.substring(B+1);G=G.substring(0,B);}t=y[G];if(E){t=E(G,t,u);}if(f.isObject(t)){if(f.isArray(t)){t=f.dump(t,parseInt(u,10));}else{u=u||"";n=u.indexOf(A);if(n>-1){u=u.substring(4);}w=t.toString();if(w===i||n>-1){t=f.dump(t,parseInt(u,10));}else{t=w;}}}else{if(!f.isString(t)&&!f.isNumber(t)){t="~-"+F.length+"-~";F[F.length]=p;}}x=x.substring(0,D)+t+x.substring(C+1);if(l===false){z=D-1;}}for(D=F.length-1;D>=0;D=D-1){x=x.replace(new RegExp("~-"+D+"-~"),"{"+F[D]+"}","g");}return x;},trim:function(j){try{return j.replace(/^\s+|\s+$/g,"");}catch(k){return j; +}},merge:function(){var n={},k=arguments,j=k.length,m;for(m=0;m-1;}}else{}return G;},addClass:function(W,G){return e.Dom.batch(W,e.Dom._addClass,G);},_addClass:function(X,W){var G=false,Y;if(X&&W){Y=e.Dom._getAttribute(X,f)||i;if(!e.Dom._hasClass(X,W)){e.Dom.setAttribute(X,f,a(Y+b+W));G=true;}}else{}return G;},removeClass:function(W,G){return e.Dom.batch(W,e.Dom._removeClass,G);},_removeClass:function(Y,X){var W=false,aa,Z,G;if(Y&&X){aa=e.Dom._getAttribute(Y,f)||i;e.Dom.setAttribute(Y,f,aa.replace(e.Dom._getClassRegex(X),i));Z=e.Dom._getAttribute(Y,f);if(aa!==Z){e.Dom.setAttribute(Y,f,a(Z));W=true;if(e.Dom._getAttribute(Y,f)===""){G=(Y.hasAttribute&&Y.hasAttribute(E))?E:f;Y.removeAttribute(G);}}}else{}return W;},replaceClass:function(X,W,G){return e.Dom.batch(X,e.Dom._replaceClass,{from:W,to:G});},_replaceClass:function(Y,X){var W,ab,aa,G=false,Z;if(Y&&X){ab=X.from;aa=X.to;if(!aa){G=false;}else{if(!ab){G=e.Dom._addClass(Y,X.to);}else{if(ab!==aa){Z=e.Dom._getAttribute(Y,f)||i;W=(b+Z.replace(e.Dom._getClassRegex(ab),b+aa).replace(/\s+/g,b)).split(e.Dom._getClassRegex(aa));W.splice(1,0,b+aa);e.Dom.setAttribute(Y,f,a(W.join(i)));G=true;}}}}else{}return G;},generateId:function(G,X){X=X||"yui-gen";var W=function(Y){if(Y&&Y.id){return Y.id;}var Z=X+YAHOO.env._id_counter++; +if(Y){if(Y[C]&&Y[C].getElementById(Z)){return e.Dom.generateId(Y,Z+X);}Y.id=Z;}return Z;};return e.Dom.batch(G,W,e.Dom,true)||W.apply(e.Dom,arguments);},isAncestor:function(W,X){W=e.Dom.get(W);X=e.Dom.get(X);var G=false;if((W&&X)&&(W[K]&&X[K])){if(W.contains&&W!==X){G=W.contains(X);}else{if(W.compareDocumentPosition){G=!!(W.compareDocumentPosition(X)&16);}}}else{}return G;},inDocument:function(G,W){return e.Dom._inDoc(e.Dom.get(G),W);},_inDoc:function(W,X){var G=false;if(W&&W[c]){X=X||W[C];G=e.Dom.isAncestor(X[U],W);}else{}return G;},getElementsBy:function(W,af,ab,ad,X,ac,ae){af=af||"*";ab=(ab)?e.Dom.get(ab):null||j;var aa=(ae)?null:[],G;if(ab){G=ab.getElementsByTagName(af);for(var Y=0,Z=G.length;Y=8){e.Dom.DOT_ATTRIBUTES.type=true;}})();YAHOO.util.Region=function(d,e,a,c){this.top=d;this.y=d;this[1]=d;this.right=e;this.bottom=a;this.left=c;this.x=c;this[0]=c;this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(a){return(a.left>=this.left&&a.right<=this.right&&a.top>=this.top&&a.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(f){var d=Math.max(this.top,f.top),e=Math.min(this.right,f.right),a=Math.min(this.bottom,f.bottom),c=Math.max(this.left,f.left); +if(a>=d&&e>=c){return new YAHOO.util.Region(d,e,a,c);}else{return null;}};YAHOO.util.Region.prototype.union=function(f){var d=Math.min(this.top,f.top),e=Math.max(this.right,f.right),a=Math.max(this.bottom,f.bottom),c=Math.min(this.left,f.left);return new YAHOO.util.Region(d,e,a,c);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(e){var g=YAHOO.util.Dom.getXY(e),d=g[1],f=g[0]+e.offsetWidth,a=g[1]+e.offsetHeight,c=g[0];return new YAHOO.util.Region(d,f,a,c);};YAHOO.util.Point=function(a,b){if(YAHOO.lang.isArray(a)){b=a[1];a=a[0];}YAHOO.util.Point.superclass.constructor.call(this,b,a,b,a);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var b=YAHOO.util,a="clientTop",f="clientLeft",j="parentNode",k="right",w="hasLayout",i="px",u="opacity",l="auto",d="borderLeftWidth",g="borderTopWidth",p="borderRightWidth",v="borderBottomWidth",s="visible",q="transparent",n="height",e="width",h="style",t="currentStyle",r=/^width|height$/,o=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,m={get:function(x,z){var y="",A=x[t][z];if(z===u){y=b.Dom.getStyle(x,u);}else{if(!A||(A.indexOf&&A.indexOf(i)>-1)){y=A;}else{if(b.Dom.IE_COMPUTED[z]){y=b.Dom.IE_COMPUTED[z](x,z);}else{if(o.test(A)){y=b.Dom.IE.ComputedStyle.getPixel(x,z);}else{y=A;}}}}return y;},getOffset:function(z,E){var B=z[t][E],x=E.charAt(0).toUpperCase()+E.substr(1),C="offset"+x,y="pixel"+x,A="",D;if(B==l){D=z[C];if(D===undefined){A=0;}A=D;if(r.test(E)){z[h][E]=D;if(z[C]>D){A=D-(z[C]-D);}z[h][E]=l;}}else{if(!z[h][y]&&!z[h][E]){z[h][E]=B;}A=z[h][y];}return A+i;},getBorderWidth:function(x,z){var y=null;if(!x[t][w]){x[h].zoom=1;}switch(z){case g:y=x[a];break;case v:y=x.offsetHeight-x.clientHeight-x[a];break;case d:y=x[f];break;case p:y=x.offsetWidth-x.clientWidth-x[f];break;}return y+i;},getPixel:function(y,x){var A=null,B=y[t][k],z=y[t][x];y[h][k]=z;A=y[h].pixelRight;y[h][k]=B;return A+i;},getMargin:function(y,x){var z;if(y[t][x]==l){z=0+i;}else{z=b.Dom.IE.ComputedStyle.getPixel(y,x);}return z;},getVisibility:function(y,x){var z;while((z=y[t])&&z[x]=="inherit"){y=y[j];}return(z)?z[x]:s;},getColor:function(y,x){return b.Dom.Color.toRGB(y[t][x])||q;},getBorderColor:function(y,x){var z=y[t],A=z[x]||z.color;return b.Dom.Color.toRGB(b.Dom.Color.toHex(A));}},c={};c.top=c.right=c.bottom=c.left=c[e]=c[n]=m.getOffset;c.color=m.getColor;c[g]=c[p]=c[v]=c[d]=m.getBorderWidth;c.marginTop=c.marginRight=c.marginBottom=c.marginLeft=m.getMargin;c.visibility=m.getVisibility;c.borderColor=c.borderTopColor=c.borderRightColor=c.borderBottomColor=c.borderLeftColor=m.getBorderColor;b.Dom.IE_COMPUTED=c;b.Dom.IE_ComputedStyle=m;})();(function(){var c="toString",a=parseInt,b=RegExp,d=YAHOO.util;d.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(e){if(!d.Dom.Color.re_RGB.test(e)){e=d.Dom.Color.toHex(e);}if(d.Dom.Color.re_hex.exec(e)){e="rgb("+[a(b.$1,16),a(b.$2,16),a(b.$3,16)].join(", ")+")";}return e;},toHex:function(f){f=d.Dom.Color.KEYWORDS[f]||f;if(d.Dom.Color.re_RGB.exec(f)){f=[Number(b.$1).toString(16),Number(b.$2).toString(16),Number(b.$3).toString(16)];for(var e=0;e0){i=c[0];}try{b=g.fn.call(f,i,g.obj);}catch(h){this.lastError=h;if(a){throw h;}}}else{try{b=g.fn.call(f,this.type,c,g.obj);}catch(d){this.lastError=d;if(a){throw d;}}}return b;},unsubscribeAll:function(){var a=this.subscribers.length,b;for(b=a-1;b>-1;b--){this._delete(b);}this.subscribers=[];return a;},_delete:function(a){var b=this.subscribers[a];if(b){delete b.fn;delete b.obj;}this.subscribers.splice(a,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(a,b,c){this.fn=a;this.obj=YAHOO.lang.isUndefined(b)?null:b;this.overrideContext=c;};YAHOO.util.Subscriber.prototype.getScope=function(a){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return a;};YAHOO.util.Subscriber.prototype.contains=function(a,b){if(b){return(this.fn==a&&this.obj==b);}else{return(this.fn==a);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var g=false,h=[],j=[],a=0,e=[],b=0,c={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9},d=YAHOO.env.ua.ie,f="focusin",i="focusout";return{POLL_RETRYS:500,POLL_INTERVAL:40,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:d,_interval:null,_dri:null,_specialTypes:{focusin:(d?"focusin":"focus"),focusout:(d?"focusout":"blur")},DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){this._interval=YAHOO.lang.later(this.POLL_INTERVAL,this,this._tryPreloadAttach,null,true);}},onAvailable:function(q,m,o,p,n){var k=(YAHOO.lang.isString(q))?[q]:q;for(var l=0;l-1;m--){s=(this.removeListener(l[m],k,r)&&s);}return s;}}if(!r||!r.call){return this.purgeElement(l,false,k);}if("unload"==k){for(m=j.length-1;m>-1;m--){u=j[m];if(u&&u[0]==l&&u[1]==k&&u[2]==r){j.splice(m,1);return true;}}return false;}var n=null;var o=arguments[3];if("undefined"===typeof o){o=this._getCacheIndex(h,l,k,r);}if(o>=0){n=h[o];}if(!l||!n){return false;}var t=n[this.CAPTURE]===true?true:false;try{this._simpleRemove(l,k,n[this.WFN],t);}catch(q){this.lastError=q;return false;}delete h[o][this.WFN];delete h[o][this.FN];h.splice(o,1);return true;},getTarget:function(m,l){var k=m.target||m.srcElement;return this.resolveTextNode(k);},resolveTextNode:function(l){try{if(l&&3==l.nodeType){return l.parentNode;}}catch(k){return null;}return l;},getPageX:function(l){var k=l.pageX;if(!k&&0!==k){k=l.clientX||0;if(this.isIE){k+=this._getScrollLeft();}}return k;},getPageY:function(k){var l=k.pageY;if(!l&&0!==l){l=k.clientY||0;if(this.isIE){l+=this._getScrollTop();}}return l;},getXY:function(k){return[this.getPageX(k),this.getPageY(k)];},getRelatedTarget:function(l){var k=l.relatedTarget; +if(!k){if(l.type=="mouseout"){k=l.toElement;}else{if(l.type=="mouseover"){k=l.fromElement;}}}return this.resolveTextNode(k);},getTime:function(m){if(!m.time){var l=new Date().getTime();try{m.time=l;}catch(k){this.lastError=k;return l;}}return m.time;},stopEvent:function(k){this.stopPropagation(k);this.preventDefault(k);},stopPropagation:function(k){if(k.stopPropagation){k.stopPropagation();}else{k.cancelBubble=true;}},preventDefault:function(k){if(k.preventDefault){k.preventDefault();}else{k.returnValue=false;}},getEvent:function(m,k){var l=m||window.event;if(!l){var n=this.getEvent.caller;while(n){l=n.arguments[0];if(l&&Event==l.constructor){break;}n=n.caller;}}return l;},getCharCode:function(l){var k=l.keyCode||l.charCode||0;if(YAHOO.env.ua.webkit&&(k in c)){k=c[k];}return k;},_getCacheIndex:function(n,q,r,p){for(var o=0,m=n.length;o0&&e.length>0);}var p=[];var r=function(t,u){var s=t;if(u.overrideContext){if(u.overrideContext===true){s=u.obj;}else{s=u.overrideContext;}}u.fn.call(s,u.obj);};var l,k,o,n,m=[];for(l=0,k=e.length;l-1;l--){o=e[l];if(!o||!o.id){e.splice(l,1);}}this.startInterval();}else{if(this._interval){this._interval.cancel();this._interval=null;}}this.locked=false;},purgeElement:function(p,q,s){var n=(YAHOO.lang.isString(p))?this.getEl(p):p;var r=this.getListeners(n,s),o,k;if(r){for(o=r.length-1;o>-1;o--){var m=r[o];this.removeListener(n,m.type,m.fn);}}if(q&&n&&n.childNodes){for(o=0,k=n.childNodes.length;o-1;o--){n=h[o];if(n){try{m.removeListener(n[m.EL],n[m.TYPE],n[m.FN],o);}catch(v){}}}n=null;}try{m._simpleRemove(window,"unload",m._unload);m._simpleRemove(window,"load",m._load);}catch(u){}},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var k=document.documentElement,l=document.body;if(k&&(k.scrollTop||k.scrollLeft)){return[k.scrollTop,k.scrollLeft];}else{if(l){return[l.scrollTop,l.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(m,n,l,k){m.addEventListener(n,l,(k));};}else{if(window.attachEvent){return function(m,n,l,k){m.attachEvent("on"+n,l);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(m,n,l,k){m.removeEventListener(n,l,(k));};}else{if(window.detachEvent){return function(l,m,k){l.detachEvent("on"+m,k);};}else{return function(){};}}}()};}();(function(){var a=YAHOO.util.Event;a.on=a.addListener;a.onFocus=a.addFocusListener;a.onBlur=a.addBlurListener; +/*! DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */ +if(a.isIE){if(self!==self.top){document.onreadystatechange=function(){if(document.readyState=="complete"){document.onreadystatechange=null;a._ready();}};}else{YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var b=document.createElement("p");a._dri=setInterval(function(){try{b.doScroll("left");clearInterval(a._dri);a._dri=null;a._ready();b=null;}catch(c){}},a.POLL_INTERVAL);}}else{if(a.webkit&&a.webkit<525){a._dri=setInterval(function(){var c=document.readyState;if("loaded"==c||"complete"==c){clearInterval(a._dri);a._dri=null;a._ready();}},a.POLL_INTERVAL);}else{a._simpleAdd(document,"DOMContentLoaded",a._ready);}}a._simpleAdd(window,"load",a._load);a._simpleAdd(window,"unload",a._unload);a._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(a,c,f,e){this.__yui_events=this.__yui_events||{};var d=this.__yui_events[a];if(d){d.subscribe(c,f,e);}else{this.__yui_subscribers=this.__yui_subscribers||{};var b=this.__yui_subscribers;if(!b[a]){b[a]=[];}b[a].push({fn:c,obj:f,overrideContext:e});}},unsubscribe:function(c,e,g){this.__yui_events=this.__yui_events||{};var a=this.__yui_events;if(c){var f=a[c];if(f){return f.unsubscribe(e,g);}}else{var b=true;for(var d in a){if(YAHOO.lang.hasOwnProperty(a,d)){b=b&&a[d].unsubscribe(e,g); +}}return b;}return false;},unsubscribeAll:function(a){return this.unsubscribe(a);},createEvent:function(b,g){this.__yui_events=this.__yui_events||{};var e=g||{},d=this.__yui_events,f;if(d[b]){}else{f=new YAHOO.util.CustomEvent(b,e.scope||this,e.silent,YAHOO.util.CustomEvent.FLAT,e.fireOnce);d[b]=f;if(e.onSubscribeCallback){f.subscribeEvent.subscribe(e.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var a=this.__yui_subscribers[b];if(a){for(var c=0;c":">",'"':""","'":"'","/":"/","`":"`"},d=["toString","valueOf"],e={isArray:function(j){return a.toString.apply(j)===c;},isBoolean:function(j){return typeof j==="boolean";},isFunction:function(j){return(typeof j==="function")||a.toString.apply(j)===h;},isNull:function(j){return j===null;},isNumber:function(j){return typeof j==="number"&&isFinite(j);},isObject:function(j){return(j&&(typeof j==="object"||f.isFunction(j)))||false;},isString:function(j){return typeof j==="string";},isUndefined:function(j){return typeof j==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(l,k){var j,n,m;for(j=0;j"'\/`]/g,function(k){return g[k];});},extend:function(m,n,l){if(!n||!m){throw new Error("extend failed, please check that "+"all dependencies are included.");}var k=function(){},j;k.prototype=n.prototype;m.prototype=new k();m.prototype.constructor=m;m.superclass=n.prototype;if(n.prototype.constructor==a.constructor){n.prototype.constructor=n;}if(l){for(j in l){if(f.hasOwnProperty(l,j)){m.prototype[j]=l[j];}}f._IEEnumFix(m.prototype,l);}},augmentObject:function(n,m){if(!m||!n){throw new Error("Absorb failed, verify dependencies.");}var j=arguments,l,o,k=j[2];if(k&&k!==true){for(l=2;l0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}if(r.length>1){r.pop();}r.push("]");}else{r.push("{");for(l in j){if(f.hasOwnProperty(j,l)){r.push(l+m);if(f.isObject(j[l])){r.push((p>0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}}if(r.length>1){r.pop();}r.push("}");}return r.join("");},substitute:function(x,y,E,l){var D,C,B,G,t,u,F=[],p,z=x.length,A="dump",r=" ",q="{",m="}",n,w;for(;;){D=x.lastIndexOf(q,z);if(D<0){break;}C=x.indexOf(m,D);if(D+1>C){break;}p=x.substring(D+1,C);G=p;u=null;B=G.indexOf(r);if(B>-1){u=G.substring(B+1);G=G.substring(0,B);}t=y[G];if(E){t=E(G,t,u);}if(f.isObject(t)){if(f.isArray(t)){t=f.dump(t,parseInt(u,10));}else{u=u||"";n=u.indexOf(A);if(n>-1){u=u.substring(4);}w=t.toString();if(w===i||n>-1){t=f.dump(t,parseInt(u,10));}else{t=w;}}}else{if(!f.isString(t)&&!f.isNumber(t)){t="~-"+F.length+"-~";F[F.length]=p;}}x=x.substring(0,D)+t+x.substring(C+1);if(l===false){z=D-1;}}for(D=F.length-1;D>=0;D=D-1){x=x.replace(new RegExp("~-"+D+"-~"),"{"+F[D]+"}","g");}return x;},trim:function(j){try{return j.replace(/^\s+|\s+$/g,"");}catch(k){return j; -}},merge:function(){var n={},k=arguments,j=k.length,m;for(m=0;m-1;}}else{}return G;},addClass:function(W,G){return e.Dom.batch(W,e.Dom._addClass,G);},_addClass:function(X,W){var G=false,Y;if(X&&W){Y=e.Dom._getAttribute(X,f)||i;if(!e.Dom._hasClass(X,W)){e.Dom.setAttribute(X,f,a(Y+b+W));G=true;}}else{}return G;},removeClass:function(W,G){return e.Dom.batch(W,e.Dom._removeClass,G);},_removeClass:function(Y,X){var W=false,aa,Z,G;if(Y&&X){aa=e.Dom._getAttribute(Y,f)||i;e.Dom.setAttribute(Y,f,aa.replace(e.Dom._getClassRegex(X),i));Z=e.Dom._getAttribute(Y,f);if(aa!==Z){e.Dom.setAttribute(Y,f,a(Z));W=true;if(e.Dom._getAttribute(Y,f)===""){G=(Y.hasAttribute&&Y.hasAttribute(E))?E:f;Y.removeAttribute(G);}}}else{}return W;},replaceClass:function(X,W,G){return e.Dom.batch(X,e.Dom._replaceClass,{from:W,to:G});},_replaceClass:function(Y,X){var W,ab,aa,G=false,Z;if(Y&&X){ab=X.from;aa=X.to;if(!aa){G=false;}else{if(!ab){G=e.Dom._addClass(Y,X.to);}else{if(ab!==aa){Z=e.Dom._getAttribute(Y,f)||i;W=(b+Z.replace(e.Dom._getClassRegex(ab),b+aa).replace(/\s+/g,b)).split(e.Dom._getClassRegex(aa));W.splice(1,0,b+aa);e.Dom.setAttribute(Y,f,a(W.join(i)));G=true;}}}}else{}return G;},generateId:function(G,X){X=X||"yui-gen";var W=function(Y){if(Y&&Y.id){return Y.id;}var Z=X+YAHOO.env._id_counter++; -if(Y){if(Y[C]&&Y[C].getElementById(Z)){return e.Dom.generateId(Y,Z+X);}Y.id=Z;}return Z;};return e.Dom.batch(G,W,e.Dom,true)||W.apply(e.Dom,arguments);},isAncestor:function(W,X){W=e.Dom.get(W);X=e.Dom.get(X);var G=false;if((W&&X)&&(W[K]&&X[K])){if(W.contains&&W!==X){G=W.contains(X);}else{if(W.compareDocumentPosition){G=!!(W.compareDocumentPosition(X)&16);}}}else{}return G;},inDocument:function(G,W){return e.Dom._inDoc(e.Dom.get(G),W);},_inDoc:function(W,X){var G=false;if(W&&W[c]){X=X||W[C];G=e.Dom.isAncestor(X[U],W);}else{}return G;},getElementsBy:function(W,af,ab,ad,X,ac,ae){af=af||"*";ab=(ab)?e.Dom.get(ab):null||j;var aa=(ae)?null:[],G;if(ab){G=ab.getElementsByTagName(af);for(var Y=0,Z=G.length;Y=8){e.Dom.DOT_ATTRIBUTES.type=true;}})();YAHOO.util.Region=function(d,e,a,c){this.top=d;this.y=d;this[1]=d;this.right=e;this.bottom=a;this.left=c;this.x=c;this[0]=c;this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(a){return(a.left>=this.left&&a.right<=this.right&&a.top>=this.top&&a.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(f){var d=Math.max(this.top,f.top),e=Math.min(this.right,f.right),a=Math.min(this.bottom,f.bottom),c=Math.max(this.left,f.left); -if(a>=d&&e>=c){return new YAHOO.util.Region(d,e,a,c);}else{return null;}};YAHOO.util.Region.prototype.union=function(f){var d=Math.min(this.top,f.top),e=Math.max(this.right,f.right),a=Math.max(this.bottom,f.bottom),c=Math.min(this.left,f.left);return new YAHOO.util.Region(d,e,a,c);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(e){var g=YAHOO.util.Dom.getXY(e),d=g[1],f=g[0]+e.offsetWidth,a=g[1]+e.offsetHeight,c=g[0];return new YAHOO.util.Region(d,f,a,c);};YAHOO.util.Point=function(a,b){if(YAHOO.lang.isArray(a)){b=a[1];a=a[0];}YAHOO.util.Point.superclass.constructor.call(this,b,a,b,a);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var b=YAHOO.util,a="clientTop",f="clientLeft",j="parentNode",k="right",w="hasLayout",i="px",u="opacity",l="auto",d="borderLeftWidth",g="borderTopWidth",p="borderRightWidth",v="borderBottomWidth",s="visible",q="transparent",n="height",e="width",h="style",t="currentStyle",r=/^width|height$/,o=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,m={get:function(x,z){var y="",A=x[t][z];if(z===u){y=b.Dom.getStyle(x,u);}else{if(!A||(A.indexOf&&A.indexOf(i)>-1)){y=A;}else{if(b.Dom.IE_COMPUTED[z]){y=b.Dom.IE_COMPUTED[z](x,z);}else{if(o.test(A)){y=b.Dom.IE.ComputedStyle.getPixel(x,z);}else{y=A;}}}}return y;},getOffset:function(z,E){var B=z[t][E],x=E.charAt(0).toUpperCase()+E.substr(1),C="offset"+x,y="pixel"+x,A="",D;if(B==l){D=z[C];if(D===undefined){A=0;}A=D;if(r.test(E)){z[h][E]=D;if(z[C]>D){A=D-(z[C]-D);}z[h][E]=l;}}else{if(!z[h][y]&&!z[h][E]){z[h][E]=B;}A=z[h][y];}return A+i;},getBorderWidth:function(x,z){var y=null;if(!x[t][w]){x[h].zoom=1;}switch(z){case g:y=x[a];break;case v:y=x.offsetHeight-x.clientHeight-x[a];break;case d:y=x[f];break;case p:y=x.offsetWidth-x.clientWidth-x[f];break;}return y+i;},getPixel:function(y,x){var A=null,B=y[t][k],z=y[t][x];y[h][k]=z;A=y[h].pixelRight;y[h][k]=B;return A+i;},getMargin:function(y,x){var z;if(y[t][x]==l){z=0+i;}else{z=b.Dom.IE.ComputedStyle.getPixel(y,x);}return z;},getVisibility:function(y,x){var z;while((z=y[t])&&z[x]=="inherit"){y=y[j];}return(z)?z[x]:s;},getColor:function(y,x){return b.Dom.Color.toRGB(y[t][x])||q;},getBorderColor:function(y,x){var z=y[t],A=z[x]||z.color;return b.Dom.Color.toRGB(b.Dom.Color.toHex(A));}},c={};c.top=c.right=c.bottom=c.left=c[e]=c[n]=m.getOffset;c.color=m.getColor;c[g]=c[p]=c[v]=c[d]=m.getBorderWidth;c.marginTop=c.marginRight=c.marginBottom=c.marginLeft=m.getMargin;c.visibility=m.getVisibility;c.borderColor=c.borderTopColor=c.borderRightColor=c.borderBottomColor=c.borderLeftColor=m.getBorderColor;b.Dom.IE_COMPUTED=c;b.Dom.IE_ComputedStyle=m;})();(function(){var c="toString",a=parseInt,b=RegExp,d=YAHOO.util;d.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(e){if(!d.Dom.Color.re_RGB.test(e)){e=d.Dom.Color.toHex(e);}if(d.Dom.Color.re_hex.exec(e)){e="rgb("+[a(b.$1,16),a(b.$2,16),a(b.$3,16)].join(", ")+")";}return e;},toHex:function(f){f=d.Dom.Color.KEYWORDS[f]||f;if(d.Dom.Color.re_RGB.exec(f)){f=[Number(b.$1).toString(16),Number(b.$2).toString(16),Number(b.$3).toString(16)];for(var e=0;e0){i=c[0];}try{b=g.fn.call(f,i,g.obj);}catch(h){this.lastError=h;if(a){throw h;}}}else{try{b=g.fn.call(f,this.type,c,g.obj);}catch(d){this.lastError=d;if(a){throw d;}}}return b;},unsubscribeAll:function(){var a=this.subscribers.length,b;for(b=a-1;b>-1;b--){this._delete(b);}this.subscribers=[];return a;},_delete:function(a){var b=this.subscribers[a];if(b){delete b.fn;delete b.obj;}this.subscribers.splice(a,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(a,b,c){this.fn=a;this.obj=YAHOO.lang.isUndefined(b)?null:b;this.overrideContext=c;};YAHOO.util.Subscriber.prototype.getScope=function(a){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return a;};YAHOO.util.Subscriber.prototype.contains=function(a,b){if(b){return(this.fn==a&&this.obj==b);}else{return(this.fn==a);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var g=false,h=[],j=[],a=0,e=[],b=0,c={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9},d=YAHOO.env.ua.ie,f="focusin",i="focusout";return{POLL_RETRYS:500,POLL_INTERVAL:40,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:d,_interval:null,_dri:null,_specialTypes:{focusin:(d?"focusin":"focus"),focusout:(d?"focusout":"blur")},DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){this._interval=YAHOO.lang.later(this.POLL_INTERVAL,this,this._tryPreloadAttach,null,true);}},onAvailable:function(q,m,o,p,n){var k=(YAHOO.lang.isString(q))?[q]:q;for(var l=0;l-1;m--){s=(this.removeListener(l[m],k,r)&&s);}return s;}}if(!r||!r.call){return this.purgeElement(l,false,k);}if("unload"==k){for(m=j.length-1;m>-1;m--){u=j[m];if(u&&u[0]==l&&u[1]==k&&u[2]==r){j.splice(m,1);return true;}}return false;}var n=null;var o=arguments[3];if("undefined"===typeof o){o=this._getCacheIndex(h,l,k,r);}if(o>=0){n=h[o];}if(!l||!n){return false;}var t=n[this.CAPTURE]===true?true:false;try{this._simpleRemove(l,k,n[this.WFN],t);}catch(q){this.lastError=q;return false;}delete h[o][this.WFN];delete h[o][this.FN];h.splice(o,1);return true;},getTarget:function(m,l){var k=m.target||m.srcElement;return this.resolveTextNode(k);},resolveTextNode:function(l){try{if(l&&3==l.nodeType){return l.parentNode;}}catch(k){return null;}return l;},getPageX:function(l){var k=l.pageX;if(!k&&0!==k){k=l.clientX||0;if(this.isIE){k+=this._getScrollLeft();}}return k;},getPageY:function(k){var l=k.pageY;if(!l&&0!==l){l=k.clientY||0;if(this.isIE){l+=this._getScrollTop();}}return l;},getXY:function(k){return[this.getPageX(k),this.getPageY(k)];},getRelatedTarget:function(l){var k=l.relatedTarget; -if(!k){if(l.type=="mouseout"){k=l.toElement;}else{if(l.type=="mouseover"){k=l.fromElement;}}}return this.resolveTextNode(k);},getTime:function(m){if(!m.time){var l=new Date().getTime();try{m.time=l;}catch(k){this.lastError=k;return l;}}return m.time;},stopEvent:function(k){this.stopPropagation(k);this.preventDefault(k);},stopPropagation:function(k){if(k.stopPropagation){k.stopPropagation();}else{k.cancelBubble=true;}},preventDefault:function(k){if(k.preventDefault){k.preventDefault();}else{k.returnValue=false;}},getEvent:function(m,k){var l=m||window.event;if(!l){var n=this.getEvent.caller;while(n){l=n.arguments[0];if(l&&Event==l.constructor){break;}n=n.caller;}}return l;},getCharCode:function(l){var k=l.keyCode||l.charCode||0;if(YAHOO.env.ua.webkit&&(k in c)){k=c[k];}return k;},_getCacheIndex:function(n,q,r,p){for(var o=0,m=n.length;o0&&e.length>0);}var p=[];var r=function(t,u){var s=t;if(u.overrideContext){if(u.overrideContext===true){s=u.obj;}else{s=u.overrideContext;}}u.fn.call(s,u.obj);};var l,k,o,n,m=[];for(l=0,k=e.length;l-1;l--){o=e[l];if(!o||!o.id){e.splice(l,1);}}this.startInterval();}else{if(this._interval){this._interval.cancel();this._interval=null;}}this.locked=false;},purgeElement:function(p,q,s){var n=(YAHOO.lang.isString(p))?this.getEl(p):p;var r=this.getListeners(n,s),o,k;if(r){for(o=r.length-1;o>-1;o--){var m=r[o];this.removeListener(n,m.type,m.fn);}}if(q&&n&&n.childNodes){for(o=0,k=n.childNodes.length;o-1;o--){n=h[o];if(n){try{m.removeListener(n[m.EL],n[m.TYPE],n[m.FN],o);}catch(v){}}}n=null;}try{m._simpleRemove(window,"unload",m._unload);m._simpleRemove(window,"load",m._load);}catch(u){}},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var k=document.documentElement,l=document.body;if(k&&(k.scrollTop||k.scrollLeft)){return[k.scrollTop,k.scrollLeft];}else{if(l){return[l.scrollTop,l.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(m,n,l,k){m.addEventListener(n,l,(k));};}else{if(window.attachEvent){return function(m,n,l,k){m.attachEvent("on"+n,l);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(m,n,l,k){m.removeEventListener(n,l,(k));};}else{if(window.detachEvent){return function(l,m,k){l.detachEvent("on"+m,k);};}else{return function(){};}}}()};}();(function(){var a=YAHOO.util.Event;a.on=a.addListener;a.onFocus=a.addFocusListener;a.onBlur=a.addBlurListener; -/*! DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */ -if(a.isIE){if(self!==self.top){document.onreadystatechange=function(){if(document.readyState=="complete"){document.onreadystatechange=null;a._ready();}};}else{YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var b=document.createElement("p");a._dri=setInterval(function(){try{b.doScroll("left");clearInterval(a._dri);a._dri=null;a._ready();b=null;}catch(c){}},a.POLL_INTERVAL);}}else{if(a.webkit&&a.webkit<525){a._dri=setInterval(function(){var c=document.readyState;if("loaded"==c||"complete"==c){clearInterval(a._dri);a._dri=null;a._ready();}},a.POLL_INTERVAL);}else{a._simpleAdd(document,"DOMContentLoaded",a._ready);}}a._simpleAdd(window,"load",a._load);a._simpleAdd(window,"unload",a._unload);a._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(a,c,f,e){this.__yui_events=this.__yui_events||{};var d=this.__yui_events[a];if(d){d.subscribe(c,f,e);}else{this.__yui_subscribers=this.__yui_subscribers||{};var b=this.__yui_subscribers;if(!b[a]){b[a]=[];}b[a].push({fn:c,obj:f,overrideContext:e});}},unsubscribe:function(c,e,g){this.__yui_events=this.__yui_events||{};var a=this.__yui_events;if(c){var f=a[c];if(f){return f.unsubscribe(e,g);}}else{var b=true;for(var d in a){if(YAHOO.lang.hasOwnProperty(a,d)){b=b&&a[d].unsubscribe(e,g); -}}return b;}return false;},unsubscribeAll:function(a){return this.unsubscribe(a);},createEvent:function(b,g){this.__yui_events=this.__yui_events||{};var e=g||{},d=this.__yui_events,f;if(d[b]){}else{f=new YAHOO.util.CustomEvent(b,e.scope||this,e.silent,YAHOO.util.CustomEvent.FLAT,e.fireOnce);d[b]=f;if(e.onSubscribeCallback){f.subscribeEvent.subscribe(e.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var a=this.__yui_subscribers[b];if(a){for(var c=0;c 1, - datatable => 1, - button => 1, - } %] - - [%# Note: This is simple dependency resolution--you can't have dependencies - # that depend on each other. You have to specify all of a module's deps, - # if that module is going to be specified in "yui". - #%] - [% SET yui_deps = { - datatable => ['json', 'connection', 'datasource', 'element'], - } %] - - [%# When using certain YUI modules, we need to process certain - # extra JS templates. - #%] - [% SET yui_templates = { - datatable => ['global/value-descs.js.tmpl'], - } %] -[% END %] - [%# These are JS URLs that are *always* on the page and come before # every other JS URL. #%] @@ -91,8 +65,7 @@ ] %] [% IF NOT no_yui %] - [% starting_js_urls.push("js/yui/yahoo-dom-event/yahoo-dom-event.js", - "js/yui/cookie/cookie-min.js") %] + [% starting_js_urls.push("js/yui.js") %] [% END %] [% SET jq_css_urls = [ @@ -163,11 +136,7 @@ [% PROCESS 'global/setting-descs.none.tmpl' %] - [% IF NOT no_yui %] - [% SET yui = yui_resolve_deps(yui, yui_deps) %] - [% END %] - - [% SET css_sets = css_files(style_urls.unique, yui, yui_css) %] + [% SET css_sets = css_files(style_urls.unique, no_yui) %] [% IF constants.CONCATENATE_ASSETS %] [% PROCESS format_css_link asset_url = css_sets.unified_standard_skin %] [% ELSE %] @@ -195,13 +164,6 @@ [% END %] [% END %] - [% IF NOT no_yui %] - [%# YUI Scripts %] - [% FOREACH yui_name = yui %] - [% starting_js_urls.push("js/yui/$yui_name/${yui_name}-min.js") %] - [% END %] - [% END %] - [%# jQuery Plugins %] [% FOREACH jq_name = jquery.unique %] [% starting_js_urls.push("js/jquery/plugins/$jq_name/${jq_name}-min.js") %] @@ -212,11 +174,6 @@ [% PROCESS format_js_link %] [% END %] - [%# Make some Bugzilla information available to all scripts. - # We don't import every parameter and constant because we - # don't want to add a lot of uncached JS to every page. - # %] - [% inline_javascript = BLOCK %] [% IF NOT no_yui %] YAHOO.namespace('bugzilla'); @@ -224,11 +181,7 @@ YAHOO.util.Event._simpleRemove(window, "unload", YAHOO.util.Event._unload); } - [% FOREACH yui_name = yui %] - [% FOREACH yui_template = yui_templates.$yui_name %] - [% INCLUDE $yui_template %] - [% END %] - [% END %] + [% INCLUDE 'global/value-descs.js.tmpl' %] [% END %] [% IF javascript %] diff --git a/template/en/default/global/value-descs.js.tmpl b/template/en/default/global/value-descs.js.tmpl index 20d023b42..b0fb1d4d2 100644 --- a/template/en/default/global/value-descs.js.tmpl +++ b/template/en/default/global/value-descs.js.tmpl @@ -20,14 +20,4 @@ [% PROCESS "global/value-descs.none.tmpl" %] -BUGZILLA.value_descs = { - [% FOREACH vd_field = value_descs.keys %] - [% vd_field FILTER js %]: { - [% FOREACH vd_value = value_descs.${vd_field}.keys %] - '[% vd_value FILTER js %]': - '[% value_descs.${vd_field}.${vd_value} FILTER js %]' - [%~ ',' UNLESS loop.last %] - [% END %] - }[% ',' UNLESS loop.last %] - [% END %] -}; +BUGZILLA.value_descs = JSON.parse('[% json_encode(value_descs) FILTER js %]'); diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl index 5e154f5df..1c49fee98 100644 --- a/template/en/default/list/list.html.tmpl +++ b/template/en/default/list/list.html.tmpl @@ -50,7 +50,6 @@ generate_api_token = dotweak style = style atomlink = "buglist.cgi?$urlquerypart&title=$url_filtered_title&ctype=atom" - yui = [ 'calendar' ] javascript_urls = [ "js/util.js", "js/field.js" ] style_urls = [ "skins/standard/buglist.css" ] doc_section = "query.html#list" diff --git a/template/en/default/reports/report.html.tmpl b/template/en/default/reports/report.html.tmpl index 38b64df0b..deb570202 100644 --- a/template/en/default/reports/report.html.tmpl +++ b/template/en/default/reports/report.html.tmpl @@ -77,7 +77,6 @@ .ttotal, .ttotal td { background-color: #cfffdf } /* light green */ " header_addl_info = time - yui = ['datatable'] %] [% IF debug %] diff --git a/template/en/default/search/search-advanced.html.tmpl b/template/en/default/search/search-advanced.html.tmpl index 3956a1ff2..60f47a916 100644 --- a/template/en/default/search/search-advanced.html.tmpl +++ b/template/en/default/search/search-advanced.html.tmpl @@ -45,7 +45,6 @@ function remove_token() { generate_api_token = 1 onload = "doOnSelectProduct(0);" javascript = js_data - yui = [ 'calendar', 'connection' ] javascript_urls = [ "js/productform.js", "js/util.js", "js/TUI.js", "js/field.js"] style_urls = [ "skins/standard/search_form.css" ] doc_section = "query.html" diff --git a/template/en/default/search/search-create-series.html.tmpl b/template/en/default/search/search-create-series.html.tmpl index 6b7678b23..69e7a6307 100644 --- a/template/en/default/search/search-create-series.html.tmpl +++ b/template/en/default/search/search-create-series.html.tmpl @@ -34,7 +34,6 @@ title = "Create New Data Set" generate_api_token = 1 onload = "doOnSelectProduct(0);" - yui = [ 'calendar' ] javascript = js_data javascript_urls = [ "js/util.js", "js/productform.js", "js/TUI.js", "js/field.js" ] style_urls = [ "skins/standard/search_form.css" ] diff --git a/template/en/default/search/search-instant.html.tmpl b/template/en/default/search/search-instant.html.tmpl index 00f6434e9..4a7ff1992 100644 --- a/template/en/default/search/search-instant.html.tmpl +++ b/template/en/default/search/search-instant.html.tmpl @@ -13,7 +13,6 @@ generate_api_token = 1 javascript_urls = [ 'extensions/GuidedBugEntry/web/js/products.js', 'js/instant-search.js', ] - yui = [ 'datatable', 'container' ] %] [% UNLESS default.exists('product') && default.product.size %] diff --git a/template/en/default/search/search-report-graph.html.tmpl b/template/en/default/search/search-report-graph.html.tmpl index 20e8e184d..b7e7b59c8 100644 --- a/template/en/default/search/search-report-graph.html.tmpl +++ b/template/en/default/search/search-report-graph.html.tmpl @@ -33,7 +33,6 @@ var queryform = "reportform" title = "Generate Graphical Report" generate_api_token = 1 onload = "doOnSelectProduct(0); chartTypeChanged()" - yui = [ 'calendar' ] javascript = js_data javascript_urls = [ "js/util.js", "js/productform.js", "js/TUI.js", "js/field.js" ] style_urls = [ "skins/standard/search_form.css" ] diff --git a/template/en/default/search/search-report-table.html.tmpl b/template/en/default/search/search-report-table.html.tmpl index 7ff54b8da..7ac4ac5a0 100644 --- a/template/en/default/search/search-report-table.html.tmpl +++ b/template/en/default/search/search-report-table.html.tmpl @@ -33,7 +33,6 @@ var queryform = "reportform" title = "Generate Tabular Report" generate_api_token = 1 onload = "doOnSelectProduct(0)" - yui = [ 'calendar' ] javascript = js_data javascript_urls = [ "js/util.js", "js/productform.js", "js/TUI.js", "js/field.js" ] style_urls = [ "skins/standard/search_form.css" ] -- cgit v1.2.3-24-g4f1b