You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by rm...@apache.org on 2013/03/19 22:16:11 UTC

[6/9] git commit: Making action link and button also work with transient objects.

Making action link and button also work with transient objects.

Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d25e8062
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d25e8062
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d25e8062

Branch: refs/heads/master
Commit: d25e8062e68e846795cab79243d316d26d1b078c
Parents: 98bfcbc
Author: rmatthews <rm...@nakedobjects.org>
Authored: Sat Mar 16 23:26:42 2013 +0000
Committer: rmatthews <rm...@nakedobjects.org>
Committed: Tue Mar 19 19:38:09 2013 +0000

----------------------------------------------------------------------
 .../dispatcher/view/action/ActionButton.java       |    7 ++++---
 .../scimpi/dispatcher/view/action/ActionLink.java  |    4 ++--
 .../scimpi/dispatcher/view/action/Methods.java     |    2 +-
 3 files changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/d25e8062/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionButton.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionButton.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionButton.java
index 0192724..cb0b886 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionButton.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionButton.java
@@ -21,6 +21,7 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.action;
 
 import org.apache.log4j.Logger;
 
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -103,7 +104,7 @@ public class ActionButton extends AbstractElementProcessor {
 
         if (MethodsUtils.isVisibleAndUsable(object, action, where) && MethodsUtils.canRunMethod(object, action, objectParameters).isAllowed()) {
             // TODO use the form creation mechanism as used in ActionForm
-            write(request, target, action, parameters, objectId, version, forwardResultTo, forwardVoidTo, forwardErrorTo, variable, scope, buttonTitle, completionMessage, resultOverride, idName, className);
+            write(request, target, action, parameters, version, forwardResultTo, forwardVoidTo, forwardErrorTo, variable, scope, buttonTitle, completionMessage, resultOverride, idName, className);
         }
 
         if (showMessage) {
@@ -144,7 +145,6 @@ public class ActionButton extends AbstractElementProcessor {
             final ObjectAdapter object,
             final ObjectAction action,
             final String[] parameters,
-            final String objectId,
             final String version,
             String forwardResultTo,
             String forwardVoidTo,
@@ -181,13 +181,14 @@ public class ActionButton extends AbstractElementProcessor {
          * Form.createForm(request, buttonTitle, fields, hiddenFields, false);
          */
 
+        final String objectId = context.mapObject(object, Scope.INTERACTION);
         final String idSegment = idName == null ? "" : ("id=\"" + idName + "\" ");
         final String classSegment = "class=\"" + (className == null ? "action in-line" : className) + "\"";
         request.appendHtml("\n<form " + idSegment + classSegment + " action=\"action.app\" method=\"post\">\n");
         if (objectId == null) {
             request.appendHtml("  <input type=\"hidden\" name=\"" + "_" + OBJECT + "\" value=\"" + context.getVariable(RequestContext.RESULT) + "\" />\n");
         } else {
-            request.appendHtml("  <input type=\"hidden\" name=\"" + "_" + OBJECT + "\" value=\"" + objectId + "\" />\n");
+            request.appendHtml("  <input type=\"hidden\" name=\"" + "_" + OBJECT + "\" value=\"" +  StringEscapeUtils.escapeHtml(objectId) + "\" />\n");
         }
         request.appendHtml("  <input type=\"hidden\" name=\"" + "_" + VERSION + "\" value=\"" + version + "\" />\n");
         if (scope != null) {

http://git-wip-us.apache.org/repos/asf/isis/blob/d25e8062/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionLink.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionLink.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionLink.java
index 403ff13..5fb1d3a 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionLink.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/ActionLink.java
@@ -21,6 +21,7 @@ package org.apache.isis.viewer.scimpi.dispatcher.view.action;
 
 import java.net.URLEncoder;
 
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -63,7 +64,6 @@ public class ActionLink extends AbstractElementProcessor {
         final ObjectAdapter object = MethodsUtils.findObject(context, objectId);
         final String version = context.mapVersion(object);
         final ObjectAction action = MethodsUtils.findAction(object, method);
-        objectId = request.getContext().mapObject(object, Scope.REQUEST);
 
         final ActionContent parameterBlock = new ActionContent(action);
         request.setBlockContent(parameterBlock);
@@ -81,7 +81,7 @@ public class ActionLink extends AbstractElementProcessor {
                 resultOverride = parameters[0];
             }
         } else {
-            target = objectId;
+            target =  StringEscapeUtils.escapeHtml(request.getContext().mapObject(object, Scope.INTERACTION));
         }
 
         if (MethodsUtils.isVisibleAndUsable(object, action, where)) {

http://git-wip-us.apache.org/repos/asf/isis/blob/d25e8062/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/Methods.java
----------------------------------------------------------------------
diff --git a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/Methods.java b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/Methods.java
index 37e5ba4..0b255f6 100644
--- a/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/Methods.java
+++ b/component/viewer/scimpi/dispatcher/src/main/java/org/apache/isis/viewer/scimpi/dispatcher/view/action/Methods.java
@@ -161,7 +161,7 @@ public class Methods extends AbstractElementProcessor {
             } else {
                 final String version = request.getContext().mapVersion(adapter);
                 if (action.getParameterCount() == 0 || (action.isContributed() && action.getParameterCount() == 1)) {
-                    ActionButton.write(request, adapter, action, parameters, objectId, version, "_generic." + Dispatcher.EXTENSION, null, null, null, null, null, null, null, null, null);
+                    ActionButton.write(request, adapter, action, parameters, version, "_generic." + Dispatcher.EXTENSION, null, null, null, null, null, null, null, null, null);
                 } else if (showForms) {
                     final CreateFormParameter params = new CreateFormParameter();
                     params.objectId = objectId;