My Portfolio

Click here to load reader

download My Portfolio

of 23

description

My SharePoint Portfolio

Transcript of My Portfolio

2. Table of ContentsSharePoint Design and develop a SharePoint3application Design and establish a Solution 15Management Portal Code16Experience Summary 21Recommendations Nicholas Kellett22 Robert Witkowski23 @Kaushik Sengupta 2009 2 3. Project 1: Design and develop a SharePoint application Project Goals Design and develop a SharePoint application to support the towing providers of a fictitious construction company called Acme Create two sub sites for two of Acmes vendors ABC towing Four Seasons towing Develop forms to allow programmatic submission to a MOSS Forms Library initiating Purchase Order/Invoice workflow processes Configure the document library to notify towing @Kaushik Sengupta 2009 3 4. Acme Home Page@Kaushik Sengupta 2009 4 5. Acme ContactsSearchable Contacts List for Acme employees@Kaushik Sengupta 2009 5 6. Acme Newsletter @Kaushik Sengupta 2009 6 7. Acme Sales Presentation The Sales Presentation library is a library of PowerPoint documents. @Kaushik Sengupta 2009 7 8. Site Calendar The site calendar is a shared calendar integrated with Outlook. @Kaushik Sengupta 2009 8 9. Acme Purchase Order (PO) Library@Kaushik Sengupta 20099 10. Acme PO Form The ABC Towing and the FourSeasons Towing sub sites have theirrespective PO list libraries (notshown). New items can be added tothe Acme library and to a vendorlibrary by selecting the respectiveService Provider (vendor) via adropdown list, and by clicking theCreate button in the Acme PO Form.@Kaushik Sengupta 2009 10 11. Invoice Form All Service Providers have their Invoice Form in their respective sites.@Kaushik Sengupta 2009 11 12. Acme Invoice Library All submitted Invoices are stored in the Acme sites Invoice list library @Kaushik Sengupta 2009 12 13. WorkflowA workflow (sequential) is attached to the Acme Invoice list library. The workflow is initiated when a new entry is detected.@Kaushik Sengupta 200913 14. Project 2: Design and establish a SolutionManagement PortalProject Goals Create a Developer Knowledge Base to capture important knowledge about SharePoint and solution development Create a custom site template for new Solution Sites Create a custom Solution List Definition to display all the solution information. Prevent users from deleting any solution items from this list. Create a Solution content type that allows providing information about a solution and apply it to the Solution list Create a Change Management Requests List Definition to track all change management requests. Create a Change Management Request Form in InfoPath to allow managers to submit feature requests for a solution. Develop and deploy a custom web part to create new Solution sites using a specified template. Upon successful creation of a new Solution site, also add a new item in the Solution list. Develop and deploy a custom web part that displays all of the created Solution sites in a grid view. Users can delete a solution which will remove not only the item from the Solutions list but also the related sub-site. Create a Solution Dashboard sub-site to display information about existing solutions in different ways. Display Solution data using various web parts and elements of SharePoint Search.@Kaushik SenguptaSearch Centre that allows targeted searches on Solution items, has a custom Create a 2009 14 scope, and includes at least one keyword and best bet. 15. Acme Inc. Solution Management Portal@Kaushik Sengupta 2009 15 16. Code BehindThe Solution Portal is powered by the following WebPart using System;base.CreateChildControls(); using System.Runtime.InteropServices;ID = quot;SolutionManagementSiteWebPartquot;; using System.Web.UI; using System.Web.UI.WebControls; this.Controls.Clear(); using System.Web.UI.WebControls.WebParts; using System.Xml.Serialization;// Add custom rendering code here.this.Controls.Add(new LiteralControl using Microsoft.SharePoint; (quot;quot;)); using Microsoft.SharePoint.WebPartPages; this.Controls.Add(new LiteralControl using System.Data;(quot;quot;));namespace SolutionManagementSiteWebPartGetDataGrid(quot;Solutionsquot;); { [Guid(quot;77e1f30f-f446-4ebe-862f-2dcaaf1094e8quot;)] this.Controls.Add(new LiteralControl public class SolutionManagementSiteWebPart : WebPart(quot;quot;)); {this.Controls.Add(new LiteralControl SPGridView gridView = null; (quot;quot;)); DataTable dt = null; Button btnReturn = null; lblMsg = new Label(); Label lblMsg = null; this.Controls.Add(lblMsg); public SolutionManagementSiteWebPart() {this.Controls.Add(new LiteralControl } (quot;quot;));protected override void CreateChildControls()this.Controls.Add(new LiteralControl { (quot;quot;));} @Kaushik Sengupta 2009 16 17. Code BehindWebPart Code contd.. protected override void OnLoad(EventArgs e) colEditButton.SelectText = quot;Deletequot;; { colEditButton.ShowDeleteButton = base.OnLoad(e);true; gridView.Columns.Add(colEditButton);// we need this method to ensure the event// receiver firesgridView.RowDeleting += newEnsureChildControls(); } GridViewDeleteEventHandler(itemDelete_Click); private void GetDataGrid(string list) { BoundField colTitle = new using (SPWeb oSPWeb = SPContext.Current.Web) BoundField(); { colTitle.DataField = quot;Titlequot;; SPList solutionsList =colTitle.HeaderText = quot;Titlequot;;oSPWeb.Lists[list];gridView.Columns.Add(colTitle); gridView = new SPGridView(); BoundField colSiteName = newgridView.AutoGenerateColumns = false; BoundField();gridView.Width = Unit.Percentage(100); colSiteName.DataField = quot;SiteNamequot;;this.Controls.Add(gridView); colSiteName.HeaderText = quot;Site Namequot;; gridView.Columns.Add(colSiteName);CommandField colEditButton = new CommandField(); BoundField colSiteDescription = newcolEditButton.HeaderText = quot;Actionquot;;BoundField();colEditButton.ControlStyle.Width = new colSiteDescription.DataField = Unit(75); quot;SiteDescriptionquot;;@Kaushik Sengupta 2009 17 18. Code BehindWebPart Code contd.. colSiteDescription.HeaderText = dt.Columns.Add(quot;SiteDescriptionquot;);quot;Site Descriptionquot;;dt.Columns.Add(quot;SiteTemplatequot;); dt.Columns.Add(quot;SiteUrlquot;);gridView.Columns.Add(colSiteDescription); foreach (SPListItem item inBoundField colSiteTemplate = new solutionsList.Items)BoundField();{colSiteTemplate.DataField = quot;SiteTemplatequot;;DataRow dr = dt.NewRow();colSiteTemplate.HeaderText =quot;Site Templatequot;; dr[quot;IDquot;] = item[quot;IDquot;].ToString();gridView.Columns.Add(colSiteTemplate); dr[quot;Titlequot;] = item[quot;Titlequot;].ToString();HyperLinkField colSiteUrl = newdr[quot;SiteNamequot;] =HyperLinkField();item[quot;SiteNamequot;].ToString();colSiteUrl.DataTextField = quot;SiteUrlquot;;dr[quot;SiteDescriptionquot;] =colSiteUrl.DataNavigateUrlFields = new item[quot;SiteDescriptionquot;]string[]{solutionsList.Fields[quot;SiteUrlquot;] .ToString();.ToString(); dr[quot;SiteTemplatequot;] =colSiteUrl.HeaderText = quot;Site Urlquot;;item[quot;SiteTemplatequot;]gridView.Columns.Add(colSiteUrl);.ToString(); dr[quot;SiteUrlquot;] =tryGetUrl(item[quot;SiteUrlquot;].{ToString());dt = new DataTable();dt.Columns.Add(quot;IDquot;);dt.Rows.Add(dr);dt.Columns.Add(quot;Titlequot;); }dt.Columns.Add(quot;SiteNamequot;); } @Kaushik Sengupta 2009 18 19. Code BehindWebPart Code contd..catch (Exception e)// define which character is separating{//fieldslblMsg.Text = e.Message.ToString();char[] splitter = { ',' };}string[] url = new string[spurl.Length]; gridView.DataKeyNames = new string[] { url = spurl.Split(splitter); quot;IDquot;,quot;SiteUrlquot; }; return url[0].Trim();gridView.DataSource = dt;}gridView.DataBind(); private string GetrelativeUrl(string spurl)// create a button to return the web part to {// normal so more input can be done// define which character is seperatingbtnReturn = new Button();// fields char[] splitter = { '/' };// simply postback to ourselvesstring[] url = new string[spurl.Length];btnReturn.Text = quot;OKquot;;btnReturn.PostBackUrl =url = spurl.Split(splitter);SPContext.Current.Web.Url; return url[url.Length].Trim(); }// button is invisible to begin withbtnReturn.Visible = false; protected void itemDelete_Click(objectthis.Controls.Add(btnReturn);sender, GridViewDeleteEventArgs e)}{ } // Retrieve the row index that contains // the button clicked by the user from private string GetUrl(string spurl) // the Rows collection. { Int32 index = e.RowIndex; @Kaushik Sengupta 2009 19 20. Code BehindWebPart Code contd..using (SPSite siteCollection = newcatch(Exception ex)SPSite(SPContext.Current.Web.Url)){{ lblMsg.Text = ex.Message.ToString();using (SPWeb web =}siteCollection.OpenWeb()){ //listItems.DeleteItemById(listItemID);String siteUrl = String.Empty;siteUrl = (String)key.Values[quot;SiteUrlquot;];String url = String.Empty;// split the url on the , and take the// get the datakey of the row being // first section only// deletedString splitUrl = siteUrl.Split(',')[0];DataKey key =gridView.DataKeys[index]; // remove all the first characters whichint listItemID =// are the site collection urlInt32.Parse(key.Values[quot;IDquot;]. url = splitUrl.Remove(0,ToString());siteCollection.Url.Length + 1); try // now delete the site{ siteCollection.AllWebs.Delete(url);SPList solutionsList =}web.Lists[quot;Solutionsquot;]; }solutionsList.Items.DeleteItemById(listItemID); gridView.Visible = false;} btnReturn.Visible = true;}}} @Kaushik Sengupta 2009 20 21. Experience Summary 14 years of IT experienceFull life-cycle system developmentRequirements gatheringWSS 3.0, MOSS 2007Visual Studio 2005/2008NET Framework and Common TypeSystem, C#, .NET, ASP.NET, .NET ClassLibraries, ADO.NET, .NET Remoting, Web ServicesJava Script, VB ScriptSQL Server 2000/2005, MS Access2000, ORACLE 7.3/8.0Queries, Stored Procedures, Query Optimization, TriggersRational Rose 2000 Enterprise versionCrystalReports, Infragistic NetAdvantage 3.0 @Kaushik Sengupta 2009 21 22. RecommendationsApril 28, 2009To Whom It May Concern: I had the pleasure of instructing Kaushik while he attended the SharePoint Masters Program at SetFocus LLC.While here, he studied and worked with a wide variety of SharePoint features including:Custom and native web parts;Custom List Definitions;Content types and site columns;InfoPath Form development;Custom workflow using SharePoint Designer and Visual Studio;Branding using Master Pages and Themes;Event Receivers; andDeployment using SharePoint Features and SolutionsAs part of the program, he undertook to complete two 1-week projects which were non-trivial, complicated, and required a great deal of programmingand SharePoint customization. He and his fellow students completed their assignments three days ahead of schedule. I attribute this to their focus,enthusiasm, and solid understanding of the course material.Adhering to best practices is vital to any successful SharePoint implementation. Since the program and the projects constantly emphasized this, Kaushiklearned not only the many different ways to do something in SharePoint, but how to identify the optimum approach in a given situation. Because of thisfocus, it is my professional opinion that he is better prepared for SharePoint projects than most developers - who may have some experience but do not havethat critical training and awareness.I recommend Kaushik for a SharePoint developer or administrator position and feel that he would be a valuable addition to any team.If you wish to discuss this recommendation, please dont hesitate to contact me at +1 (819) 918 6097 or by email at [email protected],Nicholas KellettCEO & Co-Founder,Griffon Solutionswww.griffonsolutions.comwww.linkedin.com/in/nicholaskellett @Kaushik Sengupta 2009 22 23. RecommendationsApril 27, 2009To Whom It May Concern: It is my pleasure to provide a recommendation for Kaushik Sengupta. Graduating from the SetFocus Masters Program, Kaushik excelled in our intense,integrated, in-depth, full time SharePoint Training ProgramI was impressed by Kaushiks ability to work with many technologies during Kaushiks time with SetFocus. Kaushik has experience with the latest MicrosoftSharePoint Technologies, including but not limited to Windows SharePoint Services 3.0 (WSS) and Microsoft SharePoint Server 2007 (MOSS).Kaushik learned how to install and configure WSS 3.0 and MOSS 2007, develop and deploy SharePoint applications. This included Administering a SharePoint installation including setting up security groups, scheduling backups, managing site quotas, using stsadm. Setting up forms based authentication Creating site columns, content types and lists; Developing and deploying features Creating common site definitions, Web parts Web content management SharePoint Designer Workflows Using InfoPath forms Custom Workflows and Workflow forms Configuring and Incorporating Business Data Catalog Applications into Portal Solutions Implementing Microsoft Office SharePoint Server 2007 Excel Services, Forms Server Implementing Business Intelligence Dashboards and creating Report Center Web Sites Implementing Search and IndexingI found Kaushiks excellent work ethic was demonstrated by Kaushiks ability to work in an environment with firm deadlines, very large workloads, andcomplex specifications. Kaushik delivers projects in a time efficient manner, is flexible with specification changes and is able to work within teams onassigned projects.I recommend Kaushik as a solid addition to your a SharePoint staff. If you would like more information, Id be happy to provide it.Sincerely,Robert WitkowskiDean of [email protected] 23 @Kaushik Sengupta 2009