Pages

Subscribe:

Monday, November 26, 2012

Populate the fields based on Drop Down selection in NewForm.aspx using JQuery


Before doing that add the JQuery.js and SPServices.js reference in the Master Page. 

Then add the following script in the NewForm.aspx of the List 

<script type="text/javascript">
$(document).ready(function(){
        
         $().SPServices.SPDisplayRelatedInfo({
         columnName: "Project",
         relatedList: "Projects",
         relatedListColumn: "Title",
         relatedColumns: ["Client_x0020_Description","End_x0020_Date","ProjComments","Resources","Start_x0020_Date","Due_x0020_Date","Title"],
         displayFormat: "list",
         headerCSSClass: "ms-hidden",
        rowCSSClass:"ms-hidden",
        completefunc: SetFields
        });
});

function SetFields(){  
        
//Get the IDs of the fields to which you want to set the values
            var txtDescription = document.getElementById('ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl03_ctl00_ctl00_ctl04_ctl00_ctl00_TextField');
            var txtComment = document.getElementById('ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl12_ctl00_ctl00_ctl04_ctl00_ctl00_TextField');
            var txtAssignedTo= document.getElementById('ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl04_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_downlevelTextBox');
         var txtEndDate = document.getElementById('ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl11_ctl00_ctl00_ctl04_ctl00_ctl00_DateTimeField_DateTimeFieldDate');
         var txtStartDate=document.getElementById('ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl08_ctl00_ctl00_ctl04_ctl00_ctl00_DateTimeField_DateTimeFieldDate');
         var txtDueDate=document.getElementById('ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl09_ctl00_ctl00_ctl04_ctl00_ctl00_DateTimeField_DateTimeFieldDate');
         var txtTitle=document.getElementById('ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_TextField');
           
         $("div#SPDisplayRelatedInfo_Project td").each(function(index){
         debugger;
         switch(index)
         {
             case 0:
             var desc = $(this).html();
     //This is for the Multiline Rich Textbox in IE  $('#ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl03_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_iframe').contents().find('body').text(desc);
         //This is for other browsers
             txtDescription.value = desc;
             break
            
             case 1:            
             var columnDate =$(this).html();
             var endDate = $.format.date(columnDate , "MM/dd/yyyy");            
            txtEndDate.value = endDate ;
            break;
            
             case 2:
             var comment = $(this).html();
         $('#ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl12_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_iframe').contents().find('body').text(comment);
             txtComment.value = comment;
             break;
            
             case 3:
             var resource= "";
             $(this).find('a').each(function(){
                 resource = $(this).html()+ ";" + resource ;
                 txtAssignedTo.value = resource;
             $('#ctl00_m_g_ff38e82a_f0dd_4c96_bd29_92038b50b4fb_ctl00_ctl04_ctl04_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv').text(resource);                                    
             });
             break
            
                case 4:             
             var columnDate1 =$(this).html();                               
             var startdate = $.format.date(columnDate1, "MM/dd/yyyy");                          
            txtStartDate.value = startdate;
            break;
           
                case 5:             
             var columnDate2 =$(this).html();
             var Duedate = $.format.date(columnDate2 , "MM/dd/yyyy");       
        
            txtDueDate.value = Duedate;
            break;
           
                case 6:
                var titleval= $(this).html();
                txtTitle.value=titleval;
                break;        
         }          
     });
 };       

</script>

Thursday, November 22, 2012

Script to Disable the Fields in NewForm EditForm in SharePoint


Before adding the following script to the NewForm or EditForm we have to give the Reference of jQuery.js and SPServices.js either in Master Page or in the form where you what to add this script.

<script language="javascript" type="text/javascript">

  $(document).ready(function() {
 
      var isUserOnly = false; //User group member only     
      var isAdmin=false;
      var groupName = "Admin Group";
 
   $().SPServices({

      operation: "GetGroupCollectionFromUser",

      userLoginName: $().SPServices.SPGetCurrentUser(),

      async: false,

      completefunc: function(xData, Status)
     
        {
        if($(xData.responseXML).find("Group[Name= Admin Group ']").length == 1)
            {
                isAdmin = true;            
            }
            else
            {
                isUserOnly=true;               
            }
          }
       });
      
       if (isUserOnly)
       { 
            //Disable DropDown
            $("Select[Title='Project']").attr("disabled", "disabled");             
           
           
            var Title =document.getElementById('ctl00_m_g_e8d7e5d3_7fc5_4496_b8b6_00a6a4f46062_ctl00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_TextField');

Title.disabled=true;

           
var assignedTo = document.getElementById('ctl00_m_g_e8d7e5d3_7fc5_4496_b8b6_00a6a4f46062_ctl00_ctl04_ctl04_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_downlevelTextBox');

assignedTo.disabled=true;

var assignedTodiv = document.getElementById('ctl00_m_g_e8d7e5d3_7fc5_4496_b8b6_00a6a4f46062_ctl00_ctl04_ctl04_ctl00_ctl00_ctl04_ctl00_ctl00_UserField_upLevelDiv');  

assignedTodiv.disabled=true;

var description = document.getElementById('ctl00_m_g_e8d7e5d3_7fc5_4496_b8b6_00a6a4f46062_ctl00_ctl04_ctl03_ctl00_ctl00_ctl04_ctl00_ctl00_TextField');

description.disabled= true;

var description1  = document.getElementById('ctl00_m_g_e8d7e5d3_7fc5_4496_b8b6_00a6a4f46062_ctl00_ctl04_ctl03_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_iframe');

var StartDate = document.getElementById('ctl00_m_g_e8d7e5d3_7fc5_4496_b8b6_00a6a4f46062_ctl00_ctl04_ctl08_ctl00_ctl00_ctl04_ctl00_ctl00_DateTimeField_DateTimeFieldDate');
StartDate.disabled=true;
       
//Disable Calendar Image                   
var imgStartDate = document.getElementById('ctl00_m_g_e8d7e5d3_7fc5_4496_b8b6_00a6a4f46062_ctl00_ctl04_ctl08_ctl00_ctl00_ctl04_ctl00_ctl00_DateTimeField_DateTimeFieldDateDatePickerImage');
imgStartDate.disabled=true;
       
                   
//MultiLine Rich Textbox
description1.disabled = 'disabled';
           
                       
//Disable Dropdown fields
DisableField("Project");
               
//Disable Multiline box     $('#ctl00_m_g_e8d7e5d3_7fc5_4496_b8b6_00a6a4f46062_ctl00_ctl04_ctl03_ctl00_ctl00_ctl04_ctl00_ctl00_TextField_iframe').contents().find('body').attr('disabled','disabled');

//PeoplePicker
$('nobr:contains("Assigned To")').closest("td").next("td").attr("disabled", "disabled");
$("div[id$='_UserField_upLevelDiv']").attr("contentEditable",false);
$("span[id$='_UserField']").find("img").hide();        
           
       }   
 }); 


//Function to Disable DropDown
 function DisableField(title)
{
    for(var i = 0; i < document.all.length; i++)
    {
        var el = document.all[i];
        // find html element with specified title
        if(el.title == title)
        {
            el.disabled = true; // disable

            // if the next element has a reference to the current element
            // then disable if as well
            if(i < document.all.length - 1)
            {
                var el2 = document.all[i + 1];
                if(el2.outerHTML.indexOf(el.id) > 0)
                {
                    el2.disabled = true;
                }
            }
            break;
        }
    }
}

</script>

Monday, November 5, 2012

Reference CSS and JS files for Ribbon In SharePoint 2010


One of the most common things that you might be doing when creating your custom ribbon controls is to define JavaScript for the handlers that will be executed upon your controls being clicked.

One of the most demonstrated examples of how you can define your own JavaScript is
 <CommandUIHandlers>
        <CommandUIHandler
         Command="Demo_HelloWorld"
         CommandAction="javascript:spSticky();"     />
  </CommandUIHandlers>

In here, the highlighted  part is my command spSticky(). The CommandUIHandler  though doesn't allow to define external file where all of our scripts will be hosted. This might be puzzling at first and you may think that you need to define all of your JavaScript right inside the elements file – which obviously makes it hard to maintain your JS code in a future.
Well, the good news is that you can reference JavaScript external file for your handlers; you will still call your handler function just like in the example from above but here is what you add in your Elements (ribbon definition) file:

<CustomAction
   Id="OwnersButton.Script"
   Location="ScriptLink"
   ScriptSrc ="~site/_layouts/Images/Scripts/js/Custom.js"/>
If your custom.js has the reference of jquery plugin, then give the reference which should be below your custom.js else it will not take the reference of jquery.

  <CustomAction
   Id="OwnersButton.Script"
   Location="ScriptLink"
   ScriptSrc ="~site/_layouts/Images/Scripts/js/jquery-1.8.2.js"/>

If you want the give the reference of the CSS in the Custom Actions, the below script has to be added in the Custom Action.
  <CustomAction
   Id="OwnersButton.Script"
    Location="ScriptLink"
    ScriptBlock="
      document.write('&lt;link  type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;~site/_layouts/Images/Scripts/css/jquery-ui-1.8.21.custom.css&quot;&gt;&lt;/' + 'link &gt;');"
     />


Monday, September 10, 2012

Checking Whether an Item Is in a Set

We often need to know whether an item is already in a set.
public bool IsDocumentSetItem(SPListItem itemToCheck)
{
bool documentSetItem = false;
if (itemToCheck.File != null)
{
DocumentSet documentSet;
documentSet = DocumentSet.GetDocumentSet(itemToCheck.File.ParentFolder);
if (null != documentSet)
{
documentSetItem = true;
}
}
return documentSetItem;
}
The code asks the current item to return the containing set. If there is no set, then the item is not part of any document set.