Tuesday, 3 December 2013

SharePoint App Tutorial

 SharePoint App Tutorial
Refhttp://blog.helloitsliam.com/Lists/Posts/Post.aspx?ID=113

So in part 1​ we looked at some basic concepts of creating a SharePoint 2013 Hosted App. In this post we will continue with our demonstration app and look to expand it further. We left off with a custom ribbon action that redirects to a page within the App Web and simply just uses the default code from the "App.js" to render your display name. As a recap the design we are looking for is to allow a user to select items from a list and then when they click the ribbon be redirected to the App Web and render a grid type view of just the selected items, which we learned from the last post we can get by using query string parameters. So to start we need to open the "App.js" file and look at the existing code.
  
This code is very straight forward, as it simple gets a context for SharePoint using the client object model, grabs the current web which in this case is the SharePoint site you clicked the ribbon button from and then gets the "Current User" which would be you right now. When the document is loaded which is checked with the following code:
  
A custom function called "getUserName()" is called which loads the current user and executes an asynchronous query which on success writes out the name that you see on the page.
  
So let's look at changing this to retrieve data about the SharePoint Site using the REST API that is now available in SharePoint 2013. First off we will need to add the following to the "Default.aspx" page markup.
  
Now we need to remove the current code from "App.js and add the following section first.
  
This code declares two variables, then loads them upon document ready from the query strings that are passed in the URL. It then loads a JavaScript files that is used to execute code, and we make a call to a custom method we create called "getSelectedList". The "getSelectedList" method for now is not actually getting a list, it will be retrieving the SharePoint Site Title, confusing I know but easier than changing all the code each time.
  
This method makes a call to the "_api" URL of SharePoint which an endpoint for the web services / WCF for the client object model components of SharePoint 2013. To read more about this, read the details on MSDN here:
In our custom method you will see that we have a success and error call to two methods shown below:
  
These methods simply either render an error or the SharePoint Site Title onto the "Default.aspx" page. We also have a helper method for parsing the query strings so we can use them through the code.
  
Now we have all the plumbing done we should be able to build and deploy our solution and it should render as shown below once we click the ribbon button.
  
If we debug the code by adding a break point in the "App.js" we can see that we are getting an "Access Denied" error.
  
  
This means that the current account is not allowed to access the root web properties. This is by design and this brings me to another consideration when designing a SharePoint 2013 Hosted App. You need to work out the permission level that you want to assign so when it is deployed the right trust level is set ready for use. To set the permission, double click the "AppManifest.xml" file in Visual Studio. Select the "Permissions" tab and you will be presented with the following screen:
  
Set this screen to the following:
  
Rebuild the solution deploy using "F5" as always from Visual Studio. This time when you deploy you get stopped halfway through and are asked to trust it.
  
Select the "Trust It" button and the page will load as shown below:
  
So the key here is that by design the end user who is accessing your application is NOT allowed to perform certain functions unless the trust level has been set in the App and accepted during installation. So now we have it working with SharePoint Site data, now let's change the code a little to retrieve a specific list from the site. First off ensure you have an announcements list with some items within the SharePoint Site you are using.
Modify the "Default.aspx" page to now have the following code, you can remove the last markup we added.
  
We now need to modify the custom function we wrote to now use the following:
  
The success and failure method also need to be changed slightly too.
  
As before now build and deploy using Visual Studio so we can debug if needed. Accept the "Trust" and it should render as shown below:
  
Now that we are able to render the values let's make some changes to the code so it will work for any list that we decide to click the ribbon button from. To do this lets first look at the URL:
If we look in the link above we have the query string from the last post already in there, which is "SelectedList={B6F5FCC8-5102-4F1B-9F24-D8929162CB51}", this means we already have the list ID so if we modify the code a little we should be able to use this dynamic value, instead of hard coding "Announcements". To achieve this firstly add the following to "App.js".
  
This will get us the list ID loaded into a variable we can use throughout the code. Now we need to modify the "getSelectedList" method code to be the following:
  
Once complied and deployed you are then able to click any list and it should render details as shown below.
Announcement List
  
Contacts List
  
So now we have the code working for any list now we need to look at restricting the list of items that is renders to the selected items that are passed in the URL. We need to change the code in the "App.js".
  
Next we need to change the rendering code to be the following:
  
Now build and deploy from Visual Studio so you can debug and you should now be able to select items within the list and when the page renders it will only display the selected items. Of course there are better way of doing this but we will save that for another day.
In the next post we will look at the options available for rendering more than just "Title" and "Body" fields and actually create the grid view we need.

Thursday, 28 November 2013

Sharepoint 2010 Search configuration

In this article I am describing how to configure Search in SharePoint 2010.

1. Go to SharePoint Central Administration.

2. Click on Application management then select Manage Service application.
 
ConSerShare1.gif

3. Click New and select Search Service Application
 
ConSerShare2.gif

4. Give a name for your Service application.

5. Select Search Service account or register new Service account in the drop down.

6. Better create a new application pool for your Search service as shown below.
 
ConSerShare3.gif

7. Once done Click OK.
 
ConSerShare4.gif

8. It will take some time to configure the service.

9. Once configured correctly you will see the service created like below.
 
ConSerShare4.1.gif

10. Click on the Search Service Application 1 that we create now.

11. Select Content Source. 

ConSerShare5.gif

12. Click on the Local SharePoint Site.
 
ConSerShare6.gif

13. Add the Web applications that you need to put in Search Services as shown below.
 
ConSerShare7.gif

14. You have to configure Full and incremental crawl schedules in the preceding screen.

15. Now go back and start a Full crawl.
 
ConSerShare8.gif

16. You will get the following screen.
 
ConSerShare9.gif

17. Even though you have done all these steps you may get some error while searching "The search request was unable to connect to the Search Service".

18. To avoid this you have to perform the following steps.

19. Go to Application management and select Configure Application Association as shown below.
 
ConSerShare10.gif

20. Click on your application.

21. From the "Edit the following group of connections" drop down select Custom.

22. Associate your search service with your web application.

ConSerShare11.gif

23. If you done this step you may have to start the crawl once again.
 

Thursday, 24 October 2013

Creating UserToken in Sharepoint

SPUserToken userToken = SPContext.Current.Web.AllUsers["domain name\\UserLoginId"].UserToken;
                using (SPSite site = new SPSite(SPContext.Current.Site.ID, userToken))
                {
                    SPWeb myweb = site.OpenWeb();
                    Guid docsid=new Guid(hiddenDocumentLibraryName.Value);
                    SPDocumentLibrary myDocLib = (SPDocumentLibrary)myweb.Lists[docsid];
                    SPListItem items=                                               myDocLib.Items.GetItemById(Convert.ToInt32(hiddenDocumentId.Value));
                    myweb.AllowUnsafeUpdates = true;
                    items.File.CheckOut();
                 
                }

Monday, 23 September 2013

Passing filter values on the URL to PerformancePoint Services web parts

Although this pattern’s as old as the web, you asked us to make PerformancePoint dashboards work with it. In SharePoint 2010 it works!
The steps are the same whether you deploy a page that uses only PerformancePoint web parts using Dashboard Designer, or build a more complex page using SharePoint web or SharePoint Designer.
  1. Understand how Query String (URL) Filter works
  2. Build the content & page
  3. Add Query String (URL) Filter web parts for each attribute you want to control on the URL
  4. Connect each filter web part to the web parts you want it to affect
To illustrate we’ll add URL filtering to a simple dashboard that has one PerformancePoint Report web part.
We will specify Geography on the URL:

2

1. Understand how Query String (URL) Filter works

The Query String (URL) Filter accepts the name and value parts, separated by an equals sign, and multiple filters separated by a semi-colon (this is quite common and not unique to SharePoint.)
3
You’ll have full control over the name part. We’ll explain how to specify it in the next step.
The value depends on the web part the value’s passed to. In the case of PerformancePoint Services web parts you’ll need a member unique name for the data source(s) referenced by the content.
Unfortunately a Query String (URL) filter and another filter can’t be synchronized with the same consumer field of a web part. Although you can connect more than one filter web parts to the same consumer field, this won’t result in the multiple filters being synchronized with the field. You will have to choose one mode or the other.

2. Build the content & page

We laid out the analytic chart “Local Sales Report” in Dashboard Designer. The only detail of interest is we put the Geography hierarchy in the Background well so we can connect filters to it in SharePoint.
If you’re going to do URL filtering we recommend you do your page editing outside Dashboard Designer. Dashboard Designer’s web part page deployment is very simplistic and removes all changes not possible within Dashboard Designer, including URL filtering.
For this example we didn’t use Dashboard Designer at all except to create “Local Sales Report.” We started with a blank web part page, added the PerformancePoint Report web part, then configured it to show “Local Sales Report.”

3. Add Query String (URL) Filter web parts for each attribute you want to control on the URL

For each query string parameter you want the page to have:
  1. In SharePoint web put the page in edit mode (Select the Page tab in the ribbon, and click Edit Page.)
  2. Click Add a Web Part in any zone.
  3. In the Categories column, select Filters
  4. Select Query String (URL) Filter and click Add 4
  5. In the new web part’s web part menu, click Edit Web Part:

     5
  6. In the tool pane fill out Query String Parameter Name. You may also want to fill out Default Value, so that when the parameter’s not specified a reasonable default’s used.

     6
  7. Click “OK at the bottom of the tool pane.

4. Connect each filter web part to the web parts you want it to affect

For each web part you want the filter to affect:
  1. From the web part menu on the filter web part select: Connections -> Send Filter Values To –> then the destination web part:
    7
  2. The Choose Connection dialog appears. You’ll have 2 choices for Connection Type; either will work in this case.
  3. Under Configure Connection select the field you’d like to filter. The options vary based on the web part, and in the case of PerformancePoint web parts, on the content. Here we select the Geography hierarchy we added to “Background” in Local Sales Report:
    8
  4. Click Finish.
  5. You can now click “Stop Editing”, and try it out:
9
 

Wednesday, 3 July 2013

Hide Quick Launch using Javascript

Add bellow script in page

<style>

#s4-leftpanel {
DISPLAY: none
}
.s4-ca {
MARGIN-LEFT: 0px
}</style>

Thursday, 16 May 2013

Backup/Restore of SharePoint 2010 site Collection using Power Shell

In this article I am showing you how to perform backup/restore operation using Power Shell 

1. On the Start menu, click All Programs.
2. Click Microsoft SharePoint 2010 Products.
3. Click SharePoint 2010 Management Shell.
4. At the Windows Power Shell command prompt type the following command:
Image1.gif

5. You will get a Power shell command prompt like below
Image2.gif

6. In SharePoint 2010, Power Shell command Backup-SPSite is used for taking backup

7. Please see the screen shot for the backup Power Shell command

8. Backup-SPSite -Identity http://ServerName:port -Path "c:\backup\file.bak"

 Image3.gif

9. If you want to overwrite a previously used backup file, use the Force parameter. You can use the NoSiteLock parameter to keep the read-only lock from being set on the site collection while it is being backed up. However, using this parameter can allow users to change the site collection while it is being backed up and might lead to possible data corruption during backup. 

10. Once this done you will get the backup.

11. Next you have to create site collection then use the below command to restore the backup that we currently taken.

12. Restore-SPSite -Identity http://Servername:port -Path "c:\backup\file.bak" -force

Image4.gif

13. I am using force command because I want to overwrite the existing site collection that I created now.