From 8fed8ea8a3252de6d420a2c4d24fd2aed31dcf99 Mon Sep 17 00:00:00 2001 From: Athou Date: Sat, 13 Apr 2013 18:50:38 +0200 Subject: [PATCH] bundle js libs together --- .../frontend/CommaFeedApplication.java | 94 ++++++++++++++++--- .../commafeed/frontend/pages/BasePage.html | 12 +++ .../commafeed/frontend/pages/BasePage.java | 7 +- .../commafeed/frontend/pages/HomePage.html | 15 ++- .../commafeed/frontend/pages/HomePage.java | 1 + .../commafeed/frontend/pages/WelcomePage.html | 60 ++++++------ 6 files changed, 133 insertions(+), 56 deletions(-) create mode 100644 src/main/java/com/commafeed/frontend/pages/BasePage.html diff --git a/src/main/java/com/commafeed/frontend/CommaFeedApplication.java b/src/main/java/com/commafeed/frontend/CommaFeedApplication.java index 462346d1..f65063bb 100644 --- a/src/main/java/com/commafeed/frontend/CommaFeedApplication.java +++ b/src/main/java/com/commafeed/frontend/CommaFeedApplication.java @@ -2,6 +2,7 @@ package com.commafeed.frontend; import java.io.IOException; import java.net.URL; +import java.util.List; import java.util.jar.JarFile; import javax.enterprise.inject.spi.BeanManager; @@ -32,6 +33,7 @@ import org.apache.wicket.request.Response; import org.apache.wicket.request.component.IRequestableComponent; import org.apache.wicket.request.cycle.AbstractRequestCycleListener; import org.apache.wicket.request.cycle.RequestCycle; +import org.apache.wicket.request.resource.JavaScriptResourceReference; import org.apache.wicket.util.cookies.CookieUtils; import org.jboss.vfs.VirtualFile; import org.reflections.ReflectionsException; @@ -48,9 +50,28 @@ import com.commafeed.frontend.pages.HomePage; import com.commafeed.frontend.pages.LogoutPage; import com.commafeed.frontend.pages.TestRssPage; import com.commafeed.frontend.pages.WelcomePage; +import com.commafeed.frontend.references.angular.AngularReference; +import com.commafeed.frontend.references.angular.AngularResourceReference; +import com.commafeed.frontend.references.angular.AngularSanitizeReference; +import com.commafeed.frontend.references.angularui.AngularUIReference; +import com.commafeed.frontend.references.angularuibootstrap.AngularUIBootstrapReference; +import com.commafeed.frontend.references.angularuistate.AngularUIStateReference; +import com.commafeed.frontend.references.codemirror.CodeMirrorCssReference; +import com.commafeed.frontend.references.codemirror.CodeMirrorReference; +import com.commafeed.frontend.references.mousetrap.MouseTrapReference; +import com.commafeed.frontend.references.nggrid.NGGridReference; +import com.commafeed.frontend.references.nginfinitescroll.NGInfiniteScrollReference; +import com.commafeed.frontend.references.ngupload.NGUploadReference; +import com.commafeed.frontend.references.select2.Select2Reference; +import com.commafeed.frontend.references.spinjs.SpinJSReference; import com.commafeed.frontend.utils.exception.DisplayExceptionPage; +import com.google.api.client.util.Lists; +import com.google.javascript.jscomp.CompilationLevel; import de.agilecoders.wicket.Bootstrap; +import de.agilecoders.wicket.javascript.GoogleClosureJavaScriptCompressor; +import de.agilecoders.wicket.javascript.YuiCssCompressor; +import de.agilecoders.wicket.markup.html.RenderJavaScriptToFooterHeaderResponseDecorator; import de.agilecoders.wicket.settings.BootstrapSettings; public class CommaFeedApplication extends AuthenticatedWebApplication { @@ -71,11 +92,70 @@ public class CommaFeedApplication extends AuthenticatedWebApplication { mountPage("testfeed", TestRssPage.class); setupInjection(); + setupSecurity(); + setupBootstrap(); + setupResourceBundles(); getMarkupSettings().setStripWicketTags(true); getMarkupSettings().setCompressWhitespace(true); getMarkupSettings().setDefaultMarkupEncoding("UTF-8"); + getResourceSettings().setJavaScriptCompressor( + new GoogleClosureJavaScriptCompressor( + CompilationLevel.SIMPLE_OPTIMIZATIONS)); + getResourceSettings().setCssCompressor(new YuiCssCompressor()); + + getRequestCycleListeners().add(new AbstractRequestCycleListener() { + @Override + public IRequestHandler onException(RequestCycle cycle, Exception ex) { + AjaxRequestTarget target = cycle.find(AjaxRequestTarget.class); + // redirect to the error page if ajax request, render error on + // current page otherwise + RedirectPolicy policy = target == null ? RedirectPolicy.NEVER_REDIRECT + : RedirectPolicy.AUTO_REDIRECT; + return new RenderPageRequestHandler(new PageProvider( + new DisplayExceptionPage(ex)), policy); + } + }); + } + + private void setupResourceBundles() { + + List refs = Lists.newArrayList(); + + refs.add((JavaScriptResourceReference) getJavaScriptLibrarySettings() + .getJQueryReference()); + refs.add((JavaScriptResourceReference) Bootstrap.getSettings() + .getJsResourceReference()); + + refs.add(AngularReference.INSTANCE); + refs.add(AngularResourceReference.INSTANCE); + refs.add(AngularSanitizeReference.INSTANCE); + refs.add(AngularUIReference.INSTANCE); + refs.add(AngularUIBootstrapReference.INSTANCE); + refs.add(AngularUIStateReference.INSTANCE); + refs.add(NGUploadReference.INSTANCE); + refs.add(NGInfiniteScrollReference.INSTANCE); + refs.add(Select2Reference.INSTANCE); + refs.add(SpinJSReference.INSTANCE); + refs.add(MouseTrapReference.INSTANCE); + refs.add(NGGridReference.INSTANCE); + refs.add(CodeMirrorReference.INSTANCE); + refs.add(CodeMirrorCssReference.INSTANCE); + + getResourceBundles().addJavaScriptBundle(CommaFeedApplication.class, + "libs.js", refs.toArray(new JavaScriptResourceReference[0])); + + } + + private void setupBootstrap() { + BootstrapSettings settings = new BootstrapSettings(); + settings.setJsResourceFilterName("footer-container"); + Bootstrap.install(this, settings); + setHeaderResponseDecorator(new RenderJavaScriptToFooterHeaderResponseDecorator()); + } + + private void setupSecurity() { getSecuritySettings().setAuthenticationStrategy( new DefaultAuthenticationStrategy("LoggedIn") { @@ -122,20 +202,6 @@ public class CommaFeedApplication extends AuthenticatedWebApplication { return true; } }); - - getRequestCycleListeners().add(new AbstractRequestCycleListener() { - @Override - public IRequestHandler onException(RequestCycle cycle, Exception ex) { - AjaxRequestTarget target = cycle.find(AjaxRequestTarget.class); - // redirect to the error page if ajax request, render error on - // current page otherwise - RedirectPolicy policy = target == null ? RedirectPolicy.NEVER_REDIRECT - : RedirectPolicy.AUTO_REDIRECT; - return new RenderPageRequestHandler(new PageProvider( - new DisplayExceptionPage(ex)), policy); - } - }); - Bootstrap.install(Application.get(), new BootstrapSettings()); } @Override diff --git a/src/main/java/com/commafeed/frontend/pages/BasePage.html b/src/main/java/com/commafeed/frontend/pages/BasePage.html new file mode 100644 index 00000000..7529eebb --- /dev/null +++ b/src/main/java/com/commafeed/frontend/pages/BasePage.html @@ -0,0 +1,12 @@ + + + + CommaFeed + + + + + + + + diff --git a/src/main/java/com/commafeed/frontend/pages/BasePage.java b/src/main/java/com/commafeed/frontend/pages/BasePage.java index 46d7c267..e5d79372 100644 --- a/src/main/java/com/commafeed/frontend/pages/BasePage.java +++ b/src/main/java/com/commafeed/frontend/pages/BasePage.java @@ -3,6 +3,7 @@ package com.commafeed.frontend.pages; import javax.inject.Inject; import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.head.filter.HeaderResponseContainer; import org.apache.wicket.markup.html.WebPage; import com.commafeed.backend.dao.FeedCategoryDAO; @@ -17,7 +18,7 @@ import com.commafeed.backend.dao.UserSettingsDAO; import de.agilecoders.wicket.Bootstrap; @SuppressWarnings("serial") -public class BasePage extends WebPage { +public abstract class BasePage extends WebPage { @Inject protected FeedDAO feedDAO; @@ -43,6 +44,10 @@ public class BasePage extends WebPage { @Inject protected UserRoleDAO userRoleDAO; + public BasePage() { + add(new HeaderResponseContainer("footer-container", "footer-container")); + } + @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); diff --git a/src/main/java/com/commafeed/frontend/pages/HomePage.html b/src/main/java/com/commafeed/frontend/pages/HomePage.html index 90b1cdaf..f273775b 100644 --- a/src/main/java/com/commafeed/frontend/pages/HomePage.html +++ b/src/main/java/com/commafeed/frontend/pages/HomePage.html @@ -1,15 +1,12 @@ - - CommaFeed - - - -
-
- + +
+
+ +
-
+ diff --git a/src/main/java/com/commafeed/frontend/pages/HomePage.java b/src/main/java/com/commafeed/frontend/pages/HomePage.java index debbe764..51d61bed 100644 --- a/src/main/java/com/commafeed/frontend/pages/HomePage.java +++ b/src/main/java/com/commafeed/frontend/pages/HomePage.java @@ -39,6 +39,7 @@ public class HomePage extends BasePage { @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); + AngularReference.renderHead(response); AngularResourceReference.renderHead(response); AngularSanitizeReference.renderHead(response); diff --git a/src/main/java/com/commafeed/frontend/pages/WelcomePage.html b/src/main/java/com/commafeed/frontend/pages/WelcomePage.html index 5107fd1a..7930af51 100644 --- a/src/main/java/com/commafeed/frontend/pages/WelcomePage.html +++ b/src/main/java/com/commafeed/frontend/pages/WelcomePage.html @@ -1,42 +1,38 @@ - - -CommaFeed - - -
-
-
-

- - - -

+ +
+
+
+

+ + + +

+
+ CommaFeed is a bloat-free feed reader. It aims to replace Google Reader while keeping things simple.
- CommaFeed is a bloat-free feed reader. It aims to replace Google Reader while keeping things simple. -
-
-
-
-

Login

- +
+
+
+

Login

+ +
+
+
+
+

Register

+ +
-
-
-

Register

- -
+ +
+
- -
- - -
+