SharePoint – The MOSS

My SharePoint Treasurechest

Microsoft SharePoint 2010 – Sneak Peek

Posted by kusek on July 14, 2009

    Microsoft has announced the technical Preview for the SharePoint 2010.It is a limited invitation only. But we can have a Sneak Peek of what will be available in the SharePoint 2010.

    Watch the videos in the site, to give you some velocity here is the pictures and highlights from the sneak peek.

 

  • New Ribbon based UI
  • Support for Silverlight Web parts
  • Rich Theming (Allows you to change the Skin of the SharePoint site to similar to the Office Client)
  • Revamped Central Admin Design.
  • Visual Upgrade (Option to upgrade the 2007 site to 2010 without any UI changes) to change the UI to 2010 it’s a flip of the Switch.
  • Cool tools included in the Visual Studio 2010.(Visual Webpart designer, BCS Designer, Complete integrated option for developing Solutions)
  • LINQ Support.(Implementation of LINQ in SharePoint)
  • Developer Dashboard ( new dashboard for the developer that will help to view the Page loads, SP Request for the page, Web Part events stack etc)
  • Business Connectivity Services (Yes BDC has been renamed and now it supports Read & write as well)
  • External List (This is similar to List but the data are fetched from BCS)
  • Client Object Model (You have Client API to access the SharePoint list using Javascript)

Some more information in the Links from Reza and Info about the Office 2010 Products

Posted in Microsoft SharePoint 2010 | Leave a Comment »

SharePoint Platform & Data Storage

Posted by kusek on July 8, 2009

 

    Yesterday I attended a Microsoft webcast on how they have implemented the IT Web (Microsoft’s Intranet) which was in SharePoint. I have captured few points that highlighted tips on the SharePoint Platform and the Data Storage (To List or not to List). Please find the Screen clip of the Presentation. One another nice thing is they have used Content Query Web Part also they have customized it and named it as Content Query Web Part Override I didn’t get the location for it.[May be I will update link once I get it] basically it had couple missing pieces in the out of the box CQWP, like add the view fields in the Toolpart etc,editing the CAML query etc.

 

Posted in Customizations | Leave a Comment »

Enable Client Integration – User permissions for Web Application – Caution

Posted by kusek on June 26, 2009

    First a little background. We all know that SharePoint by default comes with the some pre-defined permission levels. Represented by class RoleDefinitions in Object model. You can browse through the following URL http://Sitename/_layouts/role.aspx and find the set of permission level your site has.

    In addition to the above permission level you have an option of creating a new Permission Level (RoleDefinition) as per your needs. This doesn’t stop there; we have an option to restrict the permissions that can be used in the Web Application. Well what it means is, Say for Example if you don’t want any user (ANY USER yes I mean it Site Collection Administrator as well) of site to delete or Manage Web, but wait how can I prevent Site Collection Administrator from deleting the site, s/he is a big guy he got all power to do all s/he wants in a Site Collection. That’s true but there is another real big guy Farm Administrator. If he decides not to allow Site Delete for a Web Application he can do so by just un-checking the to Manage Web Site permission in the User Permissions for Web Application page http://Central AdminSite/_admin/vsmask.aspx. With this background we can see what gets interesting.

    Say you have a Code in your application that check to see if the user has Contributor right in a web, as below

Code Block # 1

 using (SPSite oSite = new SPSite(http://xxx))

{

   using (SPWeb oWeb = oSite.RootWeb)

{

    if(oWeb.DoesUserHavePermissions( oWeb.RoleDefinitions["Contribute"].BasePermissions))

        //Do Something
    else

        //Do Something 

      }

}

    

    Above code will work fine until our real big guy Farm Administrator comes in, now he decides to revoke the Delete Permission from the Web Application. Now above code will start to break, it will keep returning false as the Contributor Role definition was built with the Delete Permission with it, and as it has been removed by the Farm Administrator, your EffectivePermission will not match the RoleDefinition of Contributor. Below statement will not be true.

Code Block # 2

oWeb.EffectiveBasePermissions== oWeb.RoleDefinitions["Contribute"].BasePermissions

 

Okay how do I fix it, just go to your permission Level page, edit the Contribute permission level do nothing, just save it. Now the absence of the delete permission has been informed to RoleDefinition
Contribute and your code will start working.

But still I got more interesting information for you; in SPBasePermission enum out of 33 Permission we have a value called SPBasePermissions.UseClientIntegration, Which launch client applications. Without this permission, users will have to work on documents locally and upload their changes. Like any permission you can disable this at the User Permissions for Web Application page of central admin. But there is another place where you can disable this as well, yes that is at the Authentication Provider page. Select authentication provider and end of the page say no to Enable Client Integration? Well that was simple change but to find it we had real tough time. When you say no to Enable Client Integration?

What happens is that SPBasePermissions.UseClientIntegration will be removed from the permission but it will not get reflected in the UI both at the User Permissions for Web Application page and at the Permission Level page. With this state you will always get the Code Block # 1 executed to false. Because your EffectivePermission doesn’t include the SPBasePermissions.UseClientIntegration. So you need to manually remove this option from the RoleDefintion to make the code work.

Should I call it a bug, when it is really not there why should UI show that ????

Posted in Customizations, SharePoint, SPBasePermissions, SPBasePermissions.UseClientIntegration | Leave a Comment »

ASP.NET 4.0 Snippet

Posted by kusek on June 21, 2009

    This is new addition to the multi part post on upcoming .Net 4.0. Recently Microsoft has released the Beta 1 of .Net 4.0 and the Visual Studio 2010, you can get full update on this and how to download & install from this Video by Brian Keller.

    This post we will look in to one of the new option of Visual Studio 2010 for ASP.NET 4.0. We were using the code snippets in the visual studio for some time now, and with this release of the Visual Studio 2010 it has been expanded to the ASP.NET 4.0 and HTML as well. Earlier version it was limited to the C# and other languages only.

    The working of snippet is no different than the C# & other language codes, all the pre defined ASP.NET snippets are placed in the folder location C:\Program Files\Microsoft Visual Studio 10.0\Web\Snippets\HTML\1033\ASP.NET
and the HTML snippets reside in the folder C:\Program Files\Microsoft Visual Studio 10.0\Web\Snippets\HTML\1033\HTML . Below I have defined a snippet for GridView, once you defined the snippet, use the Tools-> Code Snippet Manager of Visual Studio and Import the Snippet and it will be available for the immediate use.


Snippet for the Grid View

Once Import just type in the Shortcut text for the snippet and hit Tab Tab. You snippet will be inserted to the code as below and you can change the Parameters that are defined in the snippet, in my case I have defined the parameter for ID and DataSourceID attribute.

Posted in ASP.NET 4.0 | 1 Comment »

This field can have no more than 255 characters.

Posted by kusek on May 21, 2009

    Well you should have seen this message if you have a custom multiline column added to the SharePoint document library and try to add a text that is more than 255 Characters. And there is no way around to solve this issue in the SharePoint UI/ at least I didn’t find one so far.

Today I was trying to create a custom list template, and found an attribute called UnlimitedLengthInDocumentLibrary. This is the attribute that will solve your issue. And in case if you don’t want to create a custom List Template to solve this issue , there is a easier way around this.

Hope this helps!!!!

Posted in Customizations, SharePoint | Leave a Comment »

Optional Parameter, Named arguments & Default values C# 4.0

Posted by kusek on May 6, 2009

One of the cool feature (list here) we always wanted is ability to provide optional parameters, default values for the methods. Microsoft has addressed this in C# 4.0 and definitely it will make to RTM as well. As there are many articles out in the web regarding this I will not reiterate it but give you a base understanding on this and let you to read the article for core understanding.

Following things are valid in C# 4.0

public Int32 DoAdd(Int32 iNumberOne,Int32 iNumberTwo=0,Int32 iNumberThree=0)

        {

            return iNumberOne + iNumberTwo+iNumberThree;

        }

            //value is passed to the First parameter

            DoAdd(1);           

            //value is passed to the first & second Parameter

            DoAdd(1,2);

            //Value is pased to the first,second & third parameter

            DoAdd(1, 2,3);

            //value is passed to the first and third parameter

            //this is where we can see one of the use of NamedParameters

            //calling this method this DoAdd(1,2) will men completly different

            //in this sence. Hence the Named Paramert helps here

            DoAdd(1, iNumberThree: 2);

            //When you use the Named Parameter order of the Parameter doent

            //matter

            DoAdd(iNumberThree: 2, iNumberOne: 2);

 

           

Points to Remember:

  • Optional Parameter should be declared just simply placing the default value with a = operator
  • Optional Parameter must appear after all required parameters.
  • ref or out parameter cannot have a default value.
  • Named parameters gives us the more code readability
  • Helps in the optional parameter methods

Named Parameters:

  • Named parameters gives us the more code readability
  • Helps in the optional parameter methods
  • Order of parameter, helps us to change the order of the Parameters while calling method and still have the ablity to map which value goes to which argument 

 

        public Int32 DoMath(Int32 iNumberOne,Boolean SqureTheNumber)

        {

            if (SqureTheNumber)

                return iNumberOne * iNumberOne;

            else

                return iNumberOne + 1;

        }

            //This doent give much information about the call

            DoMath(4, false);

 

            //This is more clear

            DoMath(4, SquareTheNumber:false);

 

 

 

Reference:

 

Posted in .NET 4.0, C# 4.0 | 1 Comment »

Get ! Set ! SP2 – SharePoint Server – MOSS -SP2

Posted by kusek on April 28, 2009

Today Microsoft has released the SP2 for Office Products which includes the SharePoint as well, Refer this link  (I saw this announcement first ) for more details or refer the SharePoint team blog post  Link 

Items that attracted my Attention in SP2.

  • FBA & Office Integration:…..provide a much smoother user experience and make client integration a viable option for forms-based authentication users…..
  • InfoPath form: Performance enhancements in SP2 reduce both the memory requirements and the page load times for large browser-rendered forms
  • Browser Support  (IE8)
  • Pre-Upgrade Check for Microsoft SharePoint 2010 – Big Wow

Posted in SharePoint | Leave a Comment »

.NET 4.0 – Part 1

Posted by kusek on April 21, 2009

        You should be aware that .Net 4.0 is currently in CTP and I am currently in process of exploring the new features in .Net 4.0. Channel9 have a good series of videos that will help you to get started. This is where I started my journey towards .Net 4.0. I would like to share all the learning I had from the above videos and additions to that I would like to share few items that I noticed during my learning. Altogether you will find information about .Net 4.0, ASP.NET Visual Studio 2010. How well it integrates with SharePoint & more. To practice this you will need a CTP version of Visual Studio 2010 and .Net FX 4.0. You can download it from this location. Also be sure to follow these steps before you open the Visual Studio 2010 because it comes with a hardcoded value of 1 Jan 09 as expire date.

[Update: June 21,2009 : .Net 4.0 and Visual Studio 2010 Beta 1 is now avaliable, please refer to the post for more information.]

This article will host Table of Links for the all Upcoming posts.

    ASP.NET 4.0

    C# 4.0

   Visual Studio 2010

 

One feature that has everyone’s attention when it comes to ASP.NET 4.0 is ClientID. Till now we had the ClientID as the getter and renders the id based on the naming container, from 4.0 we will be able to decide how the client ID is render to the browser. Each of the server control in the ASP.NET 4.0 has three new Properties that decide how the client Id is rendered.

  1. ClientID         -    ID that we wish to give to the server control when rendered to the browser.
  2. ClientIDMode        -    Mode that decides how the client ID is generated. Can be anyone of the following value
  • Inherit         -    Gets the mode that is set to the parent.
  • Predictable    -    Gives us an option to predict the ClientID that is goingto get rendered. (In the case of data bound control it generates a auto increment number
  • Legacy        -    No change works as like the previous version and thisis the default value.
  • Static        -    Static value that we set will render as it is.

                         3. RowClientIDSuffix    -    Sometimes when we use the Predictable option for ClientIDMode we might need to have a different pattern of the value as the suffix rather than having auto increment. In such a case we can provide a Comma Separated Value of Data Fields (Off course this option is available for the data bound controls) so the client Id will have the value of the Data field appended to the suffix.

    Let’s see an Example of the above. I have a User Control (ClientIDUserControl.ascx) with a Label inside that, which is used in the page. You can see my project structure in the screen shot.

ClientIDMode:: Legacy : In the below picture you will see the even though I set the client ID of the Label control it renders client ID based on the naming container, because by default the ClientIDMode is Legacy, I didn’t specified the ClientIDMode attribute so it defaults to Legacy.

ClientIDMode:: Static : In the below picture you will see that both the client ID and ClientIDMode (Static) is set hence the client ID that is rendered to the client is same as the one we set in the Code.

 

ClientIDMode:: Inherit : In the below picture you will see that client id that was rendered is based on the Naming container because for the Label I set the ClientIDMode as Inherit. Because of this label check its parent (in this case it’s the User Control) for the ClientIDMode and as it doesn’t have one it goes to the Page and checks for the ClientIDMode, as page as well doesn’t have one, it further goes to the web config and check for the ClientIDMode and as it doesn’t have one it by defaults to the Legacy mode. You can also set the ClientIDMode property at the page or the WebApplication level.Refer to the notes section at the end of the article.

ClientIDMode:: Predictable : In the below picture you will see that ClientIDMode is set to Predictable and ClientID is set to “deleteEmployee” and as a result it renders the client id as a AutoIncremented value “DeleteEmployee_0″ and soon. When setting the Predictable make sure that Parent control also has the ClientIDMode value set. Refer notes section in the end of the article.

ClientIDMode:Predictable and RowClientIDSuffix:

    When using the Predicatble option there is another tweak we can perform that is to generate our own predictable ID rather than using the auto incremented value of (0,1,2 …).In the below picture I have used RowClientIDSuffix to ID and Company, hence the rendered element has the ID in the format DeleteEmployee_[ID]_[Company]

 

Notes:

  1. While using the ClientIDMode=“Predictable” you need to set the ClientIDMode property in the parent control as well else the ClientID generated by the client control will not have the predictable value, it will default to Naming container method of generating the ID. In the above case I have set the ClientIDMode of the GridView to Static and the CheckBox which is the child control to Predictable.
  2. In addition to the setting the ClientIDMode to the each and every control you can set this value at the Page Level or at the Application level (Web.Config).When there is no explicitly set ClientIDMode to any of the control it will get the value from the page or Web.Config level if one is set else it default to the legacy mode. 
Mode ID ClientID Suffix Client ID At the Browser
Legacy/Nothing Set A C - [ParentNamingContanierID]_A
Static A C - C
Predictable A C - C_0,C_1
Predictable A C ID C_[ID],C_[IDNext]

Posted in .NET 4.0, ASP.NET 4.0, Visual Studio 2010 | 2 Comments »

SharePoint vNext is Microsoft SharePoint 2010 – Officially

Posted by kusek on April 17, 2009

   
 

        In all the announcements that we see about upcoming new version of SharePoint seems to use various terms SharePoint vNext, Office 14 so on. But today Microsoft officially named the next version of the SharePoint as Microsoft SharePoint 2010 and it will no longer be having the name MOSS attached to it. The reason behind this name change as per the Microsoft is to have a clear difference between the brand name Office and SharePoint. Most of the time we refer to Office / Microsoft office to the Office client applications.This change will help us to avoid  ambiguity between MS Office Application & MS Office SharePoint.

        Here are the few highlights of the new version.

• Using Office Web applications, customers will be able to create, edit and collaborate on Office documents through a browser.

• IT professionals will be able to choose to either deploy or manage on-premises or hosted as a service. (Isn’t great ??)

• For developers, we are working on Open APIs, deep support for industry standards and developer tool support with Visual Studio 2010 (Big Wow all in one).     

Also we will have the Technology preview of the version somewhere in the Third quarter of 2009 and Release to manufacturing in the first half of 2010.        

Microsoft Annocument Interview Here . Microsoft SharePoint team blog post here.

Posted in Microsoft SharePoint 2010 | 1 Comment »

List all SharePoint Databases

Posted by kusek on April 15, 2009

 

Have you lately tried to find list of DB’s used by SharePoint. Sure you would have at least one time. I used to go searching the Central Admin – Content DB option and take note of the SSP, Search db etc. Today I landed up here a smart way to do that :) .

Trick is to navigate Central Admin -> Operations -> Perform a Backup. All at one place nice Isn’t ?

Posted in SharePoint | 1 Comment »

 
Follow

Get every new post delivered to your Inbox.