Monday, March 23, 2015

Publishing Infopath Form to a new site/ Infopath change publish location

Hi Folks,

In this post we are going to Change the target site/ list url for publishing Infopath form

Problem Statement:
You have a Infopath form developed with a List template, present in a Sharepoint List of Development Environment. Now that you want to publish this form to Production environment but while publishing you will not be prompted to enter new URL in publishing wizard.
When you try to open the publishing Wizard from File Menu and then click on Publish you can see only the below two options.
·         Sharepoint List
·         Export Source Files
The "Sharepoint List" option remembers the Quick Publish Location and even has a Label stating: "The form will be published to: http://oldurl"
Clicking on the it, just does exactly the same as Quick Publish action i.e., quick publish without bringing up the wizard to choose the publish location.
Solution:
I found the best approach as below. It involves in updating the manifest files and view files. Below is the approach which does the trick.
1.       Infopath form (xsn) file is basically a cab file with bunch of related files in it.
2.       Rename xsn to cab extension
3.       Extract the cab file to a location
4.       Open the manifest.xsf file and replace the OLD URL with new URL.
5.       Update the new ListID and ContentTypeID in the Manifest.xsf(If you don’t do this, you will get List not found error).
6.       Open all the xsl files(views) present under extracted folder and perform the steps 4 and 5 if it has old URL and ListID/ContentType ID present.
7.       Save all the modified files and then right click on the manifest.xsf file and open click on design.

8.       This will open the Infopath form and Go to Publish. You will be able to see the updated New URL. Go ahead and Publish It and you are done.

Monday, February 24, 2014

How to Show and Hide a jQuery UI dialog popup

In this post we are going to load a specific page in a jquery UI dialog box. Below are the steps which does the trick.
Step 1: 
Add the jquery reference and then
Add the below empty div to your HTML
<div id="dlgdivcontent">
</div> 

Step2: 
Add the below java script function to your page
var $mydialog;
    function opendialogbox(url, popintitle) {
        $mydialog= $('#dlgdivcontent')
               .html('<iframe " src="' + url + '" width="500" height="350" scrolling="auto" frameBorder="0"></iframe>')
               .dialog({
                   autoOpen: false,
                   show: "fade",
                   hide: "fade",
                   modal: true,
                   height: 350,
                   width: 500,
                   resizable: false,
                   title: popintitle,
                   close: function (event, ui) {
                   //custom action if any on close click
                   }


               });

        $mydialog.dialog('open');
    }

Step3: 
Call the function opendialogbox with parameters as Url and Title on which wherever the link/button that you want to trigger the dialog box.

Sunday, January 5, 2014

Update User Profile property through jQuery SPServices

Hi folks,
In this post we are going to update User Profile property through jQuery SPServices. Below is the code snippet which does the trick.
Just call the function with the parameters CurrentUserAccountName, PropertyName and PropertyValue.

// add the ref of jQuery file
<script type="text/javascript" src="/style library/jquery-1.7.2.js"></script>
// add the ref of jQuery SPServices file
<script type="text/javascript" src="/style library/jquery.SPServices-0.7.0.min.js"></script>

function updateUserProfile(currUserAccName, propertyName, propertyValue) {
   var propertyData = "<PropertyData>" +
  "<IsPrivacyChanged>false</IsPrivacyChanged>" +
  "<IsValueChanged>true</IsValueChanged>" +
  "<Name>" + propertyName + "</Name>" +
  "<Privacy>NotSet</Privacy>" +
  "<Values><ValueData><Value xsi:type=\"xsd:string\">" + propertyValue + "</Value></ValueData></Values>" +
  "</PropertyData>";

   $().SPServices({
       operation: "ModifyUserPropertyByAccountName",
       async: false,
       webURL: "/",
       accountName: currUserAccName,
       newData: propertyData,
       completefunc: function (xData, Status) {
           var result = $(xData.responseXML);
           if (Status == "success") {
              //success message if needed
           }
       }
   });


}

Hope this helps...

Popular Posts