Thursday, December 30, 2010

How to enable Flash Content in the SharePoint 2010

  • Go to Central Administration
  • Go to manage web application

image

  • Then select the web application and  go to General Settings

image

  • Then Browser File Handling to permissive

image

Monday, December 13, 2010

How to cancel SharePoint server deployment

This can be also used to cancel InfoPath Form template deployment

using this command you can stop the deployment of InfoPath form template to a server. not only that basically you can stop any deployment to the SharePoint server using this command set.

In here i count find the power shell command to do this. but you can still do it by using stsadm in the SharePoint 2010.

First step is to find the current running deployments. for that

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN>stsa
dm -o enumdeploymets

image

Then it will show running deployments. After that finding relevant template and get it is ID and run following command.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN>stsa
dm -o canceldeployment -id 3478e091-aeed-48db-8366-e2d2fe267e87

image

Still it is not working may be the admin services are not running then type the following code.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN>stsa
dm.exe -o execadmsvcjobs

Tuesday, November 30, 2010

How to make a Modal Page (Dialog Page) in the SharePoint 2010

  • (SharePoint JavaScript Modal Framework  )
  • Place a Content Editor Web Part in the page and Switch to the Source Edit Mode in the editor and place the following code by putting your page URL. You can put either relative or absolute URLs.
  • If you are not going to use content editor you can edit the row HTML as well.
  • Put the following script to the page. you can put the code to
  • <script type="text/javascript">
    function OpenDialog(myurl) {
    var options = SP.UI.$create_DialogOptions();
    options.url = myurl;
    // options.width = 500;
    // options.height = 400;
    //options.dialogReturnValueCallback = Function.createDelegate(null, CloseCallback);
    SP.UI.ModalDialog.showModalDialog(options);
    }
    </script>

  •  You can put this code to Additional page header section in yout page.SharePoint will allow to put in that section.
image   

Then you can call as follows.



  • <a onlick=”javascript:OpenDialog(‘/sites/alr/SitePages/Reservation.aspx’)” >Show</a>

This is sample URL I have Put.


image



You can even use for trigger a call back event using the modal frame work. in a later post i will show you how to it. 


this is also sample dialog i have created to display workflow visualization.


image Following are the list of options you can put as dialog options.










































































Property


Data type


Default value


Description


allowMaximise


boolean


true


Determines whether the maximise button is present on the rendered dialog.


args


object

 

We’ll examine this property in more detail later. The args property allows us to pass arbitrary properties into our dialog.


autoSize


boolean (true/false)


true


Determines whether the dialog should be automatically sized to fit within the parent browser window. Where a value has been set for width or height, this value is deemed to be false regardless of the actual setting.


dialogReturnValueCallback


function

 

We’ll examine this property in more detail. By passing a function, we can specify a section of script to be executed when the dialog is closed.


height


numeric

 

The height of the dialog to be displayed. If this value is not set the dialog is automatically sized to fit the window.


html


string

 

Where a Url is passed, an IFRAME tag is rendered pointing to the appropriate Url. AS an alternative to this, it is possible to pass arbitrary HTML instead, in which case, rather than an IFRAME tag, the arbitrary HTML is rendered instead.


showClose


boolean (true/false)


true


Determines whether the close button is visible in the titlebar of the dialog.


showMaximized


boolean
(true/false)


false


Dictates whether the rendered dialog should fill the available space in the parent window.


title


string

 

Specifies the title of the dialog. Where no title is specified, the title of the document referred to by the Url property is used instead.


url


string


null


The url of the page to be shown in the dialog. Where a url is set and IFRAME tag will be rendered by the Dialog framework and the src of the IFRAME will be set to this url.


width


numeric

 

The width of the dialog to be displayed. If this value is not set the dialog is automatically sized to fit the window.


x


numeric

 

Specifies the starting position of the rendered dialog. If this value is not set the dialog is shown in the middle of the viewing area. This value represents the offset from the left edge of the parent browser window.


y


numeric

 

Specifies the starting position of the rendered dialog. If this value is not set the dialog is shown in the middle of the viewing area. This value represents the offset from the bottom of the parent browser window.

How to Link Two List and Create a combine view in the SharePoint 2010

In this way you can join multiple list together and can create a combine view. for an example assume that you are managing a list for some events. And also you are having a participants in separate list. Thus you want to join the two list and create a composite view.

SharePoint 2010 allows you to create this kind of view using  Linked Data Source. in this approach you can create your own custom list in the SharePoint.

How to Create a Linked Data source

Go to SharePoint designer and  go to the link called data sources.

image

And Click the Linked Data Source button in the ribbon. Then SharePoint designer will prompt following kind of a dialog.

In there add two list, that you wan to linked together.

imageimageI'm adding airline schedule and booking list. those are the two list that i wan to merge. then click next. And it will guide you another screen. it will ask you to select either

  • Merge
    • Merge use to combine list which are having same columns definition. for and example we can say this is like a Union operation in the database.
  • Join
    • Join operation use to link two or more lists. this do not need to having a same column definition in the lists. this is equal to join operation in the database.

I need to join the two list to get the passengers for particular schedule. thus  I'm using join option and click finish.

image 

Then switch to the general tab and give some name to identify the data source.

image

Now you are done with the linked data source.

How to create a custom view using linked data source in the SharePoint designer

In here I'm going to create a custom aspx in the SharePoint designer and create a view on it. For that go to SitePages and create new aspx file.

image 

In the designer now you can see a empty aspc file as follows.

image

Now you want to add the data source into the page. There are many ways. Best thing is go to Insert and then select you data source to add data source to the page, But in this way i found that it is not always visible in the data source task pane, Thus you can go to Data View and add your data source.

image

This action will generate a table in the page. But we don't need it. therefore delete it . we will want the data source in the data source task pane. (Select all and press delete in the key board.)

image

now Go to the task data source pane and select the columns you want to add to the page. and click add as a multiple view item.

image

This will generate a table for you. now click the right most column and go to table and add a new column to the right in the table as follows.

image Now place the mouse cursor to the column and select the second list in the data source pane and select the columns you want and click Join Sub View.

image

Then it will ask relation between columns to Join (like foreign key ). In here in link data using ID of the AirLine Schedule.

image

Note : – Some times this Join Sub view not coming. then click two or more columns then this view will come. I don't know why it is happening but it happened to me several times. And in this way i manage to solved the issue.

Now you can see a composite list view in the page that you can use for ..

image

Thursday, November 18, 2010

How to Customize New Item Form to take parameters from Query String in the SharePoint 2010

In here I'm going to explain how to customize the SharePoint Item From to take parameters from Query String and set them as default values using SharePoint designer. Using this you can open a new Item From by providing parameters as query string. For an example you can customize one item Display form and taking query String Parameter from that and view New Item view for another list by providing default values using the Query String.  

Steps

Open the SharePoint designer and go to list and libraries and open the list that you want.

image

Click the New and create a New Insert View by providing the name of the view.

image 

image

Then created one will come to the list. then click and open the view.

image

Then default New Item Screen will be loaded as follows.

image

Then Delete the default list view and make that empty. You can delete the controls by selecting the area in the design view, If it fully cleared you can view the following message from the designer.

image

Then go to SharePoint Controls and add the a Custom List as you want.

image

Then select the New Item Form and click ok to add the view.

image

In My Example I want to set the comments by using Query String Parameter. there for first i change the comments field’s controller to textbox.

image

Then Add parameter field to get the comments form the Query String.

image

I'm passing my comments using query string ID com and it is storing in to the variable param.

 image

Then select the comments text box and switch the view to code or split designer mode,

image

image

In here go and change the text property to {$param} This will set the query string parameter to the text box.

image

Then you done.

image

Wednesday, November 17, 2010

How to get User’s Information in the SharePoint Workflow

image

We can use SharePoint user profiles to get the users information in a SharePoint  workflow. For an example by providing the Users AccountID/Account Name we can get the user’s information.

Thus this will address the questions such as

  • How to get User’s First Name in the SharePoint Workflow
  • How to get User’s Last Name in the SharePoint Workflow
  • How to get User’s Birthday  in the SharePoint Workflow
  • How to get User’s Email in the SharePoint Workflow
  • How to get User’s Manager in the SharePoint Workflow

as well as huge information list that will populated by the user profile service.

Friday, October 22, 2010

How to add a custom visual studio workflow to SharePoint designer

This article explains step by step guide line to add a custom visual studio work flow to the SharePoint designer. In here I'm using   VS 2010 and SharePoint 2010.

  • Create  a Empty Sequence Work Flow project.

image

then select .Net Framework 3.5 and select the Sequential Workflow Project.

image 

in this sample we are going to add custom string functionality to the SharePoint designer. after creating the project you will get a blank activity as follows.

image

then delete that activity and add the Activity item to the project as above. I named that as subStringAfterText.cs

image

after that you will get a blank Sequence Activity.

Add references to the Project

After that you need to add Microsoft.SharePoint.dll and Microsoft.SharePoint.WorkflowActions.dll to the project. those dlls can be found in the following paths.

  • C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.dll
  • C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.WorkflowActions.dll

Cording

My task to develop a simple string function it will return the text after the search text. This is so simple but you can use this method to develop any Custom SPD workflows. 

   1: using System;
   2: using System.ComponentModel;
   3: using System.ComponentModel.Design;
   4: using System.Collections;
   5: using System.Linq;
   6: using System.Workflow.ComponentModel;
   7: using System.Workflow.ComponentModel.Design;
   8: using System.Workflow.ComponentModel.Compiler;
   9: using System.Workflow.ComponentModel.Serialization;
  10: using System.Workflow.Runtime;
  11: using System.Workflow.Activities;
  12: using System.Workflow.Activities.Rules;
  13: using System.Diagnostics;
  14: using Microsoft.SharePoint;
  15: using Microsoft.SharePoint.WorkflowActions;
  16: using Microsoft.SharePoint.Workflow;
  17:  
  18: namespace getSubStringAfter
  19: {
  20: public partial class subStringAfterText : SequenceActivity
  21: {
  22: // Declare event log
  23: private EventLog eventLog;
  24:  
  25:  
  26: // Declare dependency propoerties to get and set values to the activity
  27:  
  28: public static DependencyProperty SourceStringProperty = System.Workflow.ComponentModel.DependencyProperty.Register("SourceString", typeof(string), typeof(subStringAfterText));
  29: public static DependencyProperty SearchStringProperty = System.Workflow.ComponentModel.DependencyProperty.Register("SearchString", typeof(string), typeof(subStringAfterText));
  30: public static DependencyProperty FoundStringProperty = System.Workflow.ComponentModel.DependencyProperty.Register("FoundString", typeof(string), typeof(subStringAfterText));
  31: // Specify validations to validate inputs
  32: [Description("")]
  33: [ValidationOption(ValidationOption.Required)]
  34: [Browsable(true)]
  35: [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
  36: public string SourceString
  37: {
  38: get
  39: {
  40: return (string)base.GetValue(SourceStringProperty);
  41: }
  42: set
  43: {
  44: base.SetValue(SourceStringProperty, value);
  45: }
  46: }
  47:  
  48: [Description("")]
  49: [ValidationOption(ValidationOption.Required)]
  50: [Browsable(true)]
  51: [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
  52: public string SearchString
  53: {
  54: get
  55: {
  56: return (string)base.GetValue(SearchStringProperty);
  57: }
  58: set
  59: {
  60: base.SetValue(SearchStringProperty, value);
  61: }
  62: }
  63:  
  64: [Browsable(true)]
  65: [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
  66: public string FoundString
  67: {
  68: get
  69: {
  70: return (string)base.GetValue(FoundStringProperty);
  71: }
  72: set
  73: {
  74: base.SetValue(FoundStringProperty, value);
  75: }
  76: }
  77:  
  78: //The SharePoint workflow properties activation object
  79: public static DependencyProperty __ActivationPropertiesProperty = DependencyProperty.Register("__ActivationProperties", typeof(SPWorkflowActivationProperties), typeof(subStringAfterText));
  80:  
  81: // Using a DependencyProperty as the backing store for WorkflowInstanceIdProperty. This enables animation, styling, binding, etc...
  82: public static DependencyProperty WorkflowInstanceIdVariableProperty = DependencyProperty.Register("WorkflowInstanceIdVariable", typeof(string), typeof(subStringAfterText));
  83:  
  84: // Using a DependencyProperty as the backing store for WorkflowInstanceIdProperty. This enables animation, styling, binding, etc...
  85: public static DependencyProperty __ContextProperty = DependencyProperty.Register("__Context", typeof(WorkflowContext), typeof(subStringAfterText));
  86:  
  87: [Description("The WorkflowInstanceId for the workflow.")]
  88: [ValidationOption(ValidationOption.Required)]
  89: public string WorkflowInstanceIdVariable
  90: {
  91: get { return (string)(base.GetValue(WorkflowInstanceIdVariableProperty)); }
  92: set { base.SetValue(WorkflowInstanceIdVariableProperty, value); }
  93: }
  94:  
  95: [Description("The Workflow Properties")]
  96: [ValidationOption(ValidationOption.Required)]
  97: public SPWorkflowActivationProperties __ActivationProperties
  98: {
  99: get { return (SPWorkflowActivationProperties)(base.GetValue(__ActivationPropertiesProperty)); }
 100: set { base.SetValue(__ActivationPropertiesProperty, value); }
 101: }
 102:  
 103: [Description("The Workflow Context object")]
 104: [ValidationOption(ValidationOption.Optional)]
 105: [Browsable(false)]
 106: [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
 107: public WorkflowContext __Context
 108: {
 109: get
 110: {
 111: return (WorkflowContext)(base.GetValue(__ContextProperty));
 112: }
 113:  
 114: set
 115: {
 116: base.SetValue(__ContextProperty, value);
 117: }
 118: }
 119:  
 120: // Override the activity execution
 121: protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
 122: { 
 123: //Set up the Event Logging object 
 124: eventLog = new EventLog("Workflow");
 125: eventLog.Source = "SharePoint Workflow";
 126:  
 127: try
 128: {
 129: // Your Method
 130: getTheString();
 131: }
 132: finally
 133: {
 134: //Dispose of the Event Logging object 
 135: eventLog.Dispose();
 136: }
 137:  
 138: //Indicate the activity has closed 
 139: return ActivityExecutionStatus.Closed;
 140: }
 141:  
 142:  
 143: private void getTheString()
 144: {
 145: this.FoundString = SourceString.Substring(SourceString.IndexOf(SearchString) + SearchString.Length -1);
 146: }
 147:  
 148: }
 149: }


Code Explanation

dependency properties are used to exchange data from work flow instance. therefore following properties needed to exchange primary data.



//The SharePoint workflow properties activation object
// Using a DependencyProperty as the backing store for WorkflowInstanceIdProperty. This enables animation, styling, binding, etc...



public static DependencyProperty __ActivationPropertiesProperty = DependencyProperty.Register("__ActivationProperties", typeof(SPWorkflowActivationProperties), typeof(subStringAfterText));


public static DependencyProperty WorkflowInstanceIdVariableProperty = DependencyProperty.Register("WorkflowInstanceIdVariable", typeof(string), typeof(subStringAfterText));

// Using a DependencyProperty as the backing store for WorkflowInstanceIdProperty. This enables animation, styling, binding, etc...
public static DependencyProperty __ContextProperty = DependencyProperty.Register("__Context", typeof(WorkflowContext), typeof(subStringAfterText));

//These properties should have getter setter methods. attributes define the visibility , validation and etc..
Ex :-



[Description("The WorkflowInstanceId for the workflow.")]
[ValidationOption(ValidationOption.Required)]
public string WorkflowInstanceIdVariable
{
get { return (string)(base.GetValue(WorkflowInstanceIdVariableProperty)); }
set { base.SetValue(WorkflowInstanceIdVariableProperty, value); }
}



// Then you need your own properties and getters setters



public staticDependencyProperty SourceStringProperty = System.Workflow.ComponentModel.DependencyProperty.Register("SourceString",typeof(string),typeof(subStringAfterText));



public static DependencyPropertySearchStringProperty = System.Workflow.ComponentModel.DependencyProperty.Register("SearchString",typeof(string),typeof(subStringAfterText));



public static DependencyPropertyFoundStringProperty = System.Workflow.ComponentModel.DependencyProperty.Register("FoundString",typeof(string),typeof(subStringAfterText));

// Override the activity execution
protected overrideActivityExecutionStatus Execute(ActivityExecutionContext executionContext)

           //Set up the Event Logging object
           
eventLog =new EventLog("Workflow");
            eventLog.Source ="SharePoint Workflow";

            try
           
{
               // Your Method
               
getTheString();
            }
           finally
           
{
               //Dispose of the Event Logging object
               
eventLog.Dispose();
            }

            //Indicate the activity has closed
           
returnActivityExecutionStatus.Closed;
}


Sign the application.



After that you should sing the application using a strong key. Thus you can go to project properties and sing the application as follows.



image



image 



Build your application. and place the assembly to the GAC. In here there are are two GAC maintaining with framework 4.0





  • C:\Windows\Microsoft.NET\assembly

  • C:\Windows\assembly



To work the assembly this should be registered under “C:\Windows\assembly” if you use Target Framework as 4.0 then it will register the assembly in C:\Windows\Microsoft.NET\assembly. Therefore use target framework as 3.5 



Register Assembly Under “C:\Windows\assembly



image



Make sure the target framework is 3.5 of the project. if so it will get add to the location “C:\Windows\assembly



For that





  • Go to the Visual Studio Command Prompt as administrator

  • Go to your bin/debug folder (place where the dll is build)

  • Type gacutil /i getSubStringAfter.dll


if you did it correctly you can see your assembly in the GAC. to view the GAC you can type “C:\Windows\assembly” in the Run Window.image Creating work flow template actions file.

Then you need to create .ACTIONS file. This is the file that used by the SPD to get the workflow information.  Therefore create a file named getSubStringAfter.ACTIONS and put the following code there. you need to put correct public key token, namespace and class name. 









image 





   1: <?xml version="1.0" encoding="utf-8"?>
   2: <WorkflowInfo Language="en-us" >
   3:   <Actions Sequential="then" Parallel="and">
   4:     <Action Name="get the substring after the text"
   5:         ClassName="getSubStringAfter.subStringAfterText"
   6:         Assembly="getSubStringAfter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d98a44afbf8ccb86"
   7:         AppliesTo="all"
   8:         Category="Custom String Actions">
   9:       <RuleDesigner Sentence="Search %1 from %2 and store in %3.">
  10:         <FieldBind Field="SearchString" Text="this text" DesignerType="stringbuilder" Id="1"/>
  11:         <FieldBind Field="SourceString" Text="this address" Id="2" DesignerType="stringbuilder" />
  12:         <FieldBind Field="FoundString" Text="variable" Id="3" DesignerType="ParameterNames" />
  13:       </RuleDesigner>
  14:       <Parameters>
  15:         <Parameter Name="SearchString" Type="System.String, mscorlib" Direction="In" />
  16:         <Parameter Name="SourceString" Type="System.String, mscorlib" Direction="In" />
  17:         <Parameter Name="FoundString" Type="System.String, mscorlib" Direction="Out" />
  18:       </Parameters>
  19:     </Action>
  20:   </Actions>
  21: </WorkflowInfo>


then copy this file and put in to the following SharePoint server location
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\1033\Workflow



Modify the web Config



Then you need to modify the web.config of your site. you need to put SafeControl and authorizedType in here also please make sure public key token , namespace , version and class is correct other wise it will not work for an example it may not show in the SPD , or it will not get added to the work flow step though it showed in the SPD.



image



<authorizedTypeAssembly="getSubStringAfter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d98a44afbf8ccb86"Namespace="getSubStringAfter"TypeName="subStringAfterText"Authorized="True"/>
<SafeControlAssembly="getSubStringAfter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d98a44afbf8ccb86"Namespace="getSubStringAfter"TypeName="*"Safe="True"/>



Finally ..





  • reset the IIS

  • Now open the SPDimage image








I took nearly one week to do figure this out. anyway finally i got a solution. :-)