[Rt-commit] rt branch, 4.2/load-menus-sooner, created. rt-4.0.6-446-g09a437f

Thomas Sibley trs at bestpractical.com
Thu Jul 5 17:18:31 EDT 2012


The branch, 4.2/load-menus-sooner has been created
        at  09a437ff5fd6e0a3db592fb161c1fbfbadf0ccd9 (commit)

- Log -----------------------------------------------------------------
commit 09a437ff5fd6e0a3db592fb161c1fbfbadf0ccd9
Author: Thomas Sibley <trs at bestpractical.com>
Date:   Thu Jul 5 14:12:39 2012 -0700

    Initialize menus as soon as possible
    
    This makes RT pages seem to load much quicker, especially long ticket
    histories where the entire page needed to be loaded before menus were
    initialized.
    
    This creates a new theme "callback" (or "plugin") called AfterMenus,
    which functions  similarly to the existing InHeader component.  The
    javascript to initialize the menus takes care to ensure all the external
    JS libraries it needs are present before running, otherwise menu init is
    deferred until the DOM is ready (the old behaviour).

diff --git a/share/html/Elements/PageLayout b/share/html/Elements/PageLayout
index 449a616..a9dbd47 100755
--- a/share/html/Elements/PageLayout
+++ b/share/html/Elements/PageLayout
@@ -50,6 +50,11 @@
 <div id="page-navigation"><& /Elements/Menu, menu => PageMenu(), id => 'page-menu', 'parent_id' => 'page' &></div>
 % }
 <div id="topactions"><& /Elements/WidgetBar, menu => PageWidgets() &></div>
+
+% if ($m->comp_exists($stylesheet_plugin) ) {
+<& $stylesheet_plugin &>
+% }
+
 <div id="body">
 % $m->callback( %ARGS, CallbackName => 'BeforeBody' );
 % $m->flush_buffer(); # we've got the page laid out, let's flush the buffer;
@@ -57,3 +62,9 @@
 $title => $m->callers(-1)->path
 $show_menu => 1
 </%ARGS>
+<%init>
+my $style = $session{'CurrentUser'}
+          ? $session{'CurrentUser'}->Stylesheet
+          : RT->Config->Get('WebDefaultStylesheet');
+my $stylesheet_plugin = "/NoAuth/css/".$style."/AfterMenus";
+</%init>
diff --git a/share/html/NoAuth/css/aileron/AfterMenus b/share/html/NoAuth/css/aileron/AfterMenus
new file mode 100644
index 0000000..f8654df
--- /dev/null
+++ b/share/html/NoAuth/css/aileron/AfterMenus
@@ -0,0 +1,17 @@
+<script type="text/javascript">
+var initMenus = function() {
+    jQuery.fn.supersubs.defaults = {
+        maxWidth: 30,
+        extraWidth: 2
+    };
+
+    jQuery("#app-nav.toplevel").addClass('sf-menu sf-js-enabled sf-shadow').supersubs().superfish({ speed: 'fast' });
+    jQuery("#page-menu.toplevel").addClass('sf-menu sf-js-enabled').supersubs().superfish({ dropShadows: false, speed: 'fast' }).supposition();
+};
+
+// If everything is loaded, init NOW.  Otherwise, defer to DOM ready.
+if (jQuery.fn.supersubs && jQuery.fn.superfish && jQuery.fn.supposition)
+    initMenus();
+else
+    jQuery(initMenus);
+</script>
diff --git a/share/html/NoAuth/css/aileron/InHeader b/share/html/NoAuth/css/aileron/InHeader
index e6d4cb3..caf8481 100644
--- a/share/html/NoAuth/css/aileron/InHeader
+++ b/share/html/NoAuth/css/aileron/InHeader
@@ -51,14 +51,3 @@
 <!--[if lt IE 7]>
 <link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/aileron/msie6.css" type="text/css" media="all" />
 <![endif]-->
-<script type="text/javascript">
-jQuery(document).ready(function(){
-    jQuery.fn.supersubs.defaults = {
-        maxWidth: 30,
-        extraWidth: 2
-    };
-
-    jQuery("#app-nav.toplevel").addClass('sf-menu sf-js-enabled sf-shadow').supersubs().superfish({ speed: 'fast' });
-    jQuery("#page-menu.toplevel").addClass('sf-menu sf-js-enabled').supersubs().superfish({ dropShadows: false, speed: 'fast' }).supposition();
-});
-</script>
diff --git a/share/html/NoAuth/css/web2/AfterMenus b/share/html/NoAuth/css/web2/AfterMenus
new file mode 100644
index 0000000..15ae083
--- /dev/null
+++ b/share/html/NoAuth/css/web2/AfterMenus
@@ -0,0 +1,27 @@
+<script type="text/javascript">
+var initMenus = function() {
+    jQuery("#quick-personal").append('<ul id="prefs-menu"></ul>');
+    jQuery("#li-preferences").detach().appendTo("#prefs-menu");
+    jQuery("#li-tools-config").detach().appendTo("#app-nav");
+    jQuery("#li-search-simple").detach().insertBefore("#li-search");
+    jQuery("#li-tools-approval").detach().appendTo("#app-nav");
+
+    jQuery("#li-page-bookmark").detach().appendTo("#li-page-actions>ul");
+    jQuery("#li-page-actions>ul").attr("id","page-action-menu").detach().insertAfter("#topactions");
+
+    jQuery.fn.supersubs.defaults = {
+        maxWidth: 30,
+        extraWidth: 2
+    };
+
+    jQuery("#page-menu.toplevel").addClass("sf-menu sf-js-enabled").supersubs().superfish({ dropShadows: false, speed: 'fast' }).supposition();
+    jQuery("#app-nav.toplevel").addClass("sf-menu sf-vertical sf-js-enabled").supersubs().superfish({ speed: 'fast' }).supposition();
+    jQuery("#prefs-menu").addClass("sf-menu sf-js-enabled").supersubs().superfish().supposition({ speed: 'fast' });
+};
+
+// If everything is loaded, init NOW.  Otherwise, defer to DOM ready.
+if (jQuery.fn.supersubs && jQuery.fn.superfish && jQuery.fn.supposition)
+    initMenus();
+else
+    jQuery(initMenus);
+</script>
diff --git a/share/html/NoAuth/css/web2/InHeader b/share/html/NoAuth/css/web2/InHeader
index a083eec..e882112 100644
--- a/share/html/NoAuth/css/web2/InHeader
+++ b/share/html/NoAuth/css/web2/InHeader
@@ -52,24 +52,3 @@
 <!--[if lt IE 7]>
 <link rel="stylesheet" href="<%RT->Config->Get('WebPath')%>/NoAuth/css/web2/msie6.css" type="text/css" media="all" />
 <![endif]-->
-<script type="text/javascript">
-jQuery(document).ready(function(){
-    jQuery("#quick-personal").append('<ul id="prefs-menu"></ul>');
-    jQuery("#li-preferences").detach().appendTo("#prefs-menu");
-    jQuery("#li-tools-config").detach().appendTo("#app-nav");
-    jQuery("#li-search-simple").detach().insertBefore("#li-search");
-    jQuery("#li-tools-approval").detach().appendTo("#app-nav");
-
-    jQuery("#li-page-bookmark").detach().appendTo("#li-page-actions>ul");
-    jQuery("#li-page-actions>ul").attr("id","page-action-menu").detach().insertAfter("#topactions");
-
-    jQuery.fn.supersubs.defaults = {
-        maxWidth: 30,
-        extraWidth: 2
-    };
-
-    jQuery("#page-menu.toplevel").addClass("sf-menu sf-js-enabled").supersubs().superfish({ dropShadows: false, speed: 'fast' }).supposition();
-    jQuery("#app-nav.toplevel").addClass("sf-menu sf-vertical sf-js-enabled").supersubs().superfish({ speed: 'fast' }).supposition();
-    jQuery("#prefs-menu").addClass("sf-menu sf-js-enabled").supersubs().superfish().supposition({ speed: 'fast' });
-});
-</script>

-----------------------------------------------------------------------


More information about the Rt-commit mailing list