Tip : SPSecurity.RunWithElevatedPrivileges

While using SPSecurity.RunWithElevatedPrivileges in your code, Always remember to create your own Spweb/Spsite objects and to never use an object created outside the RunWithElevatedPrivileges scope.

using (SPWeb web = SPControl.GetContextWeb(Context))
//Your Code

--- The other way is ---

       Public void ProcessMethod()
            SPSecurity.CodeToRunElevated elevatedMethod = new                           SPSecurity.CodeToRunElevated(CustomMethod);

The code uses a method from SPSecurity to indicate the name of the method that will run with Full permission. Simply pass in the name of the method as the parameter (CustomMethod). In the second line, you execute that method with elevated privileges

Document Library : Add through RPC Call

Here is the code snippet which uses RPC call to upload document to a SharePoint Document Library

Stream io_stream;
MemoryStream stream;
byte[] contents;
string strFileName = string.Empty;string
strPostBody =
bool goAhead = false;


string strCURRENT_SITE_URL = Configuration.getCurrentSiteURL();
//Calculating File Name
strFileName = fileupload.PostedFile.FileName;
(strFileName.IndexOf("\\")!= -1)
strFileName = strFileName.Substring(strFileName.LastIndexOf(
strFileName = strFileName.Substring(strFileName.LastIndexOf(
"\\")+ 1);


strPostBody = GetPostBodyStringWithOutMetaInfo(strCURRENT_SITE_URL,strFileName,

stream =
new MemoryStream();
io_stream = fileupload.PostedFile.InputStream;
contents =
new byte[io_stream.Length];
io_stream.Read(contents, 0, (
ASCIIEncoding encoding =
new ASCIIEncoding();
stream.Write(encoding.GetBytes(strPostBody), 0,strPostBody.Length);
stream.Write(contents,0,contents.Length);strPostBody = SendRequest(strCURRENT_SITE_URL +

stream.GetBuffer(), stream.Length);



SPQuery query =
new SPQuery();
query.Query =
"<Where><Eq><FieldRefName='FileLeafRef' /><Value Type='File'>" + strFileName +"</Value></Eq></Where>";

SPListItemCollection listItemCollection = web.Lists[GreenstoneListNames.GREENSTONE_DOCUMENT_LIBRARY].GetItems(query);

if(listItemCollection.Count> 0)
docID = listItemCollection[0].ID;


I hope you find it .

Customized Theme in MOSS 2007

Windows Sharepoint Server (WSS) and Sharepoint Portal Server (SPS) both ship with several built-in themes, giving you the ability to change the look and feel of a site quite dramatically. Choosing one of these themes is simply a matter of clicking on the “Site Settings” link in the upper navigation and then “Site Theme” under the “look and Feel” header. On the “Site Theme” page you should see a list of available themes on the right. Click on one of these themes and you’ll see a preview on the left of the page. All of the themes available for use on a SharePoint server are stored beneath a single folder named “THEMES“. This folder contains a unique folder for each theme: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\THEMES.
To create a theme, start by creating a new folder with the images and CSS files that make up the theme. Here are the steps to create a new theme called “MOSSTHEME″:
Here is a short procedure of creating a custom site theme named "MossTheme":
1. Copy any theme folder in "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\THEMES" folder and paste with its name replaced with "MossTheme". In this example, copy GRANITE folder.
2. In MossTheme folder, rename GRANITE.INF file to MOSSTHEME.INF in upper case.
3. Open MOSSTHEME.INF file with notepad.
4. Change the value of title under [Info] to MossTheme.
5. Replace every word, Granite, under [titles] with MossTheme.
6. Open "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\SPTHEMES.XML" file with notepad.
7. Add the following lines under tag:
'<' templates '>'
'<'templateid'>'MossTheme '<'/templateid'>'
'<'displayname'>'MossTheme '<'/displayname'>'
'<'description'>'ossTheme '<'/description'>'
'<'thumbnail'>'images/ MossTheme.gif'<'/thumbnail'>'
'<'preview'>'images/ MossTheme.gif'<'/preview'>'
Notice that preview and thumbnail paths are images/MossTheme.gif. By default, MOSS 2007 and WSS 3.0 will not have such image files.
8. In order to display thumbnail and preview correctly, you will need to capture the screen and save the file in "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\IMAGES" folder with MossTheme.gif name. You can change the .gif file name if you change the thumbnail and preview file names in tag.
9. Do an iisrest for the server to recognize the new theme.
Pretty simple procedure. Now you are ready to test your new theme. In Site Settings, you can now choose MOSSTHEME; however, the theme will not differ from Granite theme. Now, it is time for you to play with theme.css file!

Simple XSLT filter for look up column with multiple values

Look up columns drives the relationship hierarchy between lists in SharePoint site. And the most common of all tasks always seems filtering/sorting on certain conditions.
For look up column with multiple values enabled, here is XSLT filter to do the trick, it filters out the rows based on the query string parameter.
Here we are appending the value with a character (for example ';') because the result of both functions [contains('1','1') and contains('1','11')] returns true but using [contains('1;','1;')] solves the problem.