Jacopo,

Thank you. I'll test the barcode.


在 2015-7-15,下午10:18,Jacopo Cappellato <[email protected]> 写道:

> +1 to migrate to FOP 2.0
> But if you do, please test that barcodes are properly rendered. Barcodes are 
> generated using
> framework/base/lib/barcode4j-2.1-barcode4j-fop-ext-complete.jar
> and we have to make sure this version works with the new FOP 2.0.
> 
> Regards,
> 
> Jacopo
> 
> 
> On Jul 15, 2015, at 7:20 AM, Shi Jinghai <[email protected]> wrote:
> 
>> Hi,
>> 
>> I'm working on OFBIZ-6504. As Scott pointed out, my current implement is not 
>> good enough, so I tried the FOP 1.1 native encryption without lucky, FOP 2.0 
>> encryption works well in my environment.
>> 
>> Could I upgrade FOP to 2.0 in OFBiz trunk? If yes, what test cases should I 
>> be more careful?
>> 
>> The source file affected:
>> framework/webapp/src/org/ofbiz/webapp/view/ApacheFopWorker.java
>> 
>> The following jars will be changed:
>> in application/content/lib:
>> fontbox: from 1.7.1 to 1.8.5
>> 
>> in framework/base/lib:
>> batik-all: from 1.7 to 1.8
>> fop: from 1.1 to 2.0
>> xmlgraphics-commons: from 1.5 to 2.0.1
>> 
>> New jar:
>> avalon-ffamcework: 4.2.0
>> 
>> The pdfbox and jempbox in application/content/lib will be upgrade to 1.8.5 
>> with the font box.
>> 
>> The native encryption:
>> FOP 1.1: http://xmlgraphics.apache.org/fop/1.1/pdfencryption.html
>> FOP 2.0: http://xmlgraphics.apache.org/fop/2.0/pdfencryption.html
>> 
>> Kind Regards,
>> 
>> Shi Jinghai/Langhua
>> 
>> 
>> 在 2015-7-13,下午4:19,Scott Gray <[email protected]> 写道:
>> 
>>> Is it our plan to fill the example component with things like this?  It
>>> seems like such an obscure requirement.
>>> 
>>> Once upon a time the example application was intended to provide examples
>>> of core framework usage.  I don't think we're demonstrating the power of
>>> the framework here when the example requires quite a large amount of code
>>> to add a password.
>>> 
>>> Also, it looks like you're creating the PDF with FOP (via screens) then
>>> deconstructing it with PDFBox and regenerating it with a password? Also,
>>> what is ofbiz/trunk/specialpurpose/example/lib/bcprov-jdk15-1.44.jar?  I
>>> think we have some admin stuff to do when adding new libs.
>>> 
>>> Lastly, if we were to be "selling" this as a framework feature, I would
>>> expect the renderer to simply take some special input parameters in the
>>> context that indicate the need for password protection and the passwords to
>>> use and then have the renderer do it itself.
>>> 
>>> 
>>> Regards
>>> Scott
>>> 
>>> On 13 July 2015 at 07:46, <[email protected]> wrote:
>>> 
>>>> Author: shijh
>>>> Date: Sun Jul 12 19:46:54 2015
>>>> New Revision: 1690515
>>>> 
>>>> URL: http://svn.apache.org/r1690515
>>>> Log:
>>>> OFBIZ-6504.
>>>> 
>>>> Add an example to protect a pdf generated by FOP with owner password and
>>>> user password.
>>>> 
>>>> Added:
>>>>  ofbiz/trunk/specialpurpose/example/config/examplepdf.properties
>>>> (with props)
>>>>  ofbiz/trunk/specialpurpose/example/lib/bcprov-jdk15-1.44.jar   (with
>>>> props)
>>>> 
>>>> ofbiz/trunk/specialpurpose/example/src/org/ofbiz/example/ExampleEvents.java
>>>> (with props)
>>>> Modified:
>>>>  ofbiz/trunk/specialpurpose/example/build.xml
>>>>  ofbiz/trunk/specialpurpose/example/config/ExampleUiLabels.xml
>>>>  ofbiz/trunk/specialpurpose/example/ofbiz-component.xml
>>>> 
>>>> ofbiz/trunk/specialpurpose/example/webapp/example/WEB-INF/controller.xml
>>>>  ofbiz/trunk/specialpurpose/example/widget/example/CommonScreens.xml
>>>>  ofbiz/trunk/specialpurpose/example/widget/example/ExampleForms.xml
>>>>  ofbiz/trunk/specialpurpose/example/widget/example/ExampleScreens.xml
>>>> 
>>>> Modified: ofbiz/trunk/specialpurpose/example/build.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/build.xml?rev=1690515&r1=1690514&r2=1690515&view=diff
>>>> 
>>>> ==============================================================================
>>>> --- ofbiz/trunk/specialpurpose/example/build.xml (original)
>>>> +++ ofbiz/trunk/specialpurpose/example/build.xml Sun Jul 12 19:46:54 2015
>>>> @@ -51,5 +51,6 @@ under the License.
>>>>       <fileset dir="../../framework/webapp/lib" includes="*.jar"/>
>>>>       <fileset dir="../../framework/webapp/build/lib" includes="*.jar"/>
>>>>       <fileset dir="../../framework/common/build/lib" includes="*.jar"/>
>>>> +        <fileset dir="../../applications/content/lib" includes="*.jar"/>
>>>>   </path>
>>>> </project>
>>>> 
>>>> Modified: ofbiz/trunk/specialpurpose/example/config/ExampleUiLabels.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/config/ExampleUiLabels.xml?rev=1690515&r1=1690514&r2=1690515&view=diff
>>>> 
>>>> ==============================================================================
>>>> --- ofbiz/trunk/specialpurpose/example/config/ExampleUiLabels.xml
>>>> (original)
>>>> +++ ofbiz/trunk/specialpurpose/example/config/ExampleUiLabels.xml Sun Jul
>>>> 12 19:46:54 2015
>>>> @@ -1108,4 +1108,20 @@
>>>>       <value xml:lang="zh">ä½ ä¿®æ”¹äº†é€‰æ‹©æ¡†ä¸­çš„å€¼</value>
>>>>       <value xml:lang="zh-TW">ä½ ä¿®æ”¹äº†é ¸æ“‡æ¡†ä¸­çš„å€¼</value>
>>>>   </property>
>>>> +    <property key="ExamplePdfPassword">
>>>> +        <value xml:lang="en">PDF With Password</value>
>>>> +        <value xml:lang="zh">æœ‰å¯†ç  çš„PDF</value>
>>>> +    </property>
>>>> +    <property key="PageTitleSetExamplePdfPassword">
>>>> +        <value xml:lang="en">Set PDF Protected By Password</value>
>>>> +        <value xml:lang="zh">è®¾ç½®æœ‰å¯†ç  ä¿ æŠ¤çš„PDF</value>
>>>> +    </property>
>>>> +    <property key="ExampleGeneratePDF">
>>>> +        <value xml:lang="en">Generate PDF</value>
>>>> +        <value xml:lang="zh">ç”Ÿæˆ PDF</value>
>>>> +    </property>
>>>> +    <property key="password_did_not_match_confirm_password">
>>>> +        <value xml:lang="en">Password did not match confirm
>>>> password.</value>
>>>> +        <value xml:lang="zh">å¯†ç  ä¸ŽéªŒè¯ å¯†ç  ä¸ ä¸€è‡´ã€‚</value>
>>>> +    </property>
>>>> </resource>
>>>> 
>>>> Added: ofbiz/trunk/specialpurpose/example/config/examplepdf.properties
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/config/examplepdf.properties?rev=1690515&view=auto
>>>> 
>>>> ==============================================================================
>>>> --- ofbiz/trunk/specialpurpose/example/config/examplepdf.properties (added)
>>>> +++ ofbiz/trunk/specialpurpose/example/config/examplepdf.properties Sun
>>>> Jul 12 19:46:54 2015
>>>> @@ -0,0 +1,24 @@
>>>> 
>>>> +###############################################################################
>>>> +# Licensed to the Apache Software Foundation (ASF) under one
>>>> +# or more contributor license agreements.  See the NOTICE file
>>>> +# distributed with this work for additional information
>>>> +# regarding copyright ownership.  The ASF licenses this file
>>>> +# to you under the Apache License, Version 2.0 (the
>>>> +# "License"); you may not use this file except in compliance
>>>> +# with the License.  You may obtain a copy of the License at
>>>> +#
>>>> +# http://www.apache.org/licenses/LICENSE-2.0
>>>> +#
>>>> +# Unless required by applicable law or agreed to in writing,
>>>> +# software distributed under the License is distributed on an
>>>> +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>>>> +# KIND, either express or implied.  See the License for the
>>>> +# specific language governing permissions and limitations
>>>> +# under the License.
>>>> 
>>>> +###############################################################################
>>>> +
>>>> +# If Y, the default.pdf.owner.password will be used as owner password,
>>>> the user input password will be used as user password;
>>>> +# if N, the user input password will be used as owner password and user
>>>> password.
>>>> +use.default.pdf.owner.password=N
>>>> +
>>>> +default.pdf.owner.password=ofbiz
>>>> 
>>>> Propchange: ofbiz/trunk/specialpurpose/example/config/examplepdf.properties
>>>> 
>>>> ------------------------------------------------------------------------------
>>>>  svn:mime-type = text/plain
>>>> 
>>>> Added: ofbiz/trunk/specialpurpose/example/lib/bcprov-jdk15-1.44.jar
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/lib/bcprov-jdk15-1.44.jar?rev=1690515&view=auto
>>>> 
>>>> ==============================================================================
>>>> Binary file - no diff available.
>>>> 
>>>> Propchange: ofbiz/trunk/specialpurpose/example/lib/bcprov-jdk15-1.44.jar
>>>> 
>>>> ------------------------------------------------------------------------------
>>>>  svn:mime-type = application/octet-stream
>>>> 
>>>> Modified: ofbiz/trunk/specialpurpose/example/ofbiz-component.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/ofbiz-component.xml?rev=1690515&r1=1690514&r2=1690515&view=diff
>>>> 
>>>> ==============================================================================
>>>> --- ofbiz/trunk/specialpurpose/example/ofbiz-component.xml (original)
>>>> +++ ofbiz/trunk/specialpurpose/example/ofbiz-component.xml Sun Jul 12
>>>> 19:46:54 2015
>>>> @@ -30,6 +30,7 @@ under the License.
>>>> 
>>>>   <!-- load single or multiple external libraries -->
>>>>   <classpath type="jar" location="build/lib/*"/>
>>>> +    <classpath type="jar" location="lib/*"/>
>>>> 
>>>>   <!-- entity resources: model(s), eca(s), group, and data definitions
>>>> -->
>>>>   <entity-resource type="model" reader-name="main" loader="main"
>>>> location="entitydef/entitymodel.xml"/>
>>>> 
>>>> Added:
>>>> ofbiz/trunk/specialpurpose/example/src/org/ofbiz/example/ExampleEvents.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/src/org/ofbiz/example/ExampleEvents.java?rev=1690515&view=auto
>>>> 
>>>> ==============================================================================
>>>> ---
>>>> ofbiz/trunk/specialpurpose/example/src/org/ofbiz/example/ExampleEvents.java
>>>> (added)
>>>> +++
>>>> ofbiz/trunk/specialpurpose/example/src/org/ofbiz/example/ExampleEvents.java
>>>> Sun Jul 12 19:46:54 2015
>>>> @@ -0,0 +1,220 @@
>>>> 
>>>> +/*******************************************************************************
>>>> + * Licensed to the Apache Software Foundation (ASF) under one
>>>> + * or more contributor license agreements.  See the NOTICE file
>>>> + * distributed with this work for additional information
>>>> + * regarding copyright ownership.  The ASF licenses this file
>>>> + * to you under the Apache License, Version 2.0 (the
>>>> + * "License"); you may not use this file except in compliance
>>>> + * with the License.  You may obtain a copy of the License at
>>>> + *
>>>> + * http://www.apache.org/licenses/LICENSE-2.0
>>>> + *
>>>> + * Unless required by applicable law or agreed to in writing,
>>>> + * software distributed under the License is distributed on an
>>>> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>>>> + * KIND, either express or implied.  See the License for the
>>>> + * specific language governing permissions and limitations
>>>> + * under the License.
>>>> +
>>>> *******************************************************************************/
>>>> +package org.ofbiz.example;
>>>> +
>>>> +import java.io.ByteArrayInputStream;
>>>> +import java.io.ByteArrayOutputStream;
>>>> +import java.io.IOException;
>>>> +import java.io.StringReader;
>>>> +import java.io.StringWriter;
>>>> +import java.io.Writer;
>>>> +import java.util.Locale;
>>>> +import java.util.Map;
>>>> +
>>>> +import javax.servlet.ServletContext;
>>>> +import javax.servlet.http.HttpServletRequest;
>>>> +import javax.servlet.http.HttpServletResponse;
>>>> +import javax.xml.parsers.ParserConfigurationException;
>>>> +import javax.xml.transform.stream.StreamSource;
>>>> +
>>>> +import org.apache.fop.apps.FOPException;
>>>> +import org.apache.fop.apps.Fop;
>>>> +import org.apache.fop.apps.MimeConstants;
>>>> +import org.apache.pdfbox.exceptions.COSVisitorException;
>>>> +import org.apache.pdfbox.pdmodel.PDDocument;
>>>> +import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
>>>> +import org.apache.pdfbox.pdmodel.encryption.BadSecurityHandlerException;
>>>> +import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
>>>> +import org.ofbiz.base.util.Debug;
>>>> +import org.ofbiz.base.util.GeneralException;
>>>> +import org.ofbiz.base.util.UtilCodec;
>>>> +import org.ofbiz.base.util.UtilHttp;
>>>> +import org.ofbiz.base.util.UtilProperties;
>>>> +import org.ofbiz.base.util.UtilValidate;
>>>> +import org.ofbiz.entity.Delegator;
>>>> +import org.ofbiz.entity.util.EntityUtilProperties;
>>>> +import org.ofbiz.webapp.view.ApacheFopWorker;
>>>> +import org.ofbiz.widget.renderer.FormStringRenderer;
>>>> +import org.ofbiz.widget.renderer.ScreenRenderer;
>>>> +import org.ofbiz.widget.renderer.ScreenStringRenderer;
>>>> +import org.ofbiz.widget.renderer.macro.MacroFormRenderer;
>>>> +import org.ofbiz.widget.renderer.macro.MacroScreenRenderer;
>>>> +import org.xml.sax.SAXException;
>>>> +
>>>> +import freemarker.template.TemplateException;
>>>> +
>>>> +
>>>> +public class ExampleEvents {
>>>> +
>>>> +    public static final String module = ExampleEvents.class.getName();
>>>> +
>>>> +    public static final String examplePdfProperties =
>>>> "examplepdf.properties";
>>>> +
>>>> +    public static final boolean useExampleDefaultOwnerPassword =
>>>> UtilProperties.getPropertyValue(examplePdfProperties,
>>>> "use.default.pdf.owner.password", "N").equalsIgnoreCase("Y");
>>>> +
>>>> +    public static final String exampleDefaultOwnerPassword =
>>>> UtilProperties.getPropertyValue(examplePdfProperties,
>>>> "default.pdf.owner.password", "ofbiz");
>>>> +
>>>> +    public static final String resourceExample = "ExampleUiLables";
>>>> +
>>>> +    /** Set password to the specified example and output the generated
>>>> PDF.
>>>> +     *@param request The HTTPRequest object for the current request
>>>> +     *@param response The HTTPResponse object for the current request
>>>> +     *@return String specifying the exit status of this event
>>>> +     */
>>>> +    public static String setExamplePdfPassword(HttpServletRequest
>>>> request, HttpServletResponse response) {
>>>> +        Delegator delegator = (Delegator)
>>>> request.getAttribute("delegator");
>>>> +        Locale locale = UtilHttp.getLocale(request);
>>>> +        ServletContext servletContext =
>>>> request.getSession().getServletContext();
>>>> +
>>>> +        Map<String, Object> requestParams =
>>>> UtilHttp.getParameterMap(request);
>>>> +        String password = (String) requestParams.get("PASSWORD");
>>>> +        String confirmPassword = (String)
>>>> requestParams.get("CONFIRM_PASSWORD");
>>>> +
>>>> +        if (UtilValidate.isEmpty(password) &&
>>>> UtilValidate.isEmpty(confirmPassword) &&
>>>> (UtilValidate.isEmpty(exampleDefaultOwnerPassword) ||
>>>> !useExampleDefaultOwnerPassword)) {
>>>> +               return "nopassword";
>>>> +        }
>>>> +        if (UtilValidate.isNotEmpty(password) &&
>>>> !password.equals(confirmPassword)) {
>>>> +               String errMsg = UtilProperties.getMessage(resourceExample,
>>>> "password_not_equal_confirm_password", locale);
>>>> +            request.setAttribute("_ERROR_MESSAGE_", errMsg);
>>>> +            return "error";
>>>> +        }
>>>> +
>>>> +        // get the original pdf
>>>> +        String screenLocation =
>>>> "component://example/widget/example/ExampleScreens.xml";
>>>> +        String reportScreenName = "ExampleReport";
>>>> +
>>>> +        // render a screen to get the XML document
>>>> +        Writer reportWriter = new StringWriter();
>>>> +
>>>> +        try {
>>>> +            ScreenStringRenderer foScreenRenderer = new
>>>> MacroScreenRenderer(EntityUtilProperties.getPropertyValue("widget", "
>>>> screenfop.name", delegator),
>>>> EntityUtilProperties.getPropertyValue("widget", "screenfop.screenrenderer",
>>>> delegator));
>>>> +            FormStringRenderer formStringRenderer = new
>>>> MacroFormRenderer(EntityUtilProperties.getPropertyValue("widget",
>>>> "screenfop.formrenderer", delegator), request, response);
>>>> +            ScreenRenderer screens = new ScreenRenderer(reportWriter,
>>>> null, foScreenRenderer);
>>>> +            screens.populateContextForRequest(request, response,
>>>> servletContext);
>>>> +
>>>> +            // this is the object used to render forms from their
>>>> definitions
>>>> +            screens.getContext().put("formStringRenderer",
>>>> formStringRenderer);
>>>> +            screens.getContext().put("simpleEncoder",
>>>> UtilCodec.getEncoder(EntityUtilProperties.getPropertyValue("widget",
>>>> "screenfop.encoder", delegator)));
>>>> +
>>>> +            screens.render(screenLocation, reportScreenName);
>>>> +        } catch (GeneralException e) {
>>>> +            String errMsg = "General error rendering screen [" +
>>>> screenLocation + "]: " + e.toString();
>>>> +            Debug.logError(e, errMsg, module);
>>>> +            request.setAttribute("_ERROR_MESSAGE_", errMsg);
>>>> +            return "error";
>>>> +        } catch (IOException e) {
>>>> +            String errMsg = "IO error rendering screen [" +
>>>> screenLocation + "]: " + e.toString();
>>>> +            Debug.logError(e, errMsg, module);
>>>> +            request.setAttribute("_ERROR_MESSAGE_", errMsg);
>>>> +            return "error";
>>>> +        } catch (SAXException e) {
>>>> +            String errMsg = "SAX (XML parse) error rendering screen [" +
>>>> screenLocation + "]: " + e.toString();
>>>> +            Debug.logError(e, errMsg, module);
>>>> +            request.setAttribute("_ERROR_MESSAGE_", errMsg);
>>>> +            return "error";
>>>> +        } catch (ParserConfigurationException e) {
>>>> +            String errMsg = "Parser configuration error rendering screen
>>>> [" + screenLocation + "]: " + e.toString();
>>>> +            Debug.logError(e, errMsg, module);
>>>> +            request.setAttribute("_ERROR_MESSAGE_", errMsg);
>>>> +            return "error";
>>>> +        } catch (TemplateException e) {
>>>> +            String errMsg = "Freemarker template error rendering screen
>>>> [" + screenLocation + "]: " + e.toString();
>>>> +            Debug.logError(e, errMsg, module);
>>>> +            request.setAttribute("_ERROR_MESSAGE_", errMsg);
>>>> +            return "error";
>>>> +               }
>>>> +
>>>> +        // set the input source (XSL-FO) and generate the PDF
>>>> +        StreamSource src = new StreamSource(new
>>>> StringReader(reportWriter.toString()));
>>>> +
>>>> +        // create the output stream for the generation
>>>> +        ByteArrayOutputStream out = new ByteArrayOutputStream();
>>>> +
>>>> +        try {
>>>> +            Fop fop = ApacheFopWorker.createFopInstance(out,
>>>> MimeConstants.MIME_PDF);
>>>> +            ApacheFopWorker.transform(src, null, fop);
>>>> +            out.flush();
>>>> +            out.close();
>>>> +        } catch (FOPException e) {
>>>> +            request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
>>>> +            Debug.logError(e, module);
>>>> +            return "error";
>>>> +        } catch (IOException e) {
>>>> +            request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
>>>> +            Debug.logError(e, module);
>>>> +            return "error";
>>>> +               }
>>>> +
>>>> +        // parse the pdf with PDFBox
>>>> +        ByteArrayInputStream is = new
>>>> ByteArrayInputStream(out.toByteArray());
>>>> +        PDDocument document;
>>>> +               try {
>>>> +                       document = PDDocument.load(is);
>>>> +               int keyLength = 40;
>>>> +               AccessPermission ap = new AccessPermission();
>>>> +               String ownerPassword = exampleDefaultOwnerPassword;
>>>> +               if (UtilValidate.isEmpty(ownerPassword) ||
>>>> !useExampleDefaultOwnerPassword) {
>>>> +                       ownerPassword = password;
>>>> +               }
>>>> +               StandardProtectionPolicy spp = new
>>>> StandardProtectionPolicy(ownerPassword, password, ap);
>>>> +               spp.setEncryptionKeyLength(keyLength);
>>>> +               document.protect(spp);
>>>> +               } catch (IOException e) {
>>>> +            request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
>>>> +            Debug.logError(e, module);
>>>> +            return "error";
>>>> +               } catch (BadSecurityHandlerException e) {
>>>> +            request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
>>>> +            Debug.logError(e, module);
>>>> +            return "error";
>>>> +               } finally {
>>>> +            try {
>>>> +               if (is != null) {
>>>> +                               is.close();
>>>> +               }
>>>> +                       } catch (IOException e) {
>>>> +                               // ignore
>>>> +                       }
>>>> +               }
>>>> +
>>>> +               out = new ByteArrayOutputStream();
>>>> +               try {
>>>> +                       document.save(out);
>>>> +               // set the content type and length
>>>> +               response.setContentType(MimeConstants.MIME_PDF);
>>>> +               response.setContentLength(out.size());
>>>> +                       out.flush();
>>>> +                       out.close();
>>>> +               // write to the browser
>>>> +               response.getOutputStream().write(out.toByteArray());
>>>> +            response.getOutputStream().flush();
>>>> +               } catch (COSVisitorException e) {
>>>> +            request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
>>>> +            Debug.logError(e, module);
>>>> +               return "error";
>>>> +               } catch (IOException e) {
>>>> +            request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
>>>> +            Debug.logError(e, module);
>>>> +               return "error";
>>>> +               }
>>>> +
>>>> +        return "success";
>>>> +    }
>>>> +
>>>> +}
>>>> 
>>>> Propchange:
>>>> ofbiz/trunk/specialpurpose/example/src/org/ofbiz/example/ExampleEvents.java
>>>> 
>>>> ------------------------------------------------------------------------------
>>>>  svn:mime-type = text/plain
>>>> 
>>>> Modified:
>>>> ofbiz/trunk/specialpurpose/example/webapp/example/WEB-INF/controller.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/webapp/example/WEB-INF/controller.xml?rev=1690515&r1=1690514&r2=1690515&view=diff
>>>> 
>>>> ==============================================================================
>>>> ---
>>>> ofbiz/trunk/specialpurpose/example/webapp/example/WEB-INF/controller.xml
>>>> (original)
>>>> +++
>>>> ofbiz/trunk/specialpurpose/example/webapp/example/WEB-INF/controller.xml
>>>> Sun Jul 12 19:46:54 2015
>>>> @@ -225,6 +225,19 @@ under the License.
>>>>       <response name="success" type="view" value="ExamplePieChart"/>
>>>>   </request-map>
>>>> 
>>>> +    <!-- Pdf Report Options -->
>>>> +    <request-map uri="ExampleReportPdfOptions">
>>>> +        <security https="true" auth="true"/>
>>>> +        <response name="success" type="view"
>>>> value="ExampleReportPdfOptions"/>
>>>> +    </request-map>
>>>> +    <request-map uri="setExamplePdfPassword">
>>>> +        <security https="true" auth="true"/>
>>>> +        <event type="java" path="org.ofbiz.example.ExampleEvents"
>>>> invoke="setExamplePdfPassword"/>
>>>> +        <response name="success" type="none"/>
>>>> +        <response name="nopassword" type="view" value="ExampleReportPdf"/>
>>>> +        <response name="error" type="view"
>>>> value="ExampleReportPdfOptions"/>
>>>> +    </request-map>
>>>> +
>>>>   <!-- end of request mappings -->
>>>> 
>>>>   <!-- View Mappings -->
>>>> @@ -283,5 +296,6 @@ under the License.
>>>>       application/vnd.oasis.opendocument.presentation
>>>>    -->
>>>> 
>>>> +    <view-map name="ExampleReportPdfOptions" type="screen"
>>>> page="component://example/widget/example/ExampleScreens.xml#ExampleReportPdfOptions"/>
>>>>   <!-- end of view mappings -->
>>>> </site-conf>
>>>> 
>>>> Modified:
>>>> ofbiz/trunk/specialpurpose/example/widget/example/CommonScreens.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/widget/example/CommonScreens.xml?rev=1690515&r1=1690514&r2=1690515&view=diff
>>>> 
>>>> ==============================================================================
>>>> --- ofbiz/trunk/specialpurpose/example/widget/example/CommonScreens.xml
>>>> (original)
>>>> +++ ofbiz/trunk/specialpurpose/example/widget/example/CommonScreens.xml
>>>> Sun Jul 12 19:46:54 2015
>>>> @@ -103,6 +103,10 @@ under the License.
>>>>                                               <parameter
>>>> param-name="exampleId"/>
>>>>                                               <image url-mode="raw"
>>>> src="${iconsLocation}/page_white_acrobat.png"/>
>>>>                                           </link>
>>>> +                                            <link
>>>> target="ExampleReportPdfOptions" text="${uiLabelMap.ExamplePdfPassword}"
>>>> style="buttontext">
>>>> +                                                <parameter
>>>> param-name="exampleId"/>
>>>> +                                                <image url-mode="raw"
>>>> src="${iconsLocation}/page_white_acrobat.png"/>
>>>> +                                            </link>
>>>>                                           <link target="help"
>>>> text="${uiLabelMap.CommonHelp}" style="buttontext" target-window="_blank">
>>>>                                               <parameter
>>>> param-name="topic" value="ExampleEditHelp"/>
>>>>                                               <image url-mode="raw"
>>>> src="${iconsLocation}/help.png"/>
>>>> 
>>>> Modified:
>>>> ofbiz/trunk/specialpurpose/example/widget/example/ExampleForms.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/widget/example/ExampleForms.xml?rev=1690515&r1=1690514&r2=1690515&view=diff
>>>> 
>>>> ==============================================================================
>>>> --- ofbiz/trunk/specialpurpose/example/widget/example/ExampleForms.xml
>>>> (original)
>>>> +++ ofbiz/trunk/specialpurpose/example/widget/example/ExampleForms.xml Sun
>>>> Jul 12 19:46:54 2015
>>>> @@ -311,4 +311,11 @@ under the License.
>>>>       </field>
>>>>       <field name="submitButton"
>>>> title="${uiLabelMap.CommonAdd}"><submit button-type="button"/></field>
>>>>   </form>
>>>> +
>>>> +    <form name="SetExamplePdfPassword" type="single"
>>>> target="setExamplePdfPassword" title="">
>>>> +        <field name="exampleId"><hidden/></field>
>>>> +        <field name="PASSWORD"
>>>> title="${uiLabelMap.CommonPassword}"><password size="15"
>>>> maxlength="250"/></field>
>>>> +        <field name="CONFIRM_PASSWORD"
>>>> title="${uiLabelMap.CommonPassword}" tooltip="*
>>>> ${uiLabelMap.CommonConfirm}"><password size="15" maxlength="250"/></field>
>>>> +        <field name="submitButton"
>>>> title="${uiLabelMap.ExampleGeneratePDF}"><submit
>>>> button-type="button"/></field>
>>>> +    </form>
>>>> </forms>
>>>> 
>>>> Modified:
>>>> ofbiz/trunk/specialpurpose/example/widget/example/ExampleScreens.xml
>>>> URL:
>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/example/widget/example/ExampleScreens.xml?rev=1690515&r1=1690514&r2=1690515&view=diff
>>>> 
>>>> ==============================================================================
>>>> --- ofbiz/trunk/specialpurpose/example/widget/example/ExampleScreens.xml
>>>> (original)
>>>> +++ ofbiz/trunk/specialpurpose/example/widget/example/ExampleScreens.xml
>>>> Sun Jul 12 19:46:54 2015
>>>> @@ -494,4 +494,21 @@ under the License.
>>>>           </widgets>
>>>>       </section>
>>>>   </screen>
>>>> +
>>>> +    <screen name="ExampleReportPdfOptions">
>>>> +        <section>
>>>> +            <actions>
>>>> +                <set field="titleProperty"
>>>> value="PageTitleSetExamplePdfPassword"/>
>>>> +                <set field="tabButtonItem" value="EditExample"/>
>>>> +                <set field="exampleId" from-field="parameters.exampleId"/>
>>>> +            </actions>
>>>> +            <widgets>
>>>> +                <decorator-screen name="CommonExampleDecorator"
>>>> location="${parameters.mainDecoratorLocation}">
>>>> +                    <decorator-section name="body">
>>>> +                        <include-form name="SetExamplePdfPassword"
>>>> location="component://example/widget/example/ExampleForms.xml"/>
>>>> +                    </decorator-section>
>>>> +                </decorator-screen>
>>>> +            </widgets>
>>>> +        </section>
>>>> +    </screen>
>>>> </screens>
>>>> 
>>>> 
>>>> 
>> 
> 

Reply via email to