bundle js libs together

This commit is contained in:
Athou
2013-04-13 18:50:38 +02:00
parent 2cac91c5fa
commit 8fed8ea8a3
6 changed files with 133 additions and 56 deletions

View File

@@ -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<JavaScriptResourceReference> 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

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<head>
<title>CommaFeed</title>
<meta charset="utf-8">
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
</head>
<body>
<wicket:child />
<wicket:container wicket:id="footer-container"/>
</body>
</html>

View File

@@ -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);

View File

@@ -1,15 +1,12 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<head>
<title>CommaFeed</title>
<meta charset="utf-8">
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
</head>
<body>
<div ng-app="commafeed" id="main" class="main">
<div ui-view>
<wicket:extend>
<div ng-app="commafeed" id="main" class="main">
<div ui-view>
</div>
</div>
</div>
</wicket:extend>
</body>
</html>

View File

@@ -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);

View File

@@ -1,42 +1,38 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<head>
<meta charset="utf-8">
<title>CommaFeed</title>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
</head>
<body>
<div class="container">
<div class="row header">
<div class="text-center">
<h1>
<a wicket:id="logo-link">
<img src="images/logo.png"></img>
</a>
</h1>
<wicket:extend>
<div class="container">
<div class="row header">
<div class="text-center">
<h1>
<a wicket:id="logo-link">
<img src="images/logo.png"></img>
</a>
</h1>
</div>
CommaFeed is a bloat-free feed reader. It aims to replace Google Reader while keeping things simple.
</div>
CommaFeed is a bloat-free feed reader. It aims to replace Google Reader while keeping things simple.
</div>
<div class="row">
<div class="span6">
<div class="well" id="login-panel">
<h3>Login</h3>
<span wicket:id="login"></span>
<div class="row">
<div class="span6">
<div class="well" id="login-panel">
<h3>Login</h3>
<span wicket:id="login"></span>
</div>
</div>
<div class="span6" wicket:enclosure="register">
<div class="well" id="register-panel">
<h3>Register</h3>
<span wicket:id="register"></span>
</div>
</div>
</div>
<div class="span6" wicket:enclosure="register">
<div class="well" id="register-panel">
<h3>Register</h3>
<span wicket:id="register"></span>
</div>
<hr />
<div class="footer">
&copy; CommaFeed - 2013
</div>
</div>
<hr />
<div class="footer">
&copy; CommaFeed - 2013
</div>
</div>
</wicket:extend>
</body>
</html>