diff --git a/install/fr-plugin-rh.iframe-7.1.zip b/install/fr-plugin-rh.iframe-7.1.zip deleted file mode 100644 index 4df5182..0000000 Binary files a/install/fr-plugin-rh.iframe-7.1.zip and /dev/null differ diff --git a/install/fr-plugin-rh.iframe-7.2.zip b/install/fr-plugin-rh.iframe-7.2.zip new file mode 100644 index 0000000..0e488e7 Binary files /dev/null and b/install/fr-plugin-rh.iframe-7.2.zip differ diff --git a/plugin-iframe.iml b/plugin-iframe.iml deleted file mode 100644 index a1ba8eb..0000000 --- a/plugin-iframe.iml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/plugin.xml b/plugin.xml index 260eb61..0798d14 100644 --- a/plugin.xml +++ b/plugin.xml @@ -2,12 +2,13 @@ com.fr.solution.plugin.form.widget.rh.iframe.v10 yes - 7.1 + 7.2 10.0 2018-08-30 richie [2018-10-07]适配10.0和国际化问题。
[2018-06-15]修复决策报表无法正确传递参数给网页框中的报表的问题。
[2018-06-15]增加网页框设计器模板的显示信息。
diff --git a/src/main/java/com/fr/plugin/form/widget/core/TemplateSource.java b/src/main/java/com/fr/plugin/form/widget/core/TemplateSource.java index 1cf69b1..367e169 100644 --- a/src/main/java/com/fr/plugin/form/widget/core/TemplateSource.java +++ b/src/main/java/com/fr/plugin/form/widget/core/TemplateSource.java @@ -6,25 +6,23 @@ import com.fr.base.ParameterHelper; import com.fr.base.TemplateUtils; import com.fr.data.NetworkHelper; import com.fr.general.FArray; -import com.fr.general.GeneralUtils; -import com.fr.general.Inter; import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; -import com.fr.json.JSONUtils; import com.fr.script.Calculator; import com.fr.stable.CodeUtils; import com.fr.stable.ParameterProvider; import com.fr.stable.ProductConstants; -import com.fr.stable.ProductConstantsBase; -import com.fr.stable.StableUtils; import com.fr.stable.UtilEvalError; import com.fr.stable.js.WidgetName; import com.fr.stable.script.CalculatorProvider; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLableReader; +import com.fr.third.org.apache.http.NameValuePair; +import com.fr.third.org.apache.http.client.utils.URLEncodedUtils; import javax.servlet.http.HttpServletRequest; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -57,17 +55,27 @@ public class TemplateSource extends RHIframeSource { public String getCalculatedUrl(Calculator calculator, HttpServletRequest req) { try { String realPath = TemplateUtils.render(path, calculator); + List pairs = URLEncodedUtils.parse("__emb__=" + realPath, Charset.forName("utf-8")); + List extraPairs = new ArrayList(); + for (NameValuePair pair : pairs) { + if (pair.getName().equals("__emb__")) { + realPath = pair.getValue(); + } else { + extraPairs.add(pair); + } + } + if (realPath.contains(".cpt")) { if (isNewerThan9()) { - return NetworkHelper.createServletURL(req) + "/view/report?viewlet=" + CodeUtils.encodeURIComponent(realPath); + return NetworkHelper.createServletURL(req) + "/view/report?viewlet=" + CodeUtils.encodeURIComponent(realPath) + createQueryString(extraPairs); } else { - return NetworkHelper.createServletURL(req) + "?reportlet=" + CodeUtils.encodeURIComponent(realPath); + return NetworkHelper.createServletURL(req) + "?reportlet=" + CodeUtils.encodeURIComponent(realPath) + createQueryString(extraPairs); } } else if (realPath.contains(".frm")) { if (isNewerThan9()) { - return NetworkHelper.createServletURL(req) + "/view/form?viewlet=" + CodeUtils.encodeURIComponent(realPath); + return NetworkHelper.createServletURL(req) + "/view/form?viewlet=" + CodeUtils.encodeURIComponent(realPath) + createQueryString(extraPairs); } - return NetworkHelper.createServletURL(req) + "?formlet=" + CodeUtils.encodeURIComponent(realPath); + return NetworkHelper.createServletURL(req) + "?formlet=" + CodeUtils.encodeURIComponent(realPath) + createQueryString(extraPairs); } } catch (Exception e) { return null; @@ -79,6 +87,18 @@ public class TemplateSource extends RHIframeSource { return Integer.parseInt(ProductConstants.MAIN_VERSION) > 9; } + private String createQueryString(List pairs) { + StringBuilder sb = new StringBuilder(); + for (int i = 0, len = pairs.size(); i < len; i ++) { + NameValuePair pair = pairs.get(i); + sb.append("&"); + sb.append(CodeUtils.encodeURIComponent(pair.getName())); + sb.append("="); + sb.append(CodeUtils.encodeURIComponent(pair.getValue())); + } + return sb.toString(); + } + @Override public String[] dependence(CalculatorProvider ca) { Parameter[] parameters = ParameterHelper.analyze4Parameters(path, false);