]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1363803 - Consolidate YUI js and css into one js and one css file
authorDylan William Hardison <dylan@hardison.net>
Wed, 17 May 2017 20:19:36 +0000 (16:19 -0400)
committerDylan William Hardison <dylan@hardison.net>
Wed, 17 May 2017 21:07:31 +0000 (17:07 -0400)
52 files changed:
.gitignore
Bugzilla/Install/Filesystem.pm
Bugzilla/Template.pm
Bugzilla/Util.pm
extensions/BMO/template/en/default/bug/create/create-automative.html.tmpl
extensions/BMO/template/en/default/bug/create/create-creative.html.tmpl
extensions/BMO/template/en/default/bug/create/create-data-compliance.html.tmpl
extensions/BMO/template/en/default/bug/create/create-dev-engagement-event.html.tmpl
extensions/BMO/template/en/default/bug/create/create-doc.html.tmpl
extensions/BMO/template/en/default/bug/create/create-fsa-budget.html.tmpl
extensions/BMO/template/en/default/bug/create/create-mdn.html.tmpl
extensions/BMO/template/en/default/bug/create/create-mozpr.html.tmpl
extensions/BMO/template/en/default/bug/create/create-swag.html.tmpl
extensions/BMO/template/en/default/bug/create/create-user-engagement.html.tmpl
extensions/BMO/template/en/default/pages/attachment_bounty_form.html.tmpl
extensions/BMO/template/en/default/pages/group_admins.html.tmpl
extensions/BMO/template/en/default/pages/triage_reports.html.tmpl
extensions/BMO/template/en/default/pages/user_activity.html.tmpl
extensions/GuidedBugEntry/template/en/default/guided/guided.html.tmpl
extensions/MyDashboard/template/en/default/pages/mydashboard.html.tmpl
extensions/MyDashboard/web/js/flags.js
extensions/MyDashboard/web/js/query.js
extensions/ProductDashboard/template/en/default/pages/productdashboard.html.tmpl
extensions/ProductDashboard/web/js/components.js
extensions/ProductDashboard/web/js/duplicates.js
extensions/ProductDashboard/web/js/popularity.js
extensions/ProductDashboard/web/js/recents.js
extensions/ProductDashboard/web/js/roadmap.js
extensions/ProductDashboard/web/js/summary.js
extensions/REMO/template/en/default/bug/create/create-remo-budget.html.tmpl
extensions/REMO/template/en/default/bug/create/create-remo-swag.html.tmpl
extensions/REMO/template/en/default/pages/remo-form-payment.html.tmpl
extensions/Splinter/template/en/default/pages/splinter.html.tmpl
js/yui.js.list [new file with mode: 0644]
js/yui/yahoo-dom-event/yahoo-dom-event-min.js [moved from js/yui/yahoo-dom-event/yahoo-dom-event.js with 100% similarity]
js/yui3.js.list [new file with mode: 0644]
skins/yui.css.list [new file with mode: 0644]
skins/yui3.css.list [new file with mode: 0644]
template/en/default/attachment/create.html.tmpl
template/en/default/attachment/edit.html.tmpl
template/en/default/bug/create/create.html.tmpl
template/en/default/bug/show-header.html.tmpl
template/en/default/bug/summarize-time.html.tmpl
template/en/default/global/header.html.tmpl
template/en/default/global/value-descs.js.tmpl
template/en/default/list/list.html.tmpl
template/en/default/reports/report.html.tmpl
template/en/default/search/search-advanced.html.tmpl
template/en/default/search/search-create-series.html.tmpl
template/en/default/search/search-instant.html.tmpl
template/en/default/search/search-report-graph.html.tmpl
template/en/default/search/search-report-table.html.tmpl

index 7ef5e263dbe4d36505593bd685a619ef2c67285c..18f2d0a1730c57f04873849348d25f2ba4c2addc 100644 (file)
@@ -1,4 +1,8 @@
 /**/.htaccess
+/skins/yui.css
+/skins/yui3.css
+/js/yui.js
+/js/yui3.js
 /lib/*
 /local/*
 /template/en/custom
index 7cfda83040b582e9ccc615fb06b1e1522d02a887..79eeca98e01bb354e6697eefe4453c7275269be7 100644 (file)
@@ -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;
         }
     }
index b08cffbdeb8c9e2ae8c2fa2fa70fb5f1f900d974..29b1d4a1310c98e1592167e2db275e1463207a32 100644 (file)
@@ -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) {
index ca8187c5fdfb9cf473e95ecf49cff2256755c046..5337ce9408f32dec94678c6387dbcbfb9ce7b279 100644 (file)
@@ -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{(?<!=)url\((["']?)([^\)]+?)\1\)}{$callback->($2)}eig;
+    return $content;
+}
+
 sub trim {
     my ($str) = @_;
     if ($str) {
index c19bed29b85e36154a4844a844ac88dffc07d7e4..413532f3fecf1e590c0f8b91ebaaf98986a0e634 100644 (file)
@@ -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 %]
index 88e744abec335d77c8a9eeefb40c6be54a06c42d..8825344a32119e16d1247bdd7c71cc8b8d27ae56 100644 (file)
@@ -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 %]
index f24fd340d1fbf7645b82feafdaa3feb75fd78002..bade9a588c11cf2d6080fe9016b1e05aacee69e1 100644 (file)
@@ -69,7 +69,6 @@
    javascript_urls = [ 'js/field.js',
                        'js/util.js',
                        'extensions/BMO/web/js/form_validate.js' ]
-   yui = [ 'calendar', 'selector' ]
 %]
 
 <h2>Data Compliance Form</h2>
index d0d34069bb50b9ace7a768344e98b384d3d31585..5742a17e9479114cac8ded29b6098cb3ab7e3465 100644 (file)
@@ -46,7 +46,6 @@
                        'js/util.js',
                        'extensions/BMO/web/js/form_validate.js',
                        'extensions/BMO/web/js/dev_engagement.js' ]
-   yui = [ 'calendar' ]
 %]
 
 <h2>Developer Events Request Form</h2>
index c7f883fb4d4a2cfb0d241c04f0d71e8c7ff5fc59..0ee9090055204171c5f5f51692b15405586c641d 100644 (file)
@@ -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 %]
index c35d66942482479619946be150bb058b7cb351e5..502f92c3230775fc35e33532b2075dcb534ae075 100644 (file)
@@ -75,7 +75,6 @@ function validateAndSubmit() {
    javascript_urls = [ 'extensions/BMO/web/js/form_validate.js',
                        'js/util.js',
                        'js/field.js' ]
-   yui = [ 'calendar' ]
 %]
 
 <h1>FSA Budget Request Form</h1>
index 89c28f114bbfbf6164f88258f1a5fcad5d9c9091..b17736ce612bf118d8c30f05e65201a28f9d06e1 100644 (file)
@@ -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' ]
 %]
 
index c62d8b99fe9ca0da9dcd5f646734d6deb536a0e3..9750062326f20c18d629fe8ad4b41ef86c5770aa 100644 (file)
@@ -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') %]
index 6742c42db5d1fad9e9fa29c9fb3b3e10bc824929..859d77194c09d4a921a716fec1898de1fa71c141 100644 (file)
@@ -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' ]
 %]
 
 <h1>Mozilla Gear</h1>
index 23ea0bb865dc48ad43ad42bc8fbf284efdbe63ed..f15e4f47d7e3a369317047d401328695f4ccd131 100644 (file)
@@ -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 %]
index 9b690133044b134aa2b7133c4f2031406fdcb872..ffbb1acbcc216d639d6e503aa5be71ae23a168b5 100644 (file)
@@ -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 %]
index c81c95748f7fb1ffc2ea1077112b6b1cbe396354..cfa3bd3eab48d1e846d030ff926d434cb00a5bce 100644 (file)
@@ -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 %]
index 7958f27d29a4bddba453df679c00ada1bb928bde..05efefca5dc95283a4261f2c8613881c1d2562bd 100644 (file)
@@ -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" ]
index ad79b3c4dcdea3fba7dc28bf6a7746f5108698dc..d850c91b223fb525d1ee7efb6dfcd54b5b5a4a70 100644 (file)
@@ -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" ]
 
index ee1ba29312b9ebb156f44cca18bb71e126345107..e4b0b44a87353bc9a2ddb0b77ecd4fbfaeecae95 100644 (file)
@@ -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' ]
 %]
 
 <iframe id="yui-history-iframe" src="extensions/GuidedBugEntry/web/yui-history-iframe.txt"></iframe>
index eda53ebe403dd3056fb5f421450c924070158770..028d1b9b076cd346e97720fd93f12b0188337d3b 100644 (file)
 [% 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",
index e8c1751554f86eda5ba1081acfdccf7ecc4758d0..95b25670834776050639c186270277e8e03896a7 100644 (file)
  */
 
 // 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 '<a href="show_bug.cgi?id=' + encodeURIComponent(o.value) +
+                '" target="_blank" ' + 'title="' + Y.Escape.html(o.data.bug_status) + ' - ' +
+                Y.Escape.html(o.data.bug_summary) + '" class="' + Y.Escape.html(bug_closed) +
+                '">' + o.value + '</a>';
         };
 
-        var stringified = Y.JSON.stringify(json_object);
+        var updatedFormatter = function(o) {
+            return '<span title="' + Y.Escape.html(o.value) + '">' +
+                Y.Escape.html(o.data.updated_fancy) + '</span>';
+        };
 
-        Y.one('#' + type + '_count_refresh').addClass('bz_default_hidden');
+        var requesteeFormatter = function(o) {
+            return o.value
+                ? Y.Escape.html(o.value)
+                : '<i>anyone</i>';
+        };
 
-        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 '<a href="' + MyDashboard.splinter_base +
+                    (MyDashboard.splinter_base.indexOf('?') == -1 ? '?' : '&') +
+                    'bug=' + encodeURIComponent(o.data.bug_id) +
+                    '&attachment=' + encodeURIComponent(o.data.attach_id) +
+                    '" target="_blank" title="Review this patch">' +
+                    Y.Escape.html(o.value) + '</a>';
+            }
+            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 '<a href="show_bug.cgi?id=' + encodeURIComponent(o.value) +
-               '" target="_blank" ' + 'title="' + Y.Escape.html(o.data.bug_status) + ' - ' +
-               Y.Escape.html(o.data.bug_summary) + '" class="' + Y.Escape.html(bug_closed) +
-               '">' + o.value + '</a>';
-    };
-
-    var updatedFormatter = function(o) {
-        return '<span title="' + Y.Escape.html(o.value) + '">' +
-               Y.Escape.html(o.data.updated_fancy) + '</span>';
-    };
-
-    var requesteeFormatter = function(o) {
-        return o.value
-            ? Y.Escape.html(o.value)
-            : '<i>anyone</i>';
-    };
-
-    var flagNameFormatter = function(o) {
-        if (parseInt(o.data.attach_id)
-            && parseInt(o.data.is_patch)
-            && MyDashboard.splinter_base)
-        {
-            return '<a href="' + MyDashboard.splinter_base +
-                   (MyDashboard.splinter_base.indexOf('?') == -1 ? '?' : '&') +
-                   'bug=' + encodeURIComponent(o.data.bug_id) +
-                   '&attachment=' + encodeURIComponent(o.data.attach_id) +
-                   '" target="_blank" title="Review this patch">' +
-                   Y.Escape.html(o.value) + '</a>';
-        }
-        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');
+        });
     });
 });
index 9cea27f875b67b00fa415e1dca548cf6d5dcc4cf..a95c0be6176a1149ce409ab5e3ab17b067e99f36 100644 (file)
@@ -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(
-                    '<a href="buglist.cgi?' + e.response.meta.buffer +
-                    '" target="_blank">' + e.response.results.length + ' bugs found</a>');
-                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(
+                        '<a href="buglist.cgi?' + e.response.meta.buffer +
+                        '" target="_blank">' + e.response.results.length + ' bugs found</a>');
+                    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 '<span title="' + Y.Escape.html(o.value) + '">' +
-               Y.Escape.html(o.data.changeddate_fancy) + '</span>';
-    };
+            bugQuery.sendRequest({
+                request: Y.JSON.stringify(bugQueryParams),
+                cfg: {
+                    method:  "POST",
+                    headers: { 'Content-Type': 'application/json' }
+                },
+                callback: bugQueryCallback
+            });
+        };
 
+        var updatedFormatter = function(o) {
+            return '<span title="' + Y.Escape.html(o.value) + '">' +
+                Y.Escape.html(o.data.changeddate_fancy) + '</span>';
+        };
 
-    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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
-            { 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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
+                { 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');
+        });
     });
 });
index 3a01f879f2239fed957a7015bbcf417efe94c35c..413239b6cfe24612b0a21394928b16d37e781d61 100644 (file)
@@ -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" ]
 %]
 
index 8b0d2858775b683d6ddc8a62cff5ef1b941341a1..0c48576a7f1fa98b04ecf9609fc9f1f9888d6870 100644 (file)
@@ -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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
-            { 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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
+                { 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 = '<a href="page.cgi?id=productdashboard.html&amp;product=' +
-                          encodeURIComponent(PD.product_name) + '&bug_status=' +
-                          encodeURIComponent(PD.bug_status) + '&tab=components';
-
-        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) + '</a>'
-              }
-            },
-            { key:"count", label:"Count", sortable:true },
-            { key:"percentage", label:"Percentage", sortable:false, allowHTML: true,
-              formatter: '<div class="percentage"><div class="bar" style="width:{value}%"></div><div class="percent">{value}%</div></div>' },
-            { 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 = '<a href="page.cgi?id=productdashboard.html&amp;product=' +
+                            encodeURIComponent(PD.product_name) + '&bug_status=' +
+                            encodeURIComponent(PD.bug_status) + '&tab=components';
 
-        columns[0].formatter = function (o) {
-            return summary_url + '&version=' +
-                   encodeURIComponent(o.value) + '">' +
-                   Y.Escape.html(o.value) + '</a>';
-        };
+            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) + '</a>'
+                }
+                },
+                { key:"count", label:"Count", sortable:true },
+                { key:"percentage", label:"Percentage", sortable:false, allowHTML: true,
+                formatter: '<div class="percentage"><div class="bar" style="width:{value}%"></div><div class="percent">{value}%</div></div>' },
+                { 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) + '</a>';
+                return summary_url + '&version=' +
+                    encodeURIComponent(o.value) + '">' +
+                    Y.Escape.html(o.value) + '</a>';
             };
 
-            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) + '</a>';
+                };
+
+                var milestonesDataTable = new Y.DataTable({
+                    columns: columns,
+                    data: PD.milestone_counts
+                });
+                milestonesDataTable.render('#milestone_counts');
+            }
         }
-    }
+    });
 });
index 5e3193a657dbd7c4cffad87b8a7e99f09d30ef56..57f890d6e52effd9e04c1fc387d30b4199a12ff6 100644 (file)
@@ -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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
-        { 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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
+            { 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');
+    });
 });
index b78b67867d55e6f6973df4cb9dfdb8984a288101..d496481faafa5f216de57cda1d4efb4b124c1295 100644 (file)
@@ -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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
-        { 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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
+            { 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');
+    });
 });
index 84e1758b6240cecc95b9c550d31e6dea750abdcb..d3a596c64c7428bb7c046073b4c9ee7aaa3830cd 100644 (file)
@@ -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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' }, 
-        { 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: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' }, 
+            { 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');
+    });
 });
index 1bef5b091cbe19333696be365af1e361b16a42e1..466446c13d19b9b5f5a685f2479657f80e18df88 100644 (file)
@@ -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: '<div class="percentage"><div class="bar" style="width:{value}%"></div><div class="percent">{value}%</div></div>' },
-        { 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: '<div class="percentage"><div class="bar" style="width:{value}%"></div><div class="percent">{value}%</div></div>' },
+            { 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');
+    });
 });
index 59d000d7bb0e792889e1663f73d438da45bc2596..c4501200a68dc411a2f0c1ad0434e27691051569 100644 (file)
@@ -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: '<div class="percentage"><div class="bar" style="width:{value}%"></div><div class="percent">{value}%</div></div>' }, 
-        { 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: '<div class="percentage"><div class="bar" style="width:{value}%"></div><div class="percent">{value}%</div></div>' }, 
+            { 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');
+    });
 });
index f1453c3564a8b8989a7062d04150678721ea1de9..571fbb0e1887d826e94a96af592899802b81c1b7 100644 (file)
@@ -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") %]
index 0e2637cf3a872ad05706cde995fadb8a3e8ee18f..85f21cf334bcb14d653c80b5d90850e331b3fc0c 100644 (file)
@@ -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") %]
index a37df1f89d7f76dec7af161fb951b0a07c1fb1f3..acf4a98d62a584c76ae5a23a374bf41a8a23816d 100644 (file)
@@ -28,7 +28,6 @@
                        'extensions/REMO/web/js/payment.js',
                        'js/util.js',
                        'js/field.js' ]
-   yui = ['connection', 'json'] 
 %]
 
 <script language="javascript" type="text/javascript"></script>
index 9ecaded3f69b282bae6ca1c159fd7fba0e1b8f25..c2640b4222aee731711a37d4bbceacaff5b1d25b 100644 (file)
   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 (file)
index 0000000..c8c90f7
--- /dev/null
@@ -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/yui3.js.list b/js/yui3.js.list
new file mode 100644 (file)
index 0000000..ef48c6f
--- /dev/null
@@ -0,0 +1,75 @@
+js/yui3/yui/yui-min.js
+js/yui3/oop/oop-min.js
+js/yui3/event-custom-base/event-custom-base-min.js
+js/yui3/event-base/event-base-min.js
+js/yui3/dom-core/dom-core-min.js
+js/yui3/dom-base/dom-base-min.js
+js/yui3/selector-native/selector-native-min.js
+js/yui3/selector/selector-min.js
+js/yui3/node-core/node-core-min.js
+js/yui3/dom-style/dom-style-min.js
+js/yui3/node-base/node-base-min.js
+js/yui3/event-delegate/event-delegate-min.js
+js/yui3/node-event-delegate/node-event-delegate-min.js
+js/yui3/pluginhost-base/pluginhost-base-min.js
+js/yui3/pluginhost-config/pluginhost-config-min.js
+js/yui3/node-pluginhost/node-pluginhost-min.js
+js/yui3/dom-screen/dom-screen-min.js
+js/yui3/node-screen/node-screen-min.js
+js/yui3/node-style/node-style-min.js
+js/yui3/escape/escape-min.js
+js/yui3/array-extras/array-extras-min.js
+js/yui3/array-invoke/array-invoke-min.js
+js/yui3/arraylist/arraylist-min.js
+js/yui3/attribute-core/attribute-core-min.js
+js/yui3/event-custom-complex/event-custom-complex-min.js
+js/yui3/attribute-observable/attribute-observable-min.js
+js/yui3/attribute-extras/attribute-extras-min.js
+js/yui3/attribute-base/attribute-base-min.js
+js/yui3/base-core/base-core-min.js
+js/yui3/base-observable/base-observable-min.js
+js/yui3/base-base/base-base-min.js
+js/yui3/base-build/base-build-min.js
+js/yui3/json-parse/json-parse-min.js
+js/yui3/model/model-min.js
+js/yui3/model-list/model-list-min.js
+js/yui3/datatable-core/datatable-core-min.js
+js/yui3/view/view-min.js
+js/yui3/classnamemanager/classnamemanager-min.js
+js/yui3/datatable-head/datatable-head-min.js
+js/yui3/datatable-body/datatable-body-min.js
+js/yui3/datatable-table/datatable-table-min.js
+js/yui3/attribute-complex/attribute-complex-min.js
+js/yui3/base-pluginhost/base-pluginhost-min.js
+js/yui3/event-synthetic/event-synthetic-min.js
+js/yui3/event-focus/event-focus-min.js
+js/yui3/widget-base/widget-base-min.js
+js/yui3/widget-htmlparser/widget-htmlparser-min.js
+js/yui3/widget-skin/widget-skin-min.js
+js/yui3/widget-uievents/widget-uievents-min.js
+js/yui3/datatable-base/datatable-base-min.js
+js/yui3/datatable-column-widths/datatable-column-widths-min.js
+js/yui3/intl/intl-min.js
+js/yui3/datatable-message/lang/datatable-message_en.js
+js/yui3/datatable-message/datatable-message-min.js
+js/yui3/datatable-mutable/datatable-mutable-min.js
+js/yui3/datatable-sort/lang/datatable-sort_en.js
+js/yui3/datatable-sort/datatable-sort-min.js
+js/yui3/plugin/plugin-min.js
+js/yui3/datasource-local/datasource-local-min.js
+js/yui3/datatable-datasource/datatable-datasource-min.js
+js/yui3/json-stringify/json-stringify-min.js
+js/yui3/querystring-stringify-simple/querystring-stringify-simple-min.js
+js/yui3/io-base/io-base-min.js
+js/yui3/datasource-io/datasource-io-min.js
+js/yui3/dataschema-base/dataschema-base-min.js
+js/yui3/dataschema-json/dataschema-json-min.js
+js/yui3/datasource-jsonschema/datasource-jsonschema-min.js
+js/yui3/cookie/cookie-min.js
+js/yui3/gallery-datatable-row-expansion-bmo/gallery-datatable-row-expansion-bmo-min.js
+js/yui3/handlebars-base/handlebars-base-min.js
+js/yui3/handlebars-compiler/handlebars-compiler-min.js
+js/yui3/gallery-funcprog/gallery-funcprog-min.js
+js/yui3/gallery-node-optimizations/gallery-node-optimizations-min.js
+js/yui3/gallery-math/gallery-math-min.js
+js/yui3/gallery-object-extras/gallery-object-extras-min.js
diff --git a/skins/yui.css.list b/skins/yui.css.list
new file mode 100644 (file)
index 0000000..e6e5010
--- /dev/null
@@ -0,0 +1,5 @@
+js/yui/assets/skins/sam/calendar.css
+js/yui/assets/skins/sam/container.css
+js/yui/assets/skins/sam/datatable.css
+js/yui/assets/skins/sam/button.css
+js/yui/assets/skins/sam/paginator.css
diff --git a/skins/yui3.css.list b/skins/yui3.css.list
new file mode 100644 (file)
index 0000000..7df8f65
--- /dev/null
@@ -0,0 +1,5 @@
+js/yui3/widget-base/assets/skins/sam/widget-base.css
+js/yui3/datatable-base/assets/skins/sam/datatable-base.css
+js/yui3/datatable-message/assets/skins/sam/datatable-message.css
+js/yui3/datatable-sort/assets/skins/sam/datatable-sort.css
+js/yui3/gallery-datatable-row-expansion-bmo/assets/skins/sam/gallery-datatable-row-expansion-bmo.css
index eae63adf13b843ee13868d2f8aa0073c7c18d277..710c123341a12cc43168b37a56fdd911c5d9137c 100644 (file)
@@ -35,7 +35,6 @@
   subheader = subheader
   generate_api_token = 1
   style_urls = [ 'skins/standard/attachment.css' ]
-  yui = [ 'connection', 'json' ]
   javascript_urls = [ "js/attachment.js", 'js/field.js', "js/util.js", "js/TUI.js" ]
   doc_section = "attachments.html"
 %]
index cb0b1c71a752e78580547f81c82a3cfff602fd1e..4e0195e34141eaaba0be0d3fc428d1004ed44f02 100644 (file)
@@ -39,7 +39,6 @@
   subheader = subheader
   generate_api_token = 1
   doc_section = "attachments.html"
-  yui = [ 'connection', 'json' ]
   javascript_urls = ['js/attachment.js', 'js/field.js']
   style_urls = ['skins/standard/attachment.css']
   bodyclasses = "no_javascript"
index ba5d082732107da5e988c8a59a3651b7fc536beb..ab95c38a78540f3db969b4accad6a9de54e95b00 100644 (file)
@@ -31,7 +31,6 @@
 [% PROCESS global/header.html.tmpl
   title = title
   generate_api_token = 1
-  yui = [ 'calendar', 'datatable', 'button' ]
   style_urls = [ 'skins/standard/attachment.css',
                  'skins/standard/enter_bug.css',
                  'skins/custom/create_bug.css' ]
index c8acca61409172741b468de427ce00cdc2c6c4ec..2aac89ddb702a70b8e6c3272dbe708821b5f1f4a 100644 (file)
@@ -41,8 +41,6 @@
 [% generate_api_token = 1 %]
 [% header = "$terms.Bug&nbsp;$bug.bug_id" %]
 [% header_addl_info = "Last modified: $filtered_timestamp" %]
-[% yui = ['calendar', 'connection', 'json'] %]
-[% yui.push('container') IF user.can_tag_comments %]
 [% javascript_urls = [ "js/util.js", "js/field.js" ] %]
 [% javascript_urls.push("js/bug.js") IF user.id  %]
 [% javascript_urls.push('js/comment-tagging.js')
index 0166539eab5070b81e93a0659c2761b83a68f125..65ecc3e72142964393a0f85fa7f0275b1e0b75dc 100644 (file)
@@ -33,7 +33,6 @@
     header = header 
     style_urls = ["skins/standard/summarize-time.css"]
     doc_section = "timetracking.html"
-    yui = ['calendar']
     javascript_urls = [ "js/util.js", "js/field.js" ]
     %]
 
index 5cd0fef7940c531a159820ae78b415a4192bc35b..ac753dca971c47921060f6e7d019997edc902c10 100644 (file)
   header_addl_info = ""
   onload = ""
   style_urls = []
-  yui = []
-  yui_css = {}
-  yui_deps = {}
   no_yui = 0
   jquery = []
   jquery_css = []
   generate_api_token = 0
 %]
 
-[% IF NOT no_yui %]
-  [% SET yui_css = {
-    calendar     => 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 = [
 
     [% 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 %]
       [% 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") %]
       [% 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');
               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 %]
index 20d023b42d3e5eef5a568d062f5feab54c91ccca..b0fb1d4d23ae65d55c5e68406fe3b6b3c0d091fe 100644 (file)
 
 [% 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 %]');
index 5e154f5dff7d4ad41ba996ad610cd211bad667f2..1c49fee98fd168fdd9eba6e74dab18ab56b53df2 100644 (file)
@@ -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"
index 38b64df0b7b87b6e2cea8c5baa785ae2fa4a52bf..deb57020220ca81794e1df8464ed7c3849fdb6b1 100644 (file)
@@ -77,7 +77,6 @@
     .ttotal, .ttotal td { background-color: #cfffdf } /* light green */
   "
   header_addl_info = time
-  yui = ['datatable']
 %]
 
 [% IF debug %]
index 3956a1ff2297a1078a166c2b5c3fe02aa896bc09..60f47a916fa157b399f0499de83c2cca6c6d5031 100644 (file)
@@ -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"
index 6b7678b233c84f9d9db4097bd779ee47e5029e0a..69e7a63071eeabb4a8470f294a3abab6ec5c6080 100644 (file)
@@ -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" ]
index 00f6434e96ad7931bc919cf42ca62aa37b6091fc..4a7ff1992a269228883071ea3847329a325c888f 100644 (file)
@@ -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 %]
index 20e8e184d191acbb721776846f4dee6889328c65..b7e7b59c88877f0b908c3414004d68706032dc9b 100644 (file)
@@ -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" ]
index 7ff54b8dae8f879433f95c5691fddf188ee83f68..7ac4ac5a03fbc5bf8f21579e69eab578c363cf46 100644 (file)
@@ -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" ]