You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/11/17 11:09:19 UTC
[2/3] git commit: ISIS-591, ISIS-589: loading javascript from footer
ISIS-591, ISIS-589: loading javascript from footer
In addition, also bundling CSS of some other components.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/0d8076da
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/0d8076da
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/0d8076da
Branch: refs/heads/master
Commit: 0d8076dacf2709118108c3e1d070889f523b163c
Parents: c9460e4
Author: Dan Haywood <da...@apache.org>
Authored: Sun Nov 17 09:19:26 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Sun Nov 17 09:19:26 2013 +0000
----------------------------------------------------------------------
.../wicket/viewer/IsisWicketApplication.java | 34 ++++++++++++++------
.../entity/properties/EntityPropertiesForm.java | 2 +-
.../widgets/cssmenu/CssMenuItemPanel.java | 2 +-
.../viewer/wicket/ui/pages/PageAbstract.html | 3 ++
.../viewer/wicket/ui/pages/PageAbstract.java | 11 +++++--
5 files changed, 37 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/0d8076da/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index 32a933a..953106b 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -43,8 +43,9 @@ import org.apache.wicket.RuntimeConfigurationType;
import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication;
import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
import org.apache.wicket.guice.GuiceComponentInjector;
-import org.apache.wicket.markup.html.IPackageResourceGuard;
-import org.apache.wicket.markup.html.SecurePackageResourceGuard;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.filter.JavaScriptFilteredIntoFooterHeaderResponse;
+import org.apache.wicket.markup.html.IHeaderResponseDecorator;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.Response;
@@ -82,14 +83,16 @@ import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobOrClobPanelAbstract;
+import org.apache.isis.viewer.wicket.ui.components.additionallinks.AdditionalLinksPanel;
+import org.apache.isis.viewer.wicket.ui.components.entity.properties.EntityPropertiesForm;
import org.apache.isis.viewer.wicket.ui.components.scalars.string.MultiLineStringPanel;
+import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuItemPanel;
+import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssSubMenuItemsPanel;
import org.apache.isis.viewer.wicket.ui.pages.BookmarkedPagesModelProvider;
import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
-import org.apache.isis.viewer.wicket.ui.selector.links.LinksSelectorPanelAbstract;
import org.apache.isis.viewer.wicket.viewer.integration.isis.DeploymentTypeWicketAbstract;
import org.apache.isis.viewer.wicket.viewer.integration.isis.WicketServer;
import org.apache.isis.viewer.wicket.viewer.integration.isis.WicketServerPrototype;
@@ -236,13 +239,18 @@ public class IsisWicketApplication extends AuthenticatedWebApplication implement
// must be done after injected componentFactoryRegistry into the app itself
buildCssBundle();
- IPackageResourceGuard guard = getResourceSettings().getPackageResourceGuard();
- if (guard instanceof SecurePackageResourceGuard)
+ // filters Javascript header contributions so rendered to bottom of page
+ setHeaderResponseDecorator(new IHeaderResponseDecorator()
{
- SecurePackageResourceGuard secureGuard = (SecurePackageResourceGuard) guard;
- secureGuard.addPattern("+org/apache/wicket/merged-resources");
- }
-
+ @Override
+ public IHeaderResponse decorate(IHeaderResponse response)
+ {
+ // use this header resource decorator to load all JavaScript resources in the page
+ // footer (after </body>)
+ return new JavaScriptFilteredIntoFooterHeaderResponse(response, "footerJS");
+ }
+ });
+
} catch(RuntimeException ex) {
// because Wicket's handling in its WicketFilter (that calls this method) does not log the exception.
LOG.error("Failed to initialize", ex);
@@ -284,6 +292,12 @@ public class IsisWicketApplication extends AuthenticatedWebApplication implement
// instead.
// references.add(PanelUtil.cssResourceReferenceFor(LinksSelectorPanelAbstract.class));
+ // components without factories
+ references.add(PanelUtil.cssResourceReferenceFor(AdditionalLinksPanel.class));
+ references.add(PanelUtil.cssResourceReferenceFor(CssSubMenuItemsPanel.class));
+ references.add(PanelUtil.cssResourceReferenceFor(CssMenuItemPanel.class));
+ references.add(PanelUtil.cssResourceReferenceFor(EntityPropertiesForm.class));
+
// non-conforming component factories
references.add(PanelUtil.cssResourceReferenceFor(MultiLineStringPanel.class));
}
http://git-wip-us.apache.org/repos/asf/isis/blob/0d8076da/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
index 83c2e07..e4168cc 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/properties/EntityPropertiesForm.java
@@ -73,7 +73,7 @@ import org.apache.isis.viewer.wicket.ui.panels.FormAbstract;
import org.apache.isis.viewer.wicket.ui.util.Components;
import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
-class EntityPropertiesForm extends FormAbstract<ObjectAdapter> {
+public class EntityPropertiesForm extends FormAbstract<ObjectAdapter> {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/isis/blob/0d8076da/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItemPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItemPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItemPanel.java
index 3c4628b..3a6792c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItemPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/CssMenuItemPanel.java
@@ -24,7 +24,7 @@ import org.apache.wicket.model.Model;
/**
* Panel containing a single {@link CssMenuItem}.
*/
-class CssMenuItemPanel extends CssMenuItemPanelAbstract<CssMenuItemPanel.MyModel> {
+public class CssMenuItemPanel extends CssMenuItemPanelAbstract<CssMenuItemPanel.MyModel> {
private static final long serialVersionUID = 1L;
http://git-wip-us.apache.org/repos/asf/isis/blob/0d8076da/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
index b6ecb04..237cdc0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.html
@@ -70,5 +70,8 @@
</div>
</div>
+ <div class="javascriptInFooter">
+ <wicket:container wicket:id="footerJS"></wicket:container>
+ </div>
</body>
</html>
http://git-wip-us.apache.org/repos/asf/isis/blob/0d8076da/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index d882b17..396196a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -35,6 +35,8 @@ import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.head.filter.FilteredHeaderItem;
+import org.apache.wicket.markup.head.filter.HeaderResponseContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
@@ -142,6 +144,9 @@ public abstract class PageAbstract extends WebPage {
addAboutLink();
add(new Label(ID_PAGE_TITLE, PageParameterNames.PAGE_TITLE.getStringFrom(pageParameters, applicationName)));
+ // ensure that all collected JavaScript contributions are loaded at the page footer
+ add(new HeaderResponseContainer("footerJS", "footerJS"));
+
} catch(RuntimeException ex) {
LOG.error("Failed to construct page, going back to sign in page", ex);
@@ -180,9 +185,9 @@ public abstract class PageAbstract extends WebPage {
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())));
- response.render(new PriorityHeaderItem(JavaScriptReferenceHeaderItem.forReference(JQUERY_JGROWL_JS)));
- response.render(new PriorityHeaderItem(JavaScriptReferenceHeaderItem.forReference(JQUERY_LIVEQUERY_JS)));
- response.render(new PriorityHeaderItem(JavaScriptReferenceHeaderItem.forReference(JQUERY_ISIS_WICKET_VIEWER_JS)));
+ response.render(JavaScriptReferenceHeaderItem.forReference(JQUERY_JGROWL_JS));
+ response.render(JavaScriptReferenceHeaderItem.forReference(JQUERY_LIVEQUERY_JS));
+ response.render(JavaScriptReferenceHeaderItem.forReference(JQUERY_ISIS_WICKET_VIEWER_JS));
final String feedbackMsg = JGrowlUtil.asJGrowlCalls(getMessageBroker());
if (!Strings.isNullOrEmpty(feedbackMsg)) {