<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Adobe Consulting Public Sector</title>
	<atom:link href="http://blogs.adobe.com/acdc/feed" rel="self" type="application/rss+xml" />
	<link>http://blogs.adobe.com/acdc</link>
	<description>Adobe Consulting - Public Sector group will blog about their experiences using Adobe Enterprise products. The main goal of the blog is to provide information on new trends, techniques, and pitfalls. Based entirely on working on real-world projects.</description>
	<lastBuildDate>Mon, 05 Dec 2011 14:46:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Creating a Flip Book CQ Component</title>
		<link>http://blogs.adobe.com/acdc/2011/12/creating-a-flip-book-cq-component.html</link>
		<comments>http://blogs.adobe.com/acdc/2011/12/creating-a-flip-book-cq-component.html#comments</comments>
		<pubDate>Fri, 02 Dec 2011 17:27:49 +0000</pubDate>
		<dc:creator>Danny Gordon</dc:creator>
				<category><![CDATA[CQ]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WEM]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=200</guid>
		<description><![CDATA[The canvas element is a new tag included in HTML 5. This allows for dynamic renderings of 2D shapes and bitmap images. I recently stumbled across a great example of the powerful effects that can be accomplished with the canvas &#8230; <a href="http://blogs.adobe.com/acdc/2011/12/creating-a-flip-book-cq-component.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The canvas element is a new tag included in HTML 5. This allows for dynamic renderings of 2D shapes and bitmap images. I recently stumbled across a great example of the powerful effects that can be accomplished with the canvas element and javascript on a web app called <a title="20 Things" href="http://www.20thingsilearned.com">20 Things I learned about Browsers and the Web</a>. The web application tells a nice summary of the basic history of the internet and open web technologies. What really makes it cool is that the information is presented as an interactive book and allows the user to &#8220;flip&#8221; the pages by dragging the mouse.</p>
<p>I thought it would be interesting to take this functionality and create a re-usable component in CQ. This would allow authors to add the component onto any paragraph system and drag text and images from the content finder to populate the &#8220;pages&#8221; of the book. The following tutorial focuses on creating a custom CQ component that uses its own CSS, images, and Javascript to make it run.</p>
<p><span id="more-200"></span></p>
<p>The first step is to pop open CRXDE and create a custom component called pageflipper. Set the <strong>sling:resourceSuperType</strong> to <em><strong>foundation/components/list </strong></em>and set the following properties:</p>
<p><a class="lightbox" title="Screen Shot 2011-12-01 at 3.55.20 AM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-3.55.20-AM.png"><img class="alignnone size-medium wp-image-207" title="Screen Shot 2011-12-01 at 3.55.20 AM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-3.55.20-AM-300x104.png" alt="" width="300" height="104" /></a></p>
<p>&nbsp;</p>
<p>Next we are going to create a dialog so that the authors can add an image and title to each page in the flip book. Create a new Dialog underneath the pageflipper component and create nested nodes to match the below structure:</p>
<p><a class="lightbox" title="Screen Shot 2011-12-01 at 4.02.24 AM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-4.02.24-AM.png"><img class="alignnone size-full wp-image-208" title="Screen Shot 2011-12-01 at 4.02.24 AM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-4.02.24-AM.png" alt="" width="266" height="174" /></a></p>
<p>Now we are going to configure the properties of the bookPages widget with an xtype of slideshow. The SlideShow widget is an out of the box CQ5 widget that allows users to create slides (pages in our case) consisting of an image and title:</p>
<p><a class="lightbox" title="Screen Shot 2011-12-01 at 4.12.53 AM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-4.12.53-AM.png"><img class="alignnone size-full wp-image-211" title="Screen Shot 2011-12-01 at 4.12.53 AM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-4.12.53-AM.png" alt="" width="243" height="104" /></a></p>
<p>Next we will configure the headertext widget as simple textfield that will allow the authors to set a header for our component:</p>
<p><a class="lightbox" title="Screen Shot 2011-12-01 at 4.15.25 AM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-4.15.25-AM.png"><img class="alignnone size-full wp-image-212" title="Screen Shot 2011-12-01 at 4.15.25 AM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-4.15.25-AM.png" alt="" width="286" height="81" /></a></p>
<p>And finally as the last part of our dialog we will configure the size widget to allow the user to specify the size of the images displayed on a page:</p>
<p><a class="lightbox" title="Screen Shot 2011-12-01 at 4.17.14 AM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-4.17.14-AM.png"><img class="alignnone size-full wp-image-213" title="Screen Shot 2011-12-01 at 4.17.14 AM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-01-at-4.17.14-AM.png" alt="" width="289" height="99" /></a></p>
<p>Now we need to write some code in our pageflipper.jsp file to render the slide content as HTML. Below is the main portion of the code in which we iterate through all of the nodes below the current node whose name starts with &#8220;image&#8221;. We then render a specific HTML that our javascript library will use to dynamically create the flip book. <a href="http://blogs.adobe.com/acdc/files/2011/12/pageflipper.zip" target="_blank">View Full Source Code</a></p>
<p><span style="color: #339966;"><em> </em><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">//grab all image nodes below the current element</span></span></p>
<pre><span style="color: #333333;">NodeIterator childNodes = currentNode.getNodes("image*");</span></pre>
<pre><span style="color: #333333;"><strong>while</strong> (childNodes.hasNext()) {</span></pre>
<p><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre; color: #333333;">  Node currNode = childNodes.nextNode();</span></p>
<pre><span style="color: #339966;">   //caclulate relative path of image node</span></pre>
<pre><span style="color: #333333;">    String path = currNode.getPath();</span></pre>
<pre><span style="color: #333333;">    <strong>int</strong> index = path.indexOf("/jcr:content");</span></pre>
<pre><span style="color: #333333;">    path = path.substring(index + 13);</span></pre>
<pre><span style="color: #333333;">    Resource res = currentPage.getContentResource(path);</span></pre>
<pre><span style="color: #333333;">    <strong>if</strong>(res != <strong>null</strong>)</span></pre>
<pre><span style="color: #333333;">    {</span></pre>
<pre><span style="color: #333333;">          Image img = <strong>new</strong> Image(res);</span></pre>
<pre><span style="color: #333333;">          String imageName = img.getName();</span></pre>
<pre><span style="color: #339966;">         //get source URL of image</span></pre>
<pre><span style="color: #333333;"> String srcURL = img.getFileReference();</span></pre>
<pre><span style="color: #339966;">          //if the image has a valid file reference then render the html below</span></pre>
<pre><span style="color: #333333;"><strong> if</strong>(srcURL != <strong>null</strong> &amp;&amp; srcURL != ""){</span></pre>
<pre><span style="color: #333333;">    %&gt;</span></pre>
<pre><span style="color: #333333;"> &lt;<span style="text-decoration: underline;">section</span>&gt;</span></pre>
<pre><span style="color: #333333;">    &lt;div&gt;</span></pre>
<pre><span style="color: #333333;">       &lt;h2 class=<em>"titleImage"</em> id=<em>"</em>&lt;%=imageName %&gt;<em>"</em>&gt;&lt;%= name %&gt;&lt;/h2&gt;</span></pre>
<pre><span style="color: #333333;">       &lt;img style=<em>"margin-left:25px"</em> src=<em>"</em>&lt;%=srcURL %&gt;<em>"</em> width=<em>"</em>&lt;%=width != -1 ? width: "100%" %&gt;<em>"</em> height=<em>"</em>&lt;%=height != -1 ? height: "100%" %&gt;<em>"</em> /&gt;</span></pre>
<pre><span style="color: #333333;">     &lt;/div&gt;</span></pre>
<pre><span style="color: #333333;">      <span style="text-decoration: underline;">&lt;</span>/section&gt;&lt;%</span></pre>
<pre><span style="color: #333333;">       }</span></pre>
<pre><span style="color: #333333;">    }</span></pre>
<pre><span style="color: #333333;"> }</span></pre>
<pre><span style="color: #333333;"> %&gt;</span></pre>
<p>Next we need to add the CSS and JavaScript for this custom component in our clientlibs folder within the pageflipper component. Copy the contents of the CSS and JS files from the <a href="http://blogs.adobe.com/acdc/files/2011/12/pageflipper.zip" target="_blank">source code</a> into pageflipper.css and pageflipper.js respectively.  If you are looking for a more detailed examination on the canvas element and javascript used to create the page flip effect please check out this<a href="http://www.html5rocks.com/en/tutorials/casestudies/20things_pageflip.html"> Case Study</a> on HTML5Rocks.com</p>
<p><a class="lightbox" title="Screen Shot 2011-12-02 at 11.39.38 AM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-11.39.38-AM1.png"><img class="alignnone size-full wp-image-241" title="Screen Shot 2011-12-02 at 11.39.38 AM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-11.39.38-AM1.png" alt="" width="237" height="138" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Make sure the categories property of the clientlibs folder is referencing the application in which you have created your custom component. In this case I have created the pageflipper component underneath the geometrixx-outdoors application.</p>
<p><a class="lightbox" title="Screen Shot 2011-12-02 at 11.53.38 AM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-11.53.38-AM.png"><img class="alignnone size-medium wp-image-243" title="Screen Shot 2011-12-02 at 11.53.38 AM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-11.53.38-AM-300x43.png" alt="" width="300" height="43" /></a></p>
<p>Finally the last step is to add two images (included in the source code) to the design of the current site. It is considered a best practice in CQ to add images to the design of the site, rather than directly within the component structure. Make sure to update the pageflipper.css file to ensure that the images are referenced appropriately.</p>
<p><a class="lightbox" title="Screen Shot 2011-12-02 at 11.55.23 AM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-11.55.23-AM.png"><img class="alignnone size-full wp-image-244" title="Screen Shot 2011-12-02 at 11.55.23 AM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-11.55.23-AM.png" alt="" width="265" height="172" /></a></p>
<p>Now we can test our component, open up your browser and navigate to your author environment. You should see te Page Flipper component under Other (you may have to enter design mode and add it to the paragraph system) and drag it on to a paragraph system. Double click the component to configure it.</p>
<p><a class="lightbox" title="Screen Shot 2011-12-02 at 12.00.19 PM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.00.19-PM.png"><img class="alignnone size-thumbnail wp-image-246" title="Screen Shot 2011-12-02 at 12.00.19 PM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.00.19-PM-150x150.png" alt="" width="150" height="150" /></a> <a class="lightbox" title="Screen Shot 2011-12-02 at 12.02.01 PM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.02.01-PM.png"><img class="alignnone size-thumbnail wp-image-248" title="Screen Shot 2011-12-02 at 12.02.01 PM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.02.01-PM-150x150.png" alt="" width="150" height="150" /></a>     <a class="lightbox" title="Screen Shot 2011-12-02 at 12.02.22 PM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.02.22-PM.png"><img class="alignnone size-thumbnail wp-image-249" title="Screen Shot 2011-12-02 at 12.02.22 PM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.02.22-PM-150x150.png" alt="" width="150" height="150" /></a> <a class="lightbox" title="Screen Shot 2011-12-02 at 12.03.05 PM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.03.05-PM.png"><img class="alignnone size-thumbnail wp-image-250" title="Screen Shot 2011-12-02 at 12.03.05 PM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.03.05-PM-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Once you have configured the component switch to preview mode and test out your component!</p>
<p><a class="lightbox" title="Screen Shot 2011-12-02 at 12.07.41 PM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.07.41-PM.png"><img class="alignnone size-thumbnail wp-image-253" title="Screen Shot 2011-12-02 at 12.07.41 PM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.07.41-PM-150x150.png" alt="" width="150" height="150" /></a>  <a class="lightbox" title="Screen Shot 2011-12-02Flipping" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02Flipping.png"><img class="alignnone size-thumbnail wp-image-255" title="Screen Shot 2011-12-02Flipping" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02Flipping-150x150.png" alt="" width="150" height="150" /></a></p>
<p><a class="lightbox" title="Screen Shot 2011-12-02Flipping2" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02Flipping2.png"><img class="alignnone size-thumbnail wp-image-257" title="Screen Shot 2011-12-02Flipping2" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02Flipping2-150x150.png" alt="" width="150" height="150" /></a>   <a class="lightbox" title="Screen Shot 2011-12-02 at 12.09.13 PM" href="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.09.13-PM.png"><img class="alignnone size-thumbnail wp-image-258" title="Screen Shot 2011-12-02 at 12.09.13 PM" src="http://blogs.adobe.com/acdc/files/2011/12/Screen-Shot-2011-12-02-at-12.09.13-PM-150x150.png" alt="" width="150" height="150" /></a></p>
<ol>
<li><a href="http://blogs.adobe.com/acdc/files/2011/12/pageflipper.zip">Source Code</a></li>
<li><a href="http://blogs.adobe.com/acdc/files/2011/12/PageFlipperComponent-1.zip">Page Flipper Package</a> (configured to be installed on the Gemoetrixx-Outdoors site, make appropriate changes for your site)</li>
<li><a href="http://blogs.adobe.com/acdc/files/2011/12/pageflipperimages.zip">images</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2011/12/creating-a-flip-book-cq-component.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Populate a Drop Down List in LiveCycle Designer with Dynamically Generated XML</title>
		<link>http://blogs.adobe.com/acdc/2011/12/populate-a-drop-down-list-in-livecycle-designer-with-dynamically-generated-xml.html</link>
		<comments>http://blogs.adobe.com/acdc/2011/12/populate-a-drop-down-list-in-livecycle-designer-with-dynamically-generated-xml.html#comments</comments>
		<pubDate>Fri, 02 Dec 2011 02:04:47 +0000</pubDate>
		<dc:creator>jefyoung</dc:creator>
				<category><![CDATA[Forms]]></category>
		<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[XML Schema]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=142</guid>
		<description><![CDATA[One way to populate a Drop-down List on a LiveCycle form is using XML binding. In the situation explained below, the XML document is dynamically generated and bound to the form&#8217;s data model within a LiveCycle process by querying the &#8230; <a href="http://blogs.adobe.com/acdc/2011/12/populate-a-drop-down-list-in-livecycle-designer-with-dynamically-generated-xml.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>One way to populate a Drop-down List on a LiveCycle form is using XML binding. In the situation explained below, the XML document is dynamically generated and bound to the form&#8217;s data model within a LiveCycle process by querying the database.</p>
<h3>Situation:</h3>
<p>Querying a database for all the supervisors and their ID. Then populate a drop-down list on the form with a single Data Connection.</p>
<h3>4 Steps:</h3>
<ol>
<li>Create a DataConnection on your form with an XSD that includes unbound occurrence of the list items.</li>
<li>Add a Drop-down list to the form</li>
<li>Bind the data to the drop-down list</li>
<li>Create an Action Profile process to pre-populate the form with data from the database</li>
</ol>
<h4>1. Create a DataConnection on your form with an XSD that includes unbound occurrence of the list items.</h4>
<blockquote><p>Since the drop down list is only one field in the form and we are using a single data connection to bind data to the form, insert the following element node for the Supervisor Drop-down List. The selected fields are to be used to hold the currently selected value in the drop-down list.</p>
<pre>&lt;xs:element name=<em>"supervisorList"</em>&gt;</pre>
<pre>      &lt;xs:complexType&gt;</pre>
<pre>              &lt;xs:sequence&gt;</pre>
<pre>                   &lt;xs:element name=<em>"supervisor"</em>&gt;</pre>
<pre>                         &lt;xs:complexType&gt;</pre>
<pre>                             &lt;xs:sequence maxOccurs=<em>"unbounded"</em>&gt;</pre>
<pre>                                 &lt;xs:element name=<em>"supervisorID"</em> type=<em>"xs:int"</em>/&gt;</pre>
<pre>                                 &lt;xs:element name=<em>"supervisorName"</em> type=<em>"xs:string"</em>/&gt;</pre>
<pre>                             &lt;/xs:sequence&gt;</pre>
<pre>                         &lt;xs:complexType&gt;</pre>
<pre>                     &lt;/xs:element&gt;</pre>
<pre>              &lt;/xs:sequence&gt;</pre>
<pre>       &lt;/xs:complexType&gt;</pre>
<pre> &lt;/xs:element&gt;</pre>
<pre>&lt;xs:element name=<em>"selectedSupervisorName"</em> type=<em>"xs:string"</em>/&gt;</pre>
<pre>&lt;xs:element name=<em>"selectedSupervisorID"</em> type=<em>"xs:int"</em>/&gt;</pre>
<p>To add the Data Connection to your form:</p>
<ul>
<li>Right click on the Data View Tab</li>
<li>Select New Data Connection</li>
<li>Select XML Schema</li>
<li>Browse to the XSD in your Application</li>
<li>Select the root node and Press OK</li>
</ul>
</blockquote>
<h4>2. Add a Drop-down list to the form</h4>
<blockquote><p>From the Object Library in LiveCycle Designer, drag the Drop-down List object on to the form.</p></blockquote>
<h4>3. Bind the data to the drop-down list</h4>
<blockquote><p>Under the Object Panel, click on the Binding Tab. Bind the item to the selectSupervisorID in the Data Connection.</p>
<p><a class="lightbox" title="Drop-down List Field Binding" href="http://blogs.adobe.com/acdc/files/2011/11/SupervisorFieldBinding.jpg"><img class="aligncenter size-full wp-image-143" title="Drop-down List Field Binding" src="http://blogs.adobe.com/acdc/files/2011/11/SupervisorFieldBinding.jpg" alt="" width="244" height="314" /></a></p>
<p>After adding data binding, the Specify Item Values text should become a green hyperlink. If link text is not green, ensure that <a href="http://help.adobe.com/en_US/livecycle/9.0/designerHelp/index.htm?content=000337.html">dynamic properties is turned on</a>. Click on the Specify Items Value.</p>
<p><a class="lightbox" title="List Items Properties" href="http://blogs.adobe.com/acdc/files/2011/11/ListItemsProperties.jpg"><img class="aligncenter size-full wp-image-144" title="List Items Properties" src="http://blogs.adobe.com/acdc/files/2011/11/ListItemsProperties.jpg" alt="" width="265" height="248" /></a></p>
<p>Fill out the fields as shown above. Notice the [x] in the Items field. This enables all the elements to be loaded in to the list.</p></blockquote>
<h4>4. Create an Action Profile process to pre-populate the form with data from the database</h4>
<blockquote><p>In order to pre-populate the Drop-down list before the user sees the form:</p>
<ol>
<li>Create an Action Profile for the form that will call a Prepare Data Process</li>
<li>Inside the Prepare Data Process, Create an XML variable called SupervisorList</li>
<li>Inside the Prepare Data Process, Query the Database and Build an XML Variable using the Service Query for Multiple Rows as XML Service (Foundation/JdbcService).  After applying a SQL Statement to retreive the Supervisor ID and Supervisor Name from the database, click on the elipses button next to XML Information and fill it according to the image below according to your XSD.</li>
<li><a class="lightbox" title="XML Information Mapping" href="http://blogs.adobe.com/acdc/files/2011/11/XMLMapping1.jpg"><img class="aligncenter size-full wp-image-147" title="XML Information Mapping" src="http://blogs.adobe.com/acdc/files/2011/11/XMLMapping1.jpg" alt="" width="419" height="318" /></a>Set the Output for Step 3 Service to be the XML Variable created in Step 2.</li>
<li>Bind the XML to the XSD element used in the forms DataConnection using setValue</li>
</ol>
</blockquote>
<blockquote><p><a class="lightbox" title="setValue Xpath Mapping" href="http://blogs.adobe.com/acdc/files/2011/11/setValueXpathMapping.jpg"><img class="aligncenter size-full wp-image-148" title="setValue Xpath Mapping" src="http://blogs.adobe.com/acdc/files/2011/11/setValueXpathMapping.jpg" alt="" width="400" height="216" /></a></p></blockquote>
<blockquote><p>Now, when the user pulls up the form in Workspace, it comes pre-populated with all of the Supervisors Names. The value for each field will be the Supervisor ID in this case.</p></blockquote>
<blockquote><p><a class="lightbox" title="Final Drop-down List" href="http://blogs.adobe.com/acdc/files/2011/11/finalDropDownList.jpg"><img class="aligncenter size-full wp-image-149" title="Final Drop-down List" src="http://blogs.adobe.com/acdc/files/2011/11/finalDropDownList.jpg" alt="" width="400" height="422" /></a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2011/12/populate-a-drop-down-list-in-livecycle-designer-with-dynamically-generated-xml.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Compiling a PDF Portfolio in LiveCycle</title>
		<link>http://blogs.adobe.com/acdc/2011/12/compiling-a-pdf-portfolio-in-livecycle.html</link>
		<comments>http://blogs.adobe.com/acdc/2011/12/compiling-a-pdf-portfolio-in-livecycle.html#comments</comments>
		<pubDate>Fri, 02 Dec 2011 02:02:51 +0000</pubDate>
		<dc:creator>jefyoung</dc:creator>
				<category><![CDATA[Acrobat]]></category>
		<category><![CDATA[DDX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[PDF Asembler]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=159</guid>
		<description><![CDATA[Situation: How to merge multiple PDFs (retreived from a Database BLOB) and compile them using DDX and LiveCycle (ADEP). The portfolio will build based on the number of documents stored inside the database. In this situation we will be compiling &#8230; <a href="http://blogs.adobe.com/acdc/2011/12/compiling-a-pdf-portfolio-in-livecycle.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Situation:</h2>
<p>How to merge multiple PDFs (retreived from a Database BLOB) and compile them using DDX and LiveCycle (ADEP). The portfolio will build based on the number of documents stored inside the database.</p>
<p>In this situation we will be compiling a Cover Page, Content Document(s), and a Final Document. Depending on the workflow state, there could be 0-5 documents in the database under the Content Document(s) section. The process is flexible enough to handle this.</p>
<h4>Create the DDX File:</h4>
<ol>
<li>Start by looking at the Assembly Descriptor <a title="Assembly Descriptor Documentation" href="http://help.adobe.com/en_US/livecycle/9.0/workbenchHelp/help.htm?content=partDocBuilder_1.html" target="_blank">documentation</a> and <a title="DDX Reference Guide" href="help.adobe.com/en_US/enterpriseplatform/10.0/ddxRef.pdf " target="_blank">DDX Reference Guide</a>.</li>
<li>In Workbench: Create a New Application (File&gt;New&gt;Application)</li>
<li>Inside the Application directory, create a new folder and name it Assets.</li>
<li>Locate the Acrobat .nav File you want to use. It will be located on your filesystem here: [Acrobat Location]\Acrobat\Navigators. For this situation AdobeRevolve.nav is being used. Import the .nav file into your Application&#8217;s Assets folder.</li>
<li>Create a DDX file</li>
<ol>
<li>Right Click on Asset Folder&gt; New &gt; Assembly Descriptor.</li>
<li>Provide a name for the DDX document.</li>
<li>Click Finish.</li>
<li>The Document Builder Window should come up inside Workbench</li>
</ol>
<li>The DDX File in the End will look like this:<a class="lightbox" title="DDX" href="http://blogs.adobe.com/acdc/files/2011/12/DDX.jpg"><img class="aligncenter size-full wp-image-225" title="DDX" src="http://blogs.adobe.com/acdc/files/2011/12/DDX.jpg" alt="" width="250" height="468" /></a></li>
<ol>
<li>Start by Selecting New Result&gt;PDF and Name it CompiledPDF</li>
<li>Drag the Portfolio Component Under the CompiledPDF</li>
<li>Under the Portfolio Editor paste the following elements:
<pre>&lt;Portfolio&gt;
  &lt;ColorScheme scheme="darkblueScheme"/&gt;
  &lt;Header/&gt;
  &lt;WelcomePage/&gt;
  &lt;Schema/&gt;
  &lt;DisplayOrder/&gt;
  &lt;SortOrder/&gt;
  &lt;Navigator source="AdobeRevolve.nav"/&gt;
&lt;/Portfolio&gt;</pre>
</li>
<li>Press Apply in the Editor</li>
<li>Drag the Navigator icon under the Portfolio Icon</li>
<li>Paste the following under the Navigator Editor:  &lt;Navigator source=&#8221;AdobeRevolve.nav&#8221;/&gt;</li>
<li>Press Apply in the Editor</li>
<li>Drag the Packaged Files Icon underneath the Portfolio Icon</li>
<li>Then add Seven PDF Documents sources under the Packaged Files and Name them in their Source field accordingly</li>
<li>For Only the CoverPage document (the first one), go under the Basic tab and select both &#8220;This is the Base Document&#8221; and &#8220;There must be at least one valid source in this document&#8221; and ensure both of these boxes are deselected for the other PDF Document.</li>
</ol>
<li>Validate the DDX and Save it</li>
</ol>
<h4>Create a Process that will retrieve the documents from the database BLOB, assign them to a document map, invoke the DDX, Output a single PDF Portfolio document</h4>
<p style="padding-left: 30px; text-align: center;">The process will be built to look something like this:<a class="lightbox" title="DDX Process" href="http://blogs.adobe.com/acdc/files/2011/12/DDXProcess.jpg"><img class="aligncenter size-full wp-image-226" title="DDX Process" src="http://blogs.adobe.com/acdc/files/2011/12/DDXProcess.jpg" alt="" width="585" height="146" /></a></p>
<p style="padding-left: 30px;"><strong>In this process you will need the following variables:</strong></p>
<ul>
<ul>
<li>thePortfolio&#8211;document&#8211;Output&#8211;Required</li>
<li>retrievedDocument &#8211;document</li>
<li>mapPortfolioDocs&#8211;map &lt;document&gt;</li>
<li>totalContentDocs&#8211;int</li>
<li>counter&#8211;int</li>
<li>tempContentDocID&#8211; string</li>
<li>PortfolioAssemblerResult&#8211;AssemblerResult</li>
</ul>
</ul>
<div style="padding-left: 30px;"><strong>Retrieve a specific PDF document from the Oracle database BLOB and store it in the local variable retrievedDocument by executing the following executeScript service.</strong></div>
<div style="padding-left: 30px;">
<pre style="padding-left: 30px;">import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.sql.DataSource;
import javax.naming.InitialContext;
 try {
   InitialContext context = new InitialContext();
   String queryQuery = [input your query here to get blob]
   //If you need to pass a process variable use "patExecContext.getProcessDataValue("/process_data/@counter");
   try {
    DataSource ds = (DataSource) context.lookup("java:/DDXDocs_DS");
    connection = ds.getConnection();
    queryStatement = connection.prepareStatement(queryQuery);
    results = queryStatement.executeQuery();
    if (results.next()) {
        java.sql.Blob documentBlob = results.getBlob(1);
        com.adobe.idp.Document document = new com.adobe.idp.Document(documentBlob.getBinaryStream());|
        patExecContext.setProcessDataValue("/process_data/@retrievedDocument", document);
     }
   }catch(Exception ex){
	System.out.println(ex.printStackTrace());
} finally {
    if (results != null) {
    	 results.close();
    }
    if (queryStatement != null) {
        queryStatement.close();
    }
    if (connection != null) {
        connection.close();
    }
   }
 } catch (Exception e) {
   e.printStackTrace();
 }</pre>
<p>&nbsp;</p>
<p><strong>To test if a BLOB had been retrieved use the following route condition:</strong></p>
<pre style="padding-left: 30px;">getDocLength<strong>(</strong>/process_data/@retrievedDocument<strong>)==0</strong></pre>
<p>&nbsp;</p>
<p><strong>If the document  was successfully retrieved, map it to the map &lt;document&gt; variable (mapPortfolioDocs) based on the id you gave it in the DDX source, using the setValue mapping below:<a class="lightbox" title="Map Retrieved Doc" href="http://blogs.adobe.com/acdc/files/2011/12/MapRetrievedDoc.jpg"><img class="aligncenter size-full wp-image-227" title="Map Retrieved Doc" src="http://blogs.adobe.com/acdc/files/2011/12/MapRetrievedDoc.jpg" alt="" width="364" height="47" /></a></strong></p>
</div>
<div style="padding-left: 30px;"><strong>After retrieving all of the documents available, it is time to InvokeDDX. Using the Invoke DDX Service:</strong></div>
<div style="padding-left: 30px;"><a class="lightbox" title="Invoke DDX Config" href="http://blogs.adobe.com/acdc/files/2011/11/InvokeDDXConfig.jpg"><img class="aligncenter size-full wp-image-166" title="Invoke DDX Config" src="http://blogs.adobe.com/acdc/files/2011/11/InvokeDDXConfig.jpg" alt="" width="400" height="422" /></a></div>
<div style="padding-left: 30px;"><strong>Finally, using the setValue operation, map the AssemblerResult to the output document variable (thePortfolio):</strong></div>
<div style="padding-left: 30px;"><a class="lightbox" title="mapPortfolio" href="http://blogs.adobe.com/acdc/files/2011/11/mapPortfolio.jpg"><img class="aligncenter size-full wp-image-167" title="mapPortfolio" src="http://blogs.adobe.com/acdc/files/2011/11/mapPortfolio.jpg" alt="" width="577" height="123" /></a></div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2011/12/compiling-a-pdf-portfolio-in-livecycle.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuring Watched Folder for PDF Generator</title>
		<link>http://blogs.adobe.com/acdc/2011/12/configuring-watched-folder-for-pdf-generator.html</link>
		<comments>http://blogs.adobe.com/acdc/2011/12/configuring-watched-folder-for-pdf-generator.html#comments</comments>
		<pubDate>Thu, 01 Dec 2011 14:25:31 +0000</pubDate>
		<dc:creator>jefyoung</dc:creator>
				<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[PDF Generator]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=139</guid>
		<description><![CDATA[To configure a watched folder in the Admin Console for PDF Generator: Create a folder to be your watched folder on your filesystem Login to the ADEP Admin Console (http://[servername]:[portnumber]/adminui/) Navigate to Services &#62; PDF Generator Click On Sources Category=PDF &#8230; <a href="http://blogs.adobe.com/acdc/2011/12/configuring-watched-folder-for-pdf-generator.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>To configure a watched folder in the Admin Console for PDF Generator:</p>
<ol>
<li>Create a folder to be your watched folder on your filesystem</li>
<li>Login to the ADEP Admin Console (<a href="http://servername:portnumber/adminui/">http://[servername]:[portnumber]/adminui/</a>)</li>
<li>Navigate to Services &gt; PDF Generator</li>
<li>Click On Sources</li>
<li>Category=PDF Generator, Click Filter</li>
<li>Click on &#8216;GeneratePDFService: 1.0 &#8216; [Documentation on <a title="Generate PDF Service" href="http://help.adobe.com/en_US/enterpriseplatform/10.0/Services/WS92d06802c76abadb76c48dfe12dbeb3e281-7fe7.html" target="_blank">GeneratePDFService</a>]</li>
<li>In the &#8216;End Points&#8217; tab, choose &#8216;WatchedFolder&#8217; from the dropdownlist</li>
<li>Click &#8216;Add&#8217; (Resource: <a title="Description of Watched Folder Endpoint Properties" href="http://help.adobe.com/en_US/enterpriseplatform/10.0/WorkbenchHelp/WS92d06802c76abadb-1cc35bda128261a20dd-7f70.html" target="_blank">Description of Watched Folder End Point properties</a>)</li>
<li>For &#8216;Description&#8217;, type something to the effect of &#8220;Watched Folder Endpoint PDFG&#8221;</li>
<li>In &#8216;Enter path for the watched folder&#8217;, type in the fully qualified path to the folder you created in Step 1</li>
<li>In the Operation Field, select CreatePDF2 from dropdown</li>
<li>In the &#8216;Input Parameter Mappings&#8217; section, for the &#8216;inputDocument&#8217; field, select variable, type *.* (this will allow all supported input type files)</li>
<li>In the &#8216;Output Parameter Mappings&#8217; section, for the &#8216;Output PDF Document&#8217; field, type %F%E.pdf (this will inherit the input filename and extension and append the .pdf extension.</li>
<li>Click the Add button to save the changes.</li>
<li>Navigate to the Watched Folder you created in Step 1, you should now see new directories: /input, /result, /staged, /failed, /preserve</li>
<li>Test by copying a Word document to the /input folder. It should disappear a few seconds later</li>
<li>If successful, the generated PDF will appear in /result directory. If it failed, the document and reason for failure appear in the /failed directory</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2011/12/configuring-watched-folder-for-pdf-generator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making LiveCycle Workspace Tasks Only Visible to Specific Users/Groups</title>
		<link>http://blogs.adobe.com/acdc/2011/12/making-livecycle-workspace-tasks-only-visible-to-specific-usersgroups.html</link>
		<comments>http://blogs.adobe.com/acdc/2011/12/making-livecycle-workspace-tasks-only-visible-to-specific-usersgroups.html#comments</comments>
		<pubDate>Thu, 01 Dec 2011 14:24:05 +0000</pubDate>
		<dc:creator>jefyoung</dc:creator>
				<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[Workspace]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=179</guid>
		<description><![CDATA[If you want to make a Workspace task only visible to specific groups, you have to specify who can Invoke the task through the AdminUI. Prior to setting this up, be sure that you have already set up the groups &#8230; <a href="http://blogs.adobe.com/acdc/2011/12/making-livecycle-workspace-tasks-only-visible-to-specific-usersgroups.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>If you want to make a Workspace task only visible to specific groups, you have to specify who can Invoke the task through the AdminUI.</p>
<p>Prior to setting this up, be sure that you have already set up the groups you will need in order to lock down tasks to specific users and groups. Also be sure that all the users that need to invoke processes through workspace are given the Workspace User Role.</p>
<ol>
<li>Login into Admin Console http[s]://[server]:[port]/adminui</li>
<li>Services&gt;Applications and Services&gt;Service Management</li>
<li>Click the category dropdown, choose the category your process belongs to, and click filter.</li>
<li>Locate the Process you wish to lock down and click the name of theProcess</li>
<li>Click security tab</li>
<li>Click Add Principal</li>
<li>Choose User/Group in the “In” dropdown and click filter</li>
<li>Click on User or Group you wish to add</li>
<li>Check INVOKE_PERM<a class="lightbox" title="INVOKE_PERM" href="http://blogs.adobe.com/acdc/files/2011/11/INVOKE_PERM.jpg"><img class="aligncenter size-full wp-image-180" title="INVOKE_PERM" src="http://blogs.adobe.com/acdc/files/2011/11/INVOKE_PERM.jpg" alt="" width="471" height="211" /></a></li>
<li>Click Add<a class="lightbox" title="AllPrincipals" href="http://blogs.adobe.com/acdc/files/2011/11/AllPrincipals.jpg"><img class="aligncenter size-full wp-image-181" title="AllPrincipals" src="http://blogs.adobe.com/acdc/files/2011/11/AllPrincipals.jpg" alt="" width="518" height="291" /></a></li>
<li>Test by logging into Workspace as a user that should be able to invoke a task, task card should be visible.</li>
<li>Then log into Workspace as a user that should not be able to invoke a task, the task card should not be visible.</li>
</ol>
<p>Repeat steps 6-10 for each user/group<br />
Repeat steps 4-10 for each process</p>
<p><em>Note</em>: If a user has the Contentspace User or an Administrator role, they may be able invoke most tasks</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2011/12/making-livecycle-workspace-tasks-only-visible-to-specific-usersgroups.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Required Digital Signatures in LiveCycle form</title>
		<link>http://blogs.adobe.com/acdc/2011/06/required-digital-signatures-in-livecycle-form.html</link>
		<comments>http://blogs.adobe.com/acdc/2011/06/required-digital-signatures-in-livecycle-form.html#comments</comments>
		<pubDate>Mon, 06 Jun 2011 17:53:36 +0000</pubDate>
		<dc:creator>jefyoung</dc:creator>
				<category><![CDATA[Designer]]></category>
		<category><![CDATA[Digital Signatures]]></category>
		<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[acrobat]]></category>
		<category><![CDATA[Form]]></category>
		<category><![CDATA[livecycle]]></category>
		<category><![CDATA[mandatory]]></category>
		<category><![CDATA[signatureValidation]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=122</guid>
		<description><![CDATA[Description: Recently, I had a project in which a form was being routed to three people in a serial fashion. However, prior to submitting the form we wanted to test whether the current user had signed the form in his/her &#8230; <a href="http://blogs.adobe.com/acdc/2011/06/required-digital-signatures-in-livecycle-form.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>Description:</strong><br />
Recently, I had a project in which a form was being routed to three people in a serial fashion. However, prior to submitting the form we wanted to test whether the current user had signed the form in his/her designated spot. In order for the digital signatures to remain valid we could not make adjustments to the XML Schema and then use the RenderForm activity in LiveCycle&#8211; signatures would have been broken. So we had to put all the code to handle this in the form.</p>
<p><strong>Situation</strong>:<br />
There are three roles, Employee, Supervisor, and Reviewer. The form is routed through a LiveCycle process in that order. The Supervisor and Reviewer can either Approve or Decline the form. If the form is Declined it gets routed back to the Employee.</p>
<p><strong>Setting up the form:</strong></p>
<ul>
<li>Add a Text Field, name it <em>requiredSignature</em>, and set its presence to Invisible and set its value to &#8220;Employee&#8221;</li>
<li>Add 3 digital signature fields and named them: <em>employeeSignature</em>, <em>supervisorSignature</em>, and <em>reviewerSignature</em></li>
<li>Put the Approve/Decline option as a drop-down list into the form instead of in Workspace User Action so we did not have to depend on the AWS_ACTION drop down and Form Bridge because we are submitting as a PDF due to the digital signatures, everything is self-contained in the form.</li>
<li>The bottom of the form looks like this:
<p><div id="attachment_127" class="wp-caption aligncenter" style="width: 610px"><a class="lightbox" title="3DigitalSignatures" href="http://blogs.adobe.com/acdc/files/2011/06/3DigitalSignatures.jpg"><img class="size-full wp-image-127" title="3DigitalSignatures" src="http://blogs.adobe.com/acdc/files/2011/06/3DigitalSignatures.jpg" alt="Three Digital Signatures" width="600" height="175" /></a><p class="wp-caption-text">Three Digital Signatures </p></div></li>
</ul>
<p>&nbsp;</p>
<p><strong>Code:</strong></p>
<p>Three things you should know about the following code:</p>
<ol>
<li>signatureValidate returns:
<div><a name="1970360"> -1</a> — Not a signature field</div>
<div><a name="1970361"> 0</a> — Signature is blank</div>
<div><a name="1970362"></a><a name="1970361"> </a>1 — Unknown status</div>
<div><a name="1970363"> 2</a> — Signature is invalid</div>
<div><a name="1970364"> 3</a> — Signature of document is valid, identity of signer could not be verified</div>
<div><a name="1970365"> 4</a> — Signature of document is valid and identity of signer is valid.</div>
</li>
<li>event.target.getField() you must include [0] in order target the designated field.</li>
<li>[signatureField].mandatory makes that signatureField required prior to submit; [signatureField].disabled makes that signatureField no longer required in order to submit the form.</li>
</ol>
<p>To be placed on the in the <em>preSubmit</em> Event for the form:</p>
<blockquote><p><!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px 'Courier New'} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px 'Courier New'; min-height: 11.0px} p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px 'Courier New'; color: #0044fc} p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px 'Courier New'; color: #008d12} span.s1 {color: #0044fc} span.s2 {color: #000000} span.Apple-tab-span {white-space:pre} --><span style="color: #888888;">if (requiredSignature.rawValue==&#8221;Employee&#8221;){<br />
</span><span style="color: #888888;"> </span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">var oState = event.target.getField(&#8220;employeeSignature[0]&#8220;).signatureValidate();</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;"> if (oState &gt; 3)</span><span style="color: #888888;">{</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">employeeSignature.mandatory = &#8220;disabled&#8221;;<br />
</span><span style="color: #888888;"> requiredSignature.rawValue=&#8221;Supervisor&#8221;;</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;"> }<br />
</span><span style="color: #888888;"> else</span><span style="color: #888888;">{</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;"> employeeSignature.mandatory = &#8220;error&#8221;;</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">}</span></p>
<p><span style="color: #888888;">}</span></p>
<p><span style="color: #888888;">else if (requiredSignature.rawValue==&#8221;Supervisor&#8221;){</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">var oState = event.target.getField(&#8220;supervisorSignature[0]&#8220;).signatureValidate();</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">if (oState &gt; 3)</span><span style="color: #888888;">{</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">supervisorSignature.mandatory = &#8220;disabled&#8221;;<br />
</span><span style="color: #888888;"> requiredSignature.rawValue=&#8221;Reviewer&#8221;;</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">}<br />
</span><span style="color: #888888;"> else</span><span style="color: #888888;">{</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">supervisorSignature.mandatory = &#8220;error&#8221;;</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">}</span></p>
<p><span style="color: #888888;">}</span><span style="color: #888888;">else if(requiredSignature.rawValue==&#8221;Reviewer&#8221;){<br />
</span><span style="color: #888888;"> </span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">var oState = event.target.getField(&#8220;reviewerSignature[0]&#8220;).signatureValidate();<br />
</span><span style="color: #888888;"> if (oState &gt; 3)</span><span style="color: #888888;">{<br />
</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">reviewerSignature.mandatory = &#8220;disabled&#8221;;</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;"> </span><span style="color: #888888;">}</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;"> else</span><span style="color: #888888;">{</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">reviewerSignature.mandatory = &#8220;error&#8221;;<br />
</span><span style="color: #888888;"> </span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">}<br />
</span><span style="color: #888888;"> </span></p>
<p><span style="color: #888888;">}</span></p>
<p><span style="color: #888888;">else if(requiredSignature.rawValue==&#8221;Decline&#8221;){<br />
</span><span style="color: #888888;"> </span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">requiredSignature.rawValue=&#8221;Employee&#8221;;<br />
</span><span style="color: #888888;"> </span></p>
<p><span style="color: #888888;">}</span></p></blockquote>
<p>&nbsp;</p>
<p>On the Supervisor Approve/Decline Drop-down list add the following code to the <em>exit</em> Event:</p>
<p><!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px 'Courier New'} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px 'Courier New'; min-height: 11.0px} p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px 'Courier New'; color: #008d12} p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px 'Courier New'; color: #0044fc} span.s1 {color: #0044fc} span.s2 {color: #000000} span.Apple-tab-span {white-space:pre} --></p>
<blockquote><p><span style="color: #888888;">var oState = event.target.getField(employeeSignature[0]&#8220;).signatureValidate();</span></p>
<p><span style="color: #888888;">if(this.rawValue == &#8220;Approve&#8221;){</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;"> if (requiredSignature.rawValue==&#8221;Supervisor&#8221;){<br />
</span><span style="color: #888888;">//do nothing</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;"><br />
</span><span style="color: #888888;">}</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">else if(requiredSignature.rawValue==&#8221;Decline&#8221;){</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">requiredSignature.rawValue=&#8221;Supervisor&#8221;;</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">if (oState &gt; 3)</span><span style="color: #888888;">{</span></p>
<p style="padding-left: 90px;"><span style="color: #888888;">supervisorSignature.mandatory = &#8220;error&#8221;;</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">}</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">supervisorSignature.presence = &#8220;visible&#8221;;<br />
</span><span style="color: #888888;">supervisorSignatureDate.presence = &#8220;visible&#8221;;</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">}</span></p>
<p><span style="color: #888888;">}</span></p>
<p><span style="color: #888888;">else{</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">if (requiredSignature.rawValue==&#8221;Supervisor&#8221;){</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">if (oState &gt; 3)<br />
</span><span style="color: #888888;">{</span></p>
<p style="padding-left: 90px;"><span style="color: #888888;"> </span><span style="color: #888888;">requiredSignature.rawValue=&#8221;Decline&#8221;;</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">}<br />
</span><span style="color: #888888;">supervisorSignature.mandatory = &#8220;disabled&#8221;;<br />
</span></p>
<p style="padding-left: 30px;"><span style="color: #888888;">}</span></p>
<p style="padding-left: 60px;"><span style="color: #888888;">supervisorSignature.presence = &#8220;hidden&#8221;;<br />
</span><span style="color: #888888;">supervisorSignatureDate.presence = &#8220;hidden&#8221;;</span></p>
<p><span style="color: #888888;">}</span></p></blockquote>
<p>&nbsp;</p>
<p><strong>Result:</strong></p>
<p>If an Employee attempts to Submit the form without signing the form, he/she will get the following Error Message:</p>
<div id="attachment_129" class="wp-caption aligncenter" style="width: 488px"><a class="lightbox" title="EmployeeSigErrorMsg" href="http://blogs.adobe.com/acdc/files/2011/06/EmployeeSigErrorMsg.jpg"><img class="size-full wp-image-129" title="EmployeeSigErrorMsg" src="http://blogs.adobe.com/acdc/files/2011/06/EmployeeSigErrorMsg.jpg" alt="Employee Signature Error Message" width="478" height="154" /></a><p class="wp-caption-text">Employee Signature Error Message</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2011/06/required-digital-signatures-in-livecycle-form.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silent Print in Acrobat Using JavaScript</title>
		<link>http://blogs.adobe.com/acdc/2011/03/silent-print-in-acrobat-using-javascript.html</link>
		<comments>http://blogs.adobe.com/acdc/2011/03/silent-print-in-acrobat-using-javascript.html#comments</comments>
		<pubDate>Sat, 05 Mar 2011 20:13:31 +0000</pubDate>
		<dc:creator>Robert Johnson</dc:creator>
				<category><![CDATA[Acrobat]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=42</guid>
		<description><![CDATA[I received a question from a customer on whether or not it is possible to create a toolbar button that will perform a silent print in Acrobat.  Well, it turns out that using JavaScript it is possible and really isn&#8217;t &#8230; <a href="http://blogs.adobe.com/acdc/2011/03/silent-print-in-acrobat-using-javascript.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I received a question from a customer on whether or not it is possible to create a toolbar button that will perform a silent print in Acrobat.  Well, it turns out that using JavaScript it is possible and really isn&#8217;t all that difficult.</p>
<p>Here&#8217;s some code:</p>
<pre>    
    // if the application is Adobe Acrobat...
    //then create the silent print button
    if(app.viewerType == "Exchange-Pro") {

        app.trustedFunction(customSilentPrint);

        app.addToolButton({
            cName: "customSilentPrint",
            cExec: "customSilentPrint()",
            cTooltext: "Print Silent",
            cLabel: "Print Silent",
            cEnable: "event.rc = (app.doc != null)" });
        }

    function customSilentPrint(){

        // explicitly raise privileges
        app.beginPriv();

        try{
            // get the printer params
            var pp = this.getPrintParams();

            // don't show the print dialog window
            pp.interactive = pp.constants.interactionLevel.silent;
        }
        catch(err){
            app.alert("Error setting up printing parameters.\n\n" + err);
        }

        try{
            this.print(pp);
        }
        catch(err){
            app.alert("Error Printing.\n\n" + err);
        }

        // end explicit privileges
        app.endPriv();
    }
</pre>
<p><br/><br />
As you can see, there really isn&#8217;t much to this code, but let&#8217;s break it down.</p>
<p>First we check to ensure we are in Acrobat and, if so, we add the button called &#8220;Print Silent&#8221; to the Acrobat toolbar:</p>
<pre>
    // if the application is Adobe Acrobat...then create the silent print button
    if(app.viewerType == "Exchange-Pro") {

        app.trustedFunction(customSilentPrint);

        app.addToolButton({
            cName: "customSilentPrint",
            cExec: "customSilentPrint()",
            cTooltext: "Print Silent",
            cLabel: "Print Silent",
            cEnable: "event.rc = (app.doc != null)" });
    }
</pre>
<p><br/></p>
<p>Next we create the function called customSilentPrint and raise privileges:</p>
<pre>
    function customSilentPrint(){

        // explicitly raise privileges
        app.beginPriv();
</pre>
<p><br/></p>
<p>Within the function we get to the meat of the work by creating a print params object and setting the interactionLevel to silent.</p>
<pre>
        try{
            // get the printer params
            var pp = this.getPrintParams();
        
            // don't show the print dialog window
            pp.interactive = pp.constants.interactionLevel.silent;
        }
</pre>
<p><br/></p>
<p>Now that we are set up to print silent, call the print function with these lines:</p>
<pre>
        try{
            this.print(pp);
        }
        catch(err){
            app.alert("Error Printing.\n\n" + err);
        }
</pre>
<p></br></p>
<p>To finish off our code we lower our privileges and close out the function:</p>
<pre>
        // end explicit privileges
        app.endPriv();

    }
</pre>
<p><br/></p>
<p>As you can see there&#8217;s really no magic here, but this JavaScript code is a nifty little way to print silently in Acrobat.  </p>
<p>Also, I haven&#8217;t researched silent printing using reader, but if you have tried it and succeeded or failed, please feel free to add to the post via comments.<br />
<br/></p>
<p>BTW &#8211; If you don&#8217;t know how to create a toolbar button or install JavaScript in Acrobat, check out my collegue Venkata&#8217;s post <a href="http://blogs.adobe.com/acdc/?p=16">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2011/03/silent-print-in-acrobat-using-javascript.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RIAs and Mobile Solutions to the Warfighter &#8211; Webinar on September 9</title>
		<link>http://blogs.adobe.com/acdc/2010/09/rias-and-mobile-solutions-to-the-warfighter-webinar-on-september-9.html</link>
		<comments>http://blogs.adobe.com/acdc/2010/09/rias-and-mobile-solutions-to-the-warfighter-webinar-on-september-9.html#comments</comments>
		<pubDate>Wed, 08 Sep 2010 14:25:50 +0000</pubDate>
		<dc:creator>John C Cummins</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=32</guid>
		<description><![CDATA[ISS and Adobe are partnering to offer a free webinar on RIAs in the US Department of Defense. The title is &#8220;Information to the Edge &#8211; RIAs and Mobile Solutions for the Warfighter&#8221;. It&#8217;s September 9th at 2 PM EST. &#8230; <a href="http://blogs.adobe.com/acdc/2010/09/rias-and-mobile-solutions-to-the-warfighter-webinar-on-september-9.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>ISS and Adobe are partnering to offer a free webinar on RIAs in the US Department of Defense. The title is &#8220;Information to the Edge &#8211; RIAs and Mobile Solutions for the Warfighter&#8221;.</p>
<p>It&#8217;s September 9th at 2 PM EST. More details are here <a href="http://www.adobegovernmentevents.com/UsingRIAs/registration.html">http://www.adobegovernmentevents.com/UsingRIAs/registration.html</a></p>
<p>You can register here <a href="http://www.adobegovernmentevents.com/UsingRIAs/registration.html" target="_blank">http://www.adobegovernmentevents.com/UsingRIAs/registration.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2010/09/rias-and-mobile-solutions-to-the-warfighter-webinar-on-september-9.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Motorola and Verizon announce DROID 2 with Flash Player 10.1 preinstalled</title>
		<link>http://blogs.adobe.com/acdc/2010/08/motorola-and-verizon-announce-droid-2-with-flash-player-10-1-preinstalled.html</link>
		<comments>http://blogs.adobe.com/acdc/2010/08/motorola-and-verizon-announce-droid-2-with-flash-player-10-1-preinstalled.html#comments</comments>
		<pubDate>Tue, 10 Aug 2010 18:50:08 +0000</pubDate>
		<dc:creator>John C Cummins</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[droid]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[motorola]]></category>
		<category><![CDATA[verizon]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/?p=27</guid>
		<description><![CDATA[Motorola and Verizon announce pre-sale of DROID 2 by Motorola starts Aug 11 with Android 2.2 and Adobe Flash Player 10.1 preinstalled. <a href="http://blogs.adobe.com/acdc/2010/08/motorola-and-verizon-announce-droid-2-with-flash-player-10-1-preinstalled.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><!--StartFragment--><span style="font-family: Helvetica,Verdana,Arial;"><span style="text-decoration: underline;"> </span></span><span style="font-family: Helvetica,Verdana,Arial;"><span style="text-decoration: underline;">Motorola and Verizon announce  pre-sale of DROID 2 by Motorola starts Aug 11 with Android 2.2 and Adobe  Flash Player 10.1 preinstalled.</span></span><br />
<span style="font-family: Helvetica,Verdana,Arial;"><span style="text-decoration: underline;"> </span>DROID 2 is a feature-packed device that helps manage work and social life with an enhanced QWERTY keyboard, increased processing power, ultra high-speed Web browsing, 3G Mobile HotSpot capabilities, full push corporate e-mail, intuitive social messaging and Adobe® Flash® Player 10.1 for access to the full web on the go – all built on Android 2.2.  Flash Player 10.1 lets mobile users experience millions of websites the way they were meant to be seen – with rich Internet applications (RIAs), content inside the browser, including games, animations, data presentations and visualizations, e-commerce, music, video, audio and more. DROID 2 by Motorola will be available at <a href="http://www.verizonwireless.com" target="_blank"><span style="color: #00489d;"><strong>www.verizonwireless.com</strong></span></a><strong> </strong> on August 11, and it will be in Verizon Wireless Communications Stores beginning August 12 for $199.99 after a $100 mail-in rebate with a new two-year customer agreement.  To learn more about DROID 2 in action, visit <strong><a href="http://www.droiddoes.com" target="_blank">www.droiddoes.com</a> </strong>.  <span style="color: #00368f;"> </span>To get started optimizing your web content for mobile devices, see <a href="http://www.adobe.com/devnet/devices/fpmobile" target="_blank"><span style="color: #0000ff;"><strong><span style="text-decoration: underline;">http://www.adobe.com/devnet/devices/fpmobile</span></strong></span></a></span></p>
<p><span style="font-family: Helvetica,Verdana,Arial;"><a href="http://www.adobe.com/devnet/devices/fpmobile" target="_blank"><span style="color: #0000ff;"><strong></strong></span></a><strong><br />
</strong>Check out this video <span style="color: #0000ff;"><strong><span style="text-decoration: underline;"><a href="http://www.adobe.com/go/fp101droid2" target="_blank">http://www.adobe.com/go/fp101droid2</a></span></strong></span><strong></strong> , where Diana Helander of Adobe demos the full web on the new DROID 2 by Motorola running Flash Player 10.1. DROID 2 is the first smartphone to ship out of the box with Flash Player 10.1 and benefit from HW decoding of all H.264 video profiles in Flash Player. </span> <!--EndFragment--></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2010/08/motorola-and-verizon-announce-droid-2-with-flash-player-10-1-preinstalled.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Setting Up Windows Service Dependencies &#8211; Oracle XE Example</title>
		<link>http://blogs.adobe.com/acdc/2010/07/setting_windows_service_depend.html</link>
		<comments>http://blogs.adobe.com/acdc/2010/07/setting_windows_service_depend.html#comments</comments>
		<pubDate>Mon, 26 Jul 2010 20:32:14 +0000</pubDate>
		<dc:creator>John C Cummins</dc:creator>
				<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[livecycle]]></category>
		<category><![CDATA[LiveCycle ES]]></category>
		<category><![CDATA[LiveCycle ES2]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Windows Service]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/acdc/2010/07/setting_windows_service_depend.html</guid>
		<description><![CDATA[Did you ever need a Windows service to startup, but only after other services are running? The LiveCycle Turnkey installation creates a dependency so that MySQL starts before JBoss. What if your application requires another DB such as Oracle XE to be running first?
 <a href="http://blogs.adobe.com/acdc/2010/07/setting_windows_service_depend.html">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Did you ever need a Windows service to startup, but only after other services are running? The LiveCycle Turnkey installation creates a dependency so that MySQL starts before JBoss. What if your application requires another DB such as Oracle XE to be running first?</p>
<p>Unfortunately, Oracle XE does not install this dependency, so that if you setup the Oracle XE DB to automatically start (the default installation), everything will be running, but you can&#8217;t access the XE DB. This can happen when the DB starts up before the TNS Listener, so that the TNS Listener doesn&#8217;t realize there&#8217;s a database running. </p>
<p>This Knowledge Base Article from Microsoft <a href="http://support.microsoft.com/kb/193888">http://support.microsoft.com/kb/193888</a> describes how to do setup these dependencies, but the text does not match up with what I see in Windows 2003 EE R2, so I have attached some screen shots. </p>
<ol>
<li>Start-&gt;Run-&gt;regedit</li>
<li>Navigate to <strong>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleServiceXE</strong> (swap OracleServiceXE for your service)</li>
<li>Create a new Multi-String Value, by right-clicking on the background in the folder&#8217;s contents <br />
<span class="mt-enclosure mt-enclosure-image"><img alt="create_multi-string_value.png" src="http://blogs.adobe.com/acdc/windows_dependencies/create_multi-string_value.png" width="274" height="140" class="mt-image-none" /></span></li>
<li>Change the name of the value to &#8220;DependOnService&#8221;
</li>
<li>Edit the value (right-click and select modify) and add the services that should be started before this one. You need to enter the service name exactly as it appears in the Windows Services application. For Oracle XE, it is the &#8220;OracleXETNSListener&#8221; service.<br />
<span class="mt-enclosure mt-enclosure-image"><img alt="edit_value.png" src="http://blogs.adobe.com/acdc/windows_dependencies/edit_value.png" width="265" height="104" class="mt-image-none" /></span></li>
<li>Click OK<br />
<span class="mt-enclosure mt-enclosure-image"><img alt="change_multi-string_value_name.png" src="http://blogs.adobe.com/acdc/windows_dependencies/change_multi-string_value_name.png" width="432" height="176" class="mt-image-none" /></span><br />
<a href="http://blogs.adobe.com/acdc/windows_dependencies/change_multi-string_value_name_full_size.png">View larger image.</a></li>
<li>Verify that it was updated properly by checking the service properties<br />
<span class="mt-enclosure mt-enclosure-image"><img alt="service_properties.png" src="http://blogs.adobe.com/acdc/windows_dependencies/service_properties.png" width="449" height="171" class="mt-image-none" /></span><br />
<br />
<span class="mt-enclosure mt-enclosure-image"><img alt="service_dependencies.png" src="http://blogs.adobe.com/acdc/windows_dependencies/service_dependencies.png" width="409" height="460" class="mt-image-none" /></span>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/acdc/2010/07/setting_windows_service_depend.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
