Category Archives: Stephan Onisick

Course Summary of TrainSignal’s Course “SharePoint Server 2013 Administration” - Part 4


Editor’s note: Contributor Stephan Onisick is a Senior Software Developer for HP specializing in SharePoint Portal Applications. Follow him @StephanOnisick

Lesson 11: Configuring Email for SharePoint

This lesson goes much deeper than this author wishes to pursue and probably deeper than most “Newbies” will wade into. This section is more suited for the “Super” or Advanced Admin Types.

Looks Innocent Enough?

Bill configures Incoming and Outgoing Email for the Servers. Also he sets up an SMTP Server as well as configuring the Exchange Settings in Exchange.

He starts the lesson by Adding the SPContacts Organizational Unit in Active Directory and goes through the Delegation Control Wizard to add the Central Administration App Pool account. His objective is to be able to create and delete child objects. This gives the Administrator delete subtree permissions for the account.

Next, Bill goes into Active Directory “Advanced Features” to for SPContacts. His purpose is to give the SPFarm account permission to delete subtrees.

He then goes back to the Domain Controller and configures the SMTP App:

Adding the SMTP Server Role

After Installing Bill restarts IIS and begins to configure the various properties:

Setting Properties on SMTP Server

The rest of the lesson gets blurry for an Exchange-Challenged Author. Bill Opens the Exchange Management Shell to run a PowerShell Script to get the Exchange Virtual Directory Path:

Next he uses the URL to access the Outlook Web App (Exchange 2013 Admin Center). After signing in, in Exchange he configures Send Connectors for Incoming Email and Receive Connectors for Outgoing Emails.

Mail Flow Receiver

After this Exchange Excursion, configuring the Input and Output and attaching it to Lists is a piece of cake.

(This is Lesson not for the faint of heart!)

Lesson 12: Working With Sites

Much of this and the next lesson are user interface. It’s good knowledge to have and the review doesn’t hurt—but I won’t classify it as strictly “Administrator”.

Here’s an example of “Adding an App”:

Adding An App

(Hopefully, by now you’ve drunk the SharePoint 2013 Kool-Aid and realize everything’s an App. It’s what God created on the eighth day!)

Lesson 13: Create Libraries, Lists, and Tasks

Much of this lesson is also User Interface Stuff: a good review but not necessarily Admin Stuff.

That being said I really learned some stuff about the relationship of Task Lists to Time Lines, Predecessor Tasks, Pert Charts and Calendars:

Task Lists and Timelines

Tasks on Calendar

(I was obviously surprised and delighted about the strong Microsoft Project-like analysis that can be performed in Out-of-the-Box SharePoint. My advice—if you’ve been around SharePoint 2013 somewhat, just to skip to the “Create Tasks” segment of this lesson. )

Lesson 14: Working with My Sites

This lesson has more relevancy to me for administration. My Sites has complex ties to the User Profile Services, Active Directory and can be connected to the user’s tasks on any site collection.

Bill graciously creates most of his user’s My Sites webs. Then he walks us through the creation of Heather Ackerman’s My Sites web. Bills show the Active Directory connections in data that gets populated:

Heather’s My Sites with Active Directory Data for People followed

Next, Bill signs in as himself and goes to his My Sites. He shows how to follow other people through the interface. He shows how to add a blog and other Apps to his My Sites. He, then, elaborates on the ability to see your tasks from the My Sites:

Bill assigned Tasks as seen on his My Sites

Bill further demonstrates the capability of SharePoint 2013 My Sites to follow other sites. He does this by going to a site and commenting on a newsfeed. Then, he selects to follow that site. This means he will now receive information from the newsfeed on his My Sites.

Then, Bill proceeds to follow a document on SharePoint site. Next he shows the list that he is following and shows how the My Sites software picked-up all his activities and listed them on his activities page:

Notorious Bill’s Activities

He also shows the documents that he is following. Next he notes that if someone changes one of the documents he is following, his newsfeed will be updated with that activity.

(I don’t know about you but I’m sold –Sign me Up for My Sites!)

Lesson 15: Configure the Office Web Apps Server

Bill first explains that the Office Web App Server allows for the viewing of Word, PowerPoint, One-Note and Excel in a Browser. Also this is a server product that runs on its own server. This can be installed on one or many servers on your farm—but your farm must use Claims Authentication. Office Web Apps supports viewing on multiple platforms such as Macs, Tablets, Slates, Smart Phone and other browser-enabled phones.

He further notes the Office Web App Server is very limited as to what other software can be installed such as SQL, LINQ or Microsoft Office Desktop Applications or Web Services using ports 80 or 443.

First he downloads the app from He next configures the Server with specific roles. He points out additional downloads for Server 2008 as opposed to Server 2012:

Server Roles and Features

After configuring the Server, Bill installs the downloaded Application. Next he creates the Office Web App through PowerShell Command:

New-OfficeWebAppsFarm –InternalURL –AllowHttp

(All one line—for Bill’s Server)

Next he checks if the Office Web App Server has been created by typing the URL into a browser to check the discovery:

As luck would have it, we have a Web App Server.

At this point, Bill switches to the SharePoint Server and proceeds to use the SharePoint Management Shell (PowerShell). Next he creates the binding from SharePoint to the Office Web App Server. After a series of PowerShell commands it’s soup. He creates the bindings and switches the service from https to http. Finally he has to change the Oath to check over http as well.

Now all is well in Bill Land:

Note the Option to Edit in Excel Web App

(Note the user no longer has to have Excel on his desktop to edit the App. Not all features are—but most are available.)

What Could be Enhanced for the Future

This course is stellar and really pushes the envelope for SharePoint 2013. Seriously, if you skip any one section of this article, you can safely miss this section without loss—I love this course.

But being a critic and writer, I’m listing a few things for TrainSignal to consider as they spiral upward under the PluralSight banner:

  • A Pre-Test and Post-Test Assessment would be welcome.
  • Downloads were by lesson and include a voice recording as well as a PDF.
    • A single download would be preferable.
    • It would be nice if the voice downloads were optional. They are really time-consuming and not everyone will use them.
    • The PDFs were not labeled and did not contain all the screens.
      (Hint: Hire someone who can document courses better—gee I think I know someone! :-) )
    • The Progress on the Overall Course is visible but a way to see the uncompleted sections would be of added value to user.

Conclusion: Summary and Forward SharePointing Direction

Great Course! How can you help but learn. Real Practical Applications with real problems that are encountered. Kudos to Bill Kulterman. 5 Star!

Also remember when this course came out, there weren’t many SharePoint 2013 Administration courses on the Net.

My aim was to provide a thorough feel for the content Bill taught. Also having taught college for four years, I try to add to the pool of knowledge. I would hope that this could also add to your TrainSignal Course Experience.

(So Many Screens to Document-So Little Time!)

Happy SharePoint 2013ing

Course Summary of TrainSignal’s Course “SharePoint Server 2013 Administration” - Part 2


Editor’s note: Contributor Stephan Onisick is a Senior Software Developer for HP specializing in SharePoint Portal Applications. Follow him @StephanOnisick

Lesson 3: Installing SharePoint

Bill starts lesson 3 by explaining SharePoint Server Roles- basically this hasn’t changed in the big picture: there is a Web Server, Application Server and Database Server.

Next he goes into Server or Server Farm Topologies and explains a Single Server or Stand-Alone Deployment.

(I actually have a disagreement with Bill in that there is a difference between a Stand-Alone Install and a Single-Server Farm Install. What he is referring to in this example is a Stand-Alone Install.

The Single-Server Farm Install is scalable where the Stand-Alone Install is not. The Single-Server Farm is actually a Farm install on one actual physical server but is configured as a farm. I have been doing this install for all my development systems. Bill uses the term Stand-Alone later when he shows a Single-Sever. This was vetted with Chirag Mehta, ( a friend on

Next he starts the basic install. After the Install completes, Bill chooses the option to run the SharePoint Products Configuration Wizard when it comes up and of course, we want to run it.

Even though Bill hasn’t used the terms “Grey Wizard” and “White Wizard” to refer to the SharePoint Products Configuration Wizard and the Central Admin’s Farm Configuration Wizard, I will be using this terminology as they are useful to point out some specific scenarios in Bill’s installation. Since the background of the next screens are grey, hence “Grey Wizard”:

Mysterious "Grey Wizard" or SharePoint Product Configuration Wizard

After this configuration wizard finishes, Bill Launches into the “White Wizard” or the Central Admin Farm Configuration Wizard:

Screen to Initiate the "White Wizard"

(At this point many people including me are yelling “Please Bill don’t do the configuration with the wizard!!” Alas, all to no avail. Bill even notes these sentiments. There are other ways to go through and configure farm services via PowerShell Scripts. But there is method to Bill’s going this route; basically, this course is an intro SharePoint Administration on 2013.

Actually this is not as bad as it seems: Bill’s methodology with the major services, like “Search” and “User Profile Administration”, is to initially delete the configured service; then, to reconfigure them.

His simple actions give the student confidence to do the same. This is exactly how I finally got my Profile Administration Services for SharePoint 2013 launched.)

Much Maligned "White Wizard"

Bill does a good job in explaining the basic services and deselecting the ones for a more advanced session.

(Note Bill actually restarts the installation from before the “White Wizard” was run in the next lesson. So that he can go through the wizard again. This means that the majority of services and databases just created will go “bye-bye” and be recreated in the next lesson.)

Lesson 4: Farm Configuration

At this point, Bill takes a step back. He actually picks up from before the “White Wizard” ran, just to see if everyone was awake. (I failed twice.) Some of the services and databases that we configured in the last lesson are gone.

He notes that there is only one Web Application present and that is for “SharePoint Central Administration v4” and then examines the IIS Manager and the SharePoint Central Administration Website.

Next after initiating the Farm Wizard, Bill sets up the “SPSvc” Service Account, Services Account, in Configure Managed Accounts to use an account other than the Farm Account. Bill also spends time discussing password synchronization and how to use the Register Managed Account to see what services are being run by which account.

After the end of the Farm Configuration Wizard, he creates the “Globomantics Main” Site Collection as a Team Site.

Then Bill shows the Services being managed by SPSVC after the Farm Configuration Wizard has been run under Configure Managed Accounts

Register Managed Account after Configuration

(Get any 10 Administrators in a room and there will be 10 ways of doing permissions. This screen under Managed Accounts is helpful to find out who actually has what.)

Finally Bill views the Site Collection in Central Admin and from the URL he opens the site created – you know, the Standard Blue and White SharePoint 2013 “Hello World” Screen. Bill concludes the lesson by showing the new databases created by the “White Wizard”:

Databases – Surprise! Now you see um again-Note Ugly Database Names!

(Note: When the databases are created by the Farm Configuration Wizard, the wizard tacks an ugly guid at the end of the name.)

Lesson 5: The Logical Architecture of SharePoint

If you’ve been doing SharePoint for any length of time this was a “snooze puppy”

Logical Structure of SharePoint

If you have knowledge of what the following terms are: a Farm, a Web Application, an App Pool, a Site Collection and a Site/Web — feel free to move to Lesson 6. If you are really new to SharePoint, the lesson is a good overview.

Lesson 6: Creating Web Applications

Bill walks through the creation of two web sites: the Globomantics Intranet Site and the Globomantics My Sites. But first he examines the Health Monitor. He notes that most of the warnings are because the installation is not complete.

Next he registers SPAdmin, the install account, for the security account of the App Pool he is about to create in the new Web Application. Then he creates the new Web Application from Central Admin:

Creating a Web Application

Bill provides a good explanation of Host Headers, which are needed to give descriptive and unique web directories for applications in IIS.

Next he fills in the information in the Create New Web Application Page so that a new App Pool will be built when the web application is created:

Basic Creation Screen-Bill will change the Ugly Database Name

(Note: See the ugly name for the Database Name with the long guid. This gets renamed to “Globomantic_Intranet” (Yeah Bill!) to make it more understandable and easier to locate.

Next Bill explains the concepts of Service Application Connections:

Web Application Services Hookup

He explains the use of a “Custom Connection Group” when not all default services need to be associated with a particular web application. This might be a web app to do some specific set of tasks.

After creating the Application, Bill is not yet ready to create the Site Collections, so he moves on to create the My Sites Web Application. Basically this is a “Rinse and Repeat” of the first Application created.

Next Bill configures the DNS on the Domain Controller:

Configuring Domain Controller to Configure DNS-Go Bill Go!

(To me this is where Bill really excels doing off-roading. These little side trips can, and do, cost technical people complete days of searching and Googling because not everyone doing these tasks has mastery of all the disciplines involved.)

Next Bill creates a new Host Record in DNS for our Globomantics Intranet Sites (the site will not be accessed from the outside, so only one record is needed to locate the site internally.)

Bill creates another Host Header for the My Sites App. Then briefly reviews the IIS Configuration.

Course Summary of TrainSignal’s Course “SharePoint Server 2013 Administration” - Part 1


Editor’s note: Contributor Stephan Onisick is a Senior Software Developer for HP specializing in SharePoint Portal Applications. Follow him @StephanOnisick

When I noticed the affiliation between my favorite site,, and, I immediately made contact with TrainSignal and proposed some course reviews. Being closer to the “Suma Come Later” crowd than the “Technology Bleeding Edge” crowd, I wanted to offer my perspective and insight as a kind of compendium or adjunct to some of the SharePoint Courses.

The YouTube offerings from TrainSignal were top notch and I couldn’t wait to partake in their course offerings. As part of my review arrangement, I have access to their courses for the next year (Awesome!).

My choice of “SharePoint Server 2013 Administration” was deliberate. My normal role as developer had been altered to configure some SharePoint 2013 virtual machines for our test environment. To say I was challenged was an understatement. I was only peripherally familiar with Active Directory, DNS, Server Manager, Firewalls and Domain Controllers. I was looking for a good introduction without too many assumptions of prerequisites.

Being a member of, and Safari Online, I had actively been looking for SharePoint 2013 Administration Courses and couldn’t find one. TrainSignal’s course fit the ticket exactly. (Soon to be part of for a mere 27 million!)

To be fair, I know, has an offering—but I was not a member and did not want to outlay cash. Also, has sixty-five SharePoint Courses with approximately seventeen SharePoint 2013 courses—but none, at this time, were specifically designed to be an administration guide to SharePoint 2013—much less a “Newbie Admin” .

This course was specifically designed for the first-time admin—but there are also pointers for the seasoned veteran that might just be new to SharePoint 2013.

Train Signal Opening Menu

Course Menu - User Profile Service (Most Awesome Module) Circled

My tale gets even more woeful: I had been trying for three weeks to resolve “User Profile Administration” in Central Admin of a SharePoint 2013 development installation. I just wanted the User Profile Service to pick up my test users from Active Directory. Not surprisingly, when I got access to the course, I immediately opened the Lesson 10 on “User Profile Service Administration”.

What I found in that lesson was a Godsend! After watching the Lesson about twice and following Bill Kulterman’s instructions. My Profile Service was up and running and I successfully imported my Test Active Directory users. (There was life after User Profile Service Administration!)

Reticent Programmer

Bill had impressed me with his friendliness so much so that I’d even buy a used car from him?

Bill Kulterman: My Hero!

(I just found this YouTube Video Bill made if you’d like a sample of his congenial style: SharePoint 2013 - Creating a Web Application & Site Collection - YouTube)

What I specifically liked about the way Bill taught was that he navigates you into the problems that you WILL encounter and is friendlier than Microsoft Documentation at solving them.

My methodology for reviewing this course will be to give my impressions and point out the salient features in the lessons. I also provide a decent running dialogue of what’s being covered.
(Note: By my gestimate, in this course Bill goes through at least 500 screens, I have tried to include a representative sampling.)

Lesson 1: Getting Started with SharePoint

The Intro was the basic “Hi and Howdy” spiel—necessary, but just enough to move you on.

Lesson 2: Preparing for the SharePoint Install

Bill begins to get into “red meat” with this lesson 2. What most SharePoint Administrators know is that doing SharePoint involves a lot of off-roading. There are a number of components that go into a SharePoint Installation such as Configuring Service Accounts in Active Directory, Setup of SQL Server, and Firewall Configuration

I especially like his preparation of the Accounts in Active Directory to setup the accounts for the permission management and his use of the “Least Privilege” philosophy:

Setting up Admin Accounts in Active Directory

Next he proceeds to the SQL Server Install. SQL Server is the “bread and butter” of SharePoint. It is essential that the Admin have a feeling of how SQL integrates with SharePoint.

One thing that I value in his coverage is the seemingly obscure topics like “Max Degrees of Parallelism”. These obscurities come back to bite you if not set correctly.

Next he covers the actual SharePoint Prerequisites Install—which is part of the Setup download. After a couple of screens and a few reboots, “Bob’s your Uncle” and it’s onward to the SharePoint 2013 Install!

Review of the SharePoint Designer and XSLT Coverage in Pluralsight’s Course “Advanced SharePoint 2010 Branding for Web Designers” - Part IV: Yet More Extensive XML and XSLT in SharePoint Designer


Editor’s note: Contributor Stephan Onisick is a Senior Software Developer for HP specializing in SharePoint Portal Applications. Follow him @StephanOnisick

The final part of this outstanding section shows SharePoint as an even more capable XSLT generator (well, sometimes). Ted uses a SharePoint Picture Library of his Wingtip Toys for a List View XSLT Web Part. He notes that out-of-the-box SharePoint (OOTB) does not have a view that will natively render images in a Web Part. . (That’s why there are expensive SharePoint Developers. Don’t ya just hate this!)

This would be daunting for mere mortals, but Super Ted pulls off his gloves and goes wading into raw code to display a view that works in the SharePoint Designer Split View (but unfortunately not in the browser).

Bear with me one last time, as I attempt to reconstruct the missing library from screen captures of Wingtip Toys. My picture library was created by using the Snipping Tool from my desktop on the Toy Slides I could glean from this Pluralsight Course:

Figure 1 Windows Snipping Tool

(This is also left for viewers to create a SharePoint Picture Library called “Wing Tip Toys” should they desire to follow the code in detail.)

The procedure is similar to the last one I outlined:

  1. First create a Web Part Page.
  2. Then add the “Wing Tip Toys” SharePoint Picture Library from the “Lists and Libraries” Group of Web Parts

The point after the user has selected “Edit Web Part” in the browser is where my narrative and illustrations continues. This is where Ted sets two properties:

Figure 2 Edit Web Part Properties in the Browser

The properties that he sets are “Toolbar Type” to “None” and under the Appearance Section, “Chrome” to “None”:

Figure 3 No Toolbar and No Chrome Set in Web Part Properties

(Note: Because of the different properties available and the relative ease of setting one in the browser versus SharePoint Designer, there is a need for both. Not all properties can be set from both modes. It takes some experimentation to figure out the best place to change a given property.)

Next the “Edit Mode” of the Web Page is exited to preserve changes. Then SharePoint Designer is opened as in the previous example and the Web Part Page is edited in Advanced Mode.

The following display Continues with the Web Page open with SharePoint Designer in “Split” Mode:

Figure 4 SharePoint Designer in "Split" Mode showing Wing Tip Toys Web Part

Just as Ted noted, the fields currently showing are not the correct ones for displaying the images. Also note that no images are currently showing in the “Design” View above.

So the next step is to ‘click’ inside the first displayed row so that the context of SharePoint Designer changes and the “Add Remove Column Fields” Tool is displayed in the top toolbar:

Figure 5 Add/Remove Columns showing with open dialogue

All “Displayed Fields” need to be removed and consequently are removed by selecting them individually and clicking the “<<Remove” button.

Next, the following fields are added: “Title” and “URL Path”:

Figure 6 Title and URL Path Added

The newly displayed “Design View” looks as follows:

Figure 7 Title and Url Path in Design Web Part

Next the “Page Size” Option is set by using the “Paging” Tool in the Top toolbar:

Figure 8 Paging Option set from Toolbar

The goal here is to set the Display Set of Items large enough that pagination never kicks in to spoil our pristine display. Since my library only has about 6 images, a lower value could have been selected.

Next we allow SharePoint Designer to do the formatting by clicking on the “Design” Tab and then choosing to format with the “Boxed, no Labels” tool:

Figure 9 "Boxed, no labels" tool outlined in red

Alas, finally we need to look at the XSLT. At this point SharePoint Designer needs to show us the internals of the XSLT so that we can customize. We ask the SharePoint Designer to do this by the “Customize XSLT” dropdown to select “Customize Entire View”:

Figure 10 Customize XSLT/Customize Entire View outlined

The cursor is now placed on the first URL Path with the code selected in “Code View”:

Figure 11 First URL Path Selected after Converting Entire View

Next the off-roading begins. The code section that is selected needs to be encased with an Image Tag, “<img></img>”, and an XSLT Attribute Tag, “<xsl:attribute

Figure 12 Adding XSLT Attribute

The following shows the completed code alteration with the image and the attribute:

Figure 13 Toy Trains in SharePoint Designer

It is apparent from the display that SharePoint Designer is able to render the images.

Alas, Poor Yorick! Ye old browser is not totally convinced of the image worthiness:

Figure 14 Browser Fails to render images - Ever have one of those days?

At this point, after a couple “Rinse and Repeat” sessions and consulting the oracles at Google. I chanced on the following snippet from an article from SharePoint Stack Exchange (

Sharepoint Designer - Inserting an xsltListView Webpart generates xslt transform failed error (


Anytime you see Marc D Anderson and XSLT in the same blog—you have hit the “Holy Grail of XSLT” and been granted safe passage through the gnarls.

My next thought was maybe there’s an unwrapped “ddwrt:UrlDirName” on the page.

(Don’t you love it when a plan comes together!)

As it turns out, the offending line is:

Figure 16 Not Wrapped by string: <xsl:value-of select

The following is a view of the line that allows the browser to output images correctly :

Figure 17 string() surrounds <xsl:value-of select

(If this does not appear obvious to you—you’re not alone!)

The following is a display of the Web Part in the browser:

Figure 18 Solution in Browser –Even works in SharePoint!!

In Conclusion

While Ted did not have a solution to every issue in this section of XML, XSLT and SharePoint Designer, he provided me with inspiration. That is what a good educator does and my hat is off to his mastery.

The technology is not easy but it’s approachable as long you look for guides, blogs, mentors, gurus, and keep conversant with Google.

If you found this series useful—connect with me on linkedin or twitter @StephanOnisick. Your comments could help mold future articles. (Power is scary isn’t it?)

Until my next inspiration—Happy SharePointing!

Review of the SharePoint Designer and XSLT Coverage in Pluralsight’s Course “Advanced SharePoint 2010 Branding for Web Designers” - Part III: More Extensive XML and XSLT in SharePoint Designer


Editor’s note: Contributor Stephan Onisick is a Senior Software Developer for HP specializing in SharePoint Portal Applications. Follow him @StephanOnisick

The next two demos show the adeptness of SharePoint Designer at generating gnarly XSLT code for you.

[It’s worth noting that neither of these demos display correctly in Ted’s browser after he finishes coding. For a developer, this is funny but not totally unexpected: The environment is complex and SharePoint Designer can be snarky—even the new improved SharePoint 2010 Designer.]

Before going into these demos, I want to emphasize Ted’s “Rinse and Repeat” Strategy. The condensed version goes like this:

  1. Create your basic Web Part Page in a location you can later find.
  2. Add your Web Part (List View, Content Web Editor, or whatever).
  3. Exit the “Edit Page”—so the Page is actually saved.
  4. Customize that Page and the specific Web Part in SharePoint Designer in “Edit File in Advanced Mode”.
  5. If and when you get toasted by the Designer (as even Ted did in the demos)—start back at Step 1.

For this demo, Ted creates a Web Part on the page from a SharePoint List on his site.

Since I don’t have Ted’s SharePoint Site and his Customer List, I’m using a simple Author List that I modified from another Pluralsight Course. The relevant fields are: Name (Single Line of Text), Employee (Yes/No), and Salary/Rate (Numeric with 2 decimal places). My code views are predicated on this table structure. (If the viewer desires to follow along, they should recreate this list with the above structure on their system.)

The next four illustrations show this List added to a SharePoint Web Part Page—which then becomes a XSLT List View Web Part. (See the sneaky way SharePoint inserts the XSLT!)

First create the Web Part Page as follows:

Figure 1 Basic Web Part Page Create - Step 1

Figure 2 Basic Create of Web Part Page - Part 2

Figure 3 After Adding Authors List from the “Lists and Libraries” Web Parts Group

Next “Stop Editing”:

Figure 4 Web Part after Exiting Edit Mode

Then open the file in SharePoint Designer:

Figure 5 SharePoint Designer Accessed from Site Actions.

(Sometimes it is physically necessary to open SharePoint Designer from the Start Button and navigate to the page if the option does not appear on the Site Actions Menu.)

Next choose “Edit File in Advanced Mode” by selecting the option from the context-click (right-click):

Figure 6 Edit File in Advanced Mode

To illustrate conditional formatting in SharePoint Designer, I arbitrarily chose to highlight each row in green where the Salary/Rate is greater than 500.

First, the web page is viewed in “Split” Mode and my cursor is show in the first row.

Figure 7 Beginning Conditional Formatting

The tool bar changes to the “List View Tools” after clicking into a column in a data row of the “Design” portion of the “Split” View.

Note the toolbar with the “Conditional Formatting Tool :

Figure 8 Conditional Formatting Tool on Web Part Toolbar

Next “Format Row” is chosen from the “Conditional Formatting” dropdown:

Figure 9 Format Row

The idea is to select a field that contains values that need to be highlighted. Then apply highlighting to the entire row whenever this condition is encountered in a row.

The Plurasight/CriticalPath Course Slide displays a good overall representation of the “Format Row” dropdown combined with “Set Style” button:

Figure 10 Pluralsight Course Slide Overview for Format Row

My example uses a different field for comparison from the one Ted used in his example. Because of SharePoint naming quirks, the actual field name is “Salary_x002f_Rate” The slash character in “Salary/Rate” gets converted to “_x002f_” automagically by SharePoint. (Hint: For sanity, avoid spaces and special characters like slashes in columns.)

This field does not show up in the original list and must be selected from the “More Fields” Option of the “Field Name” dropdown.

Figure 11 Field Selected from “More Fields”

The following shows the display of the complete comparison:

Figure 12 Complete Compare

Next the “Set Style” button is clicked to open the “Modify Style” dialogue:

Figure 13 Modify Style Dialogue to Change Background to Green

The following shows a partial listing of the generated XSLT:

Figure 14 Partial XSLT List with Ugliest Code Marked

(Scary isn’t it? -No Human Beings were harmed in its creation –although overexposure to XSLT can result in blurred vision, headaches, and atrocious language.)

This concludes the examination of XSLT and Conditional Formatting. Part IV will cover more extensive Pattison off-roading in the SharePoint Designer with a SharePoint Picture Library.

Happy SharePointing,

Review of the SharePoint Designer and XSLT Coverage in Pluralsight’s Course “Advanced SharePoint 2010 Branding for Web Designers” - Part II: XML and XSLT in SharePoint XML Viewer Web Part


Editor’s note: Contributor Stephan Onisick is a Senior Software Developer for HP specializing in SharePoint Portal Applications. Follow him @StephanOnisick

Next, Ted hones in on using XSLT within SharePoint.

You gotta love this: Ted’s emphasis is to not get mired in the XSLT Code. His motto is let SharePoint Designer do most of the work. Then, just modify what has to be changed.

How often as developers have we gotten knee-deep in XSLT, and then lost our precious thread of logic while waiting for SharePoint Designer to returns from its extraterrestrial excursions.

Remember how SharePoint 2007 Designer reformatted your code-sometimes to something unworkable? Forget about aligning code—in a blink of an eye it was history in SharePoint Designer.

Or worse yet, remember how the SharePoint 2007 Designer would occasionally introduce extra tags, like form tags, and then complain about them and stop rendering HTML?

Figure 1 Pluralsight Course Slide using XSLT with SharePoint

The next set of presentations cover the first two bullet points in depth. The last two are only mentioned to note their use and importance in SharePoint.

Note: One disconcerting thing to be aware of is there are NO Exercise Files for this segment available in download. The files used Are NOT the same files Ted used for the simple demos on XML and XSLT.

This causes a little inconvenience in requiring the user to first create the files, lists and libraries needed to be able to follow along with the modifications Ted presents.
(On the bright side, we learn by doing. :-)

XML Viewer Web Part in SharePoint

The next two demos utilize the XML Viewer Web Part. What the XML Viewer Web Part does is to essentially separate the XML file and the XSLT file (Data from Presentation). This allows the user to experiment with different XSLT files for displaying a given XML file. Thus, they can completely change the look of an XML file by simply changing the name of the XSLT Transform file. This Web Part, then, renders or displays the transformed html on the SharePoint Web Page.

Ted takes a different set of files (as previously noted) and drags them into SharePoint Designer. Then he hooks them up to the XML View Web Part. He uses these files in almost the same way he used the stand-alone XML and XSLT files. This works on the same concepts already explored but propels the learning squarely into the SharePoint Arena.

As Ted begins to work with the demo code, he shows the user how to modify the XSLT in SharePoint Designer to add additional markup. SharePoint Designer leverages Intellisense in conjunction with a superb XPATH Expression Editor to ease the pain of coding god-awful XSLT syntax. His emphasis is to let SharePoint do the “grunt” work. You, the designer, just modify the bare minimum to achieve the effect needed.

The first example for SharePoint Designer is fairly straight forward and needs no expounding.

The second example, however, gets interesting.

Because both code files are salient to the second example, and were not included in the download, I have included the code below as text so that it can be copied:


    <Title>CSS Property Reference</Title>
    <Comments>Document which specifies CSS properties for version 2.1.</Comments>
    <Title>CSS3 Maker</Title>
    <Comments>Get CSS 3.0 Layouts</Comments>
    <Comments>Site to help you pick a color scheme.</Comments>
    <Comments>A site where you can get chunks of Latin content for Greeking.</Comments>
    <Title>Add This</Title>
    <Comments>Copy-and-paste elements for pages.</Comments>


<?XML version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" mlns:xsl="">
    <xsl:output method="html"/>
  <xsl:template match="/">
   <h2>Hot Links for SharePoint Web Designers</h2>
    <ul style="font-size: 10pt">
        <xsl:for-each select="HotLinks/Link">
                  <xsl:value-of select="Title"/>

(Note: Make sure the quotation marks look correct and are not angled as in Word when you “Copy and Paste”. I usually paste into Notepad first. Then copy again from Notepad and paste into SharePoint Designer. This circumvents some of the problems.)

The first display of this example shows just text strings after the bullet points. As such, it is worthless to the user for navigation to the named sites:

Figure 2 XSLT Rendered in the XML Viewer Web Part
Note: Outlined Area is Text

Fearless Ted rectifies this by changing SharePoint Designer to render anchor tags and dynamic hyperlinks. Instead of displaying text, the “new and improved” Web Part displays a navigation link (hyperlink). Thus, the user has something useful for navigation to any of the sites listed.

To do this he changes the text display to an anchor tag and then adds a dynamic XSLT:attribute to render each URL:

Figure 3 Dynamic <xsl:attribute Added within the anchor tag

This results in a more useful Web Part with links/anchors instead of text. The amount of XSLT Changing was minimal—all of which was aided by handy-dandy SharePoint Designer Intellisense. (Don’t leave home without it!)

Figure 4 XSLT Rendered with Anchor Tags
(The first bullet shows a previously visited hyperlink)

This concludes the examination of the SharePoint XML Viewer Web Part. Part III will cover more XSLT in SharePoint Designer including Conditional Formatting Logic.

Happy SharePointing,

Review of the SharePoint Designer and XSLT Coverage in Pluralsight’s Course “Advanced SharePoint 2010 Branding for Web Designers” - Part 1


Editor’s note: Contributor Stephan Onisick is a Senior Software Developer for HP specializing in SharePoint Portal Applications. Follow him @StephanOnisick

I almost overlooked this gem of a course in the pack of 57 SharePoint Courses on The title sounded similar to at least four other courses in the SharePoint Curriculum on I’m glad I didn’t and chose instead to review it in depth.

It is hard in the midst of so many good courses to keep them all differentiated. At this time, Pluralsight lacks a personal history navigation interface: one where you can tell at a glance the courses taken and the current state of your progress in a given course. (Hint! Hint! Pluralsight!)

(Yes, there is a “Your history and bookmarks” displayed under your login name - but it only bookmarks the last 10 courses you’ve visited - barely a month’s worth for some of us more avid users!)

When I finally reviewed “Advanced SharePoint 2010 Branding for Web Designers”, I realized this course was huge in SharePoint learning experience and breadth of technology. To do this offering justice, I needed to do more than just casually watch the technology stream by on my monitor. This called for something more proactive which included building the demos on my home SharePoint 2010 virtual machine along with the videos presented by Mr. Guru, Ted Pattison.

As a SharePoint Developer of almost five years, I have found good coverage from the ground up of XML, XSLT and SharePoint Designer sorely lacking in SharePointdom. There are, of course, expert blogs on these topics but the complexity of the presentations frequently obscures any insights for us mere mortals.

Ted Pattison has long been a giant in SharePoint (heck, before that he was huge in COM+ programming. I’m pretty sure this dates both of us! Groovy! huh?).

It took Ted Pattison’s consummate skill to expound on XML, XSLT, and SharePoint Designer. He provides a workable pathway through this dense forest of learning.

On any of these topics, it would have been easy to leave the student stranded in the weeds. This didn’t happen. Ted provided a workable approach that lays claim to the basic principles of each discipline.

(You can quote me! I already have!)

Beyond XSLT and SharePoint 2010 Designer, the course covers the additional topics of Clientside Coding JavaScript/jQuery, Upgrading from SharePoint 2007 to SharePoint 2010, and Sandbox Solution Deployment. (All have good coverage, depth and insight.)

Because of the uniqueness and novelty of Ted’s approach on the coverage of the XSLT and SharePoint Designer Integration, I have chosen to focus this article exclusively on these topics.

To allow depth for this topic I have segmented this piece into 4 parts for easier consumption by readers (The Mind can’t absorb more than the Seat.):

  • The first covers basic XSLT Transforms of XML outside of SharePoint.
  • The second covers XSLT within the SharePoint XML Viewer Web Part.
  • The third covers SharePoint 2010 Designer more extensively with Conditional Logic and more complex XSLT Transforms.
  • The final segment covers the XSLT involved in displaying a SharePoint Picture Library with extensive off-roading in SharePoint Designer.

My hope is that these four parts will serve as an addendum and adjunct to an innovative course.

Part I: Almost Bare Naked XML and XSLT

What makes this coverage interesting is the utility of the examples being used. Ted starts with basic XML and XSLT rendered just in the browser from an html wrapper. Then he progresses to one of the most complex tools in this author’s estimation, SharePoint 2010 Designer.

He entitles a section “World’s Fastest Introduction to XSLT”. I haven’t previously had occasion to use “fastest” and “XSLT” in the same sentence—or even the same paragraph for that matter. His video and examples provide the student with material to work through this maze and emerge knowledgeable.

To render each XML File with a custom XSLT Transform, the examples use an Html Page called “Default.htm”:

Figure 1 The Html Wrapper used to display XML/XSLT (Default.htm) via the “href” attribute in the anchor tag.

Note: The individual files (demo01.xml, demo02.xml, and demo03.xml) may be rendered/displayed directly in Internet Explorer by right-clicking on the XML File. The browser will render the transformed HTML.

The HTML simply references the XML files from three anchor tags. The XML Files, in turn, call the specific XSLT File on the second line. (There is some eye-candy in the form of a cute airplane banner, Site Title and a menu formatted by some CSS and images. These can be safely ignored.)

The following shows the first example,”Demo 1”, in its entirety:

Figure 2 Basic "Hello World" XML

Figure 3 First Simple XSLT Code

Figure 4 Output of a Simple XSLT Transform
(Note: the Banner originates from the Html Wrapper which includes the top menu.)

The first two examples, “Demo 1” and “Demo 2”, do not use XML Namespaces in the XSLT Code and the XML pages can be edited from Notepad or Notepad++ editor.

(Notepad++ has a nice feature to render the XML in several different browsers—if they are installed on your machine. Ted actually uses Visual Studio 2010 to edit the files for the added benefit of using its Intellisense. The XSLT code, in these first two examples, is not complex and Notepad will do fine for these.)

The next example, “Demo 2”, displays a simple phone list formatted by an XSLT Transform.

Figure 5 Second Simple XSLT Transform
(Code Not Shown in Article)

The third example, “Demo 3”, is a much more complex form and uses an XML Namespace in the XSLT Code:

Figure 6 Third example with a markedly more complex XSLT Transform
(Note: Header from HTML Wrapper is Not Displayed and the Code is Not Shown in Article)

Ted’s purpose in the last example is not to completely explain the complex XSLT. His aim is more to give the student a working example of XSLT capability they can take apart, examine, experiment with, copy and use.

An interesting exercise for the reader is to make the third example work without the XML Namespace. This gives insight to the use of XML Namespaces.

This concludes the basic XML and XSLT Transforms. Part II will continue with XML Web Viewer.

Happy SharePointing!
Stephan from a SharePoint Developer’s Perspective


Editor’s note: Contributor Stephan Onisick is a Senior Software Developer for HP specializing in SharePoint Portal Applications. Follow him @StephanOnisick

Recently, I published two articles for . The first entailed free offerings on YouTube and Microsoft entitled “Free YouTube and Microsoft Videos from a SharePoint Developer’s Perspective”. The second was about Pluralsight, entitled “ From a SharePoint Developer’s Perspective”.

In the first article, I explored free content. Literally, free for the finding which admittedly can be challenging on both the behemoths, YouTube and Microsoft. Never the less, for those who persevere much free learning is available.

In the second article, I began examining a paid subscription to with the aim of getting the best possible deal for finite monetary resources. I discussed the reasons I believe Pluralsight to be an excellent bargain for SharePoint learning featuring the “Who’s Who” of SharePointdom’s authors and expanding SharePoint Courseware, 53 by last count.

This article continues with paid subscriptions: specifically, it focuses on site which I have had extensive experience as a paying participant in the last year.

LearnDevNow was the first paid online course vendor I used as a SharePoint Developer. I was ecstatic to find a reasonable priced vendor with quality SharePoint Courses available 24/7 with demo code. (In addition to being my job, SharePoint and learning are also my hobbies: gotta have code to play with!)

The SharePoint offerings on LearnDevNow, aka LearnNowOnline are less extensive than However, they are also less expensive for the basic offering. The price, $99 per year, could easily fit in the budget of most individuals or as a cost-effective company supplemented offering.

If some of the presentation techniques from LearnDevNow seem familiar, they are based on AppDev Training Modules. My past experience with AppDev partaking SQL and .Net courses has been positive. AppDev has supplied numerous well-written courses that have extended my knowledge with competent instructors and credentialed instructors.

The following is the screen from the “” URL:

The last price for an Annual Subscription was $99– but upon occasion I see specials for $49 (a real bargain).

Note: There are several ways to get to this LearnDevNow Screen. Another method involves going straight to url and clicking on the LearnNowExpress link—then clicking on LearnDevNow Microsoft Development Library link.

This is the screen shown after clicking the “Subscribe Now” button

The “Sample Code” option (shown above) is a reasonably priced add-on for $29.99 (This really is a must for a developer!).

Personally, I would bypass and uncheck the “Online Courseware and Hands-on Lab-Exercises” because of the reliance of this option on software called “LockLizard”. The Online Courseware is delivered in a pdf format only decipherable by LockLizard. This limits the viewing of the pdf files to licensed individuals and prevents ANY printing of the material. Also LockLizard will NOT unencrypt the locked pdfs in the presence of open screen capture utilities (Snagit, Snipping Tool, Jing)—normally I write with at least two of the three open.

[Craig Jensen, President & CEO at LearnNowOnline and AppDev, has assured me that there will be a future option for printing course material. Hint: Want to get to a CEO of Learning Site? Just tell Customer Support you’re working on a review of the site.]

On my wish list for future offerings would be the bundling of “Hands-on-Exercises” with the “Sample Code” as printable media—even at a higher price than the “Sample Code” by itself.

The following is a listing of some of the SharePoint Offerings: (Basically just the JavaScript, jQuery, and SharePoint).

Javascript Offerings:

jQuery Offerings:

SharePoint Offerings:

These are the main courses that I found useful as a SharePoint Developer—however; other developers might find useful content in the, Visual C#, Visual Basic, MVC, and SQL Server section.

The courses that I took were interesting and relevant with competent certified instructors. (Some of the instructors were Microsoft MVPs like Doug Ware, Dan Wahlin, Ken Getz; others, are known in the Industry as prominent authors, speakers and consultants like Jeff Webb, Don Kiely and Michael “Bear” Bibeault.) The courses were also useful in studying for certifications. I passed some of my MCTS Certifications in SharePoint while using LearnDevNow as a supplement to my study.

One additional item on my wish list is an Android App specifically designed for LearnDevNow Courses, I had trouble with Flash on my android Sony Tablet and was unable to view courses from this platform. (I always have trouble with Flash –I never have the right release for each browser— definitely Flash-Challenged. Did I mention I don’t like Flash? Go HTML5!).

I heartily recommend LearnDevNow as an inexpensive learning option for SharePoint Technologies. There is much that can be gleaned on a smaller budget from this site. It is an adjunct to my learning SharePoint.

Happy SharePointing

Stephan From a SharePoint Developer’s Perspective


Editor’s note: Contributor Stephan Onisick is a programmer developing SharePoint applications for Phacil. Follow him @StephanOnisick

For the last four years, I have worked as a SharePoint Developer. During this time, I relentlessly sought sites, articles, blogs, courses, code snippets, projects, and videos for relevant information. The first source of information for SharePoint has always been Google. (With SharePoint you need all the help you can get!! God bless you Google!)

Recently, I published an article outlining sources of free information on both YouTube and surprisingly enough, Microsoft: Free YouTube and Microsoft Videos - SharePoint Pro: By Admins, Devs, Industry Observers Blog.

With all this free information available on the internet, why would anyone want to pay for information?

I’m glad you asked! (My, aren’t we perceptive?)

The answer stems from a human need for a more structured framework for exploring a given technology or discipline: people need mental pegs and hooks to hang bits and pieces of knowledge. These serve as references or compasses.

Good courses, good instructors, and good books provide solid reference points to understand a given topic. They are also something we can come back to—since we never grasp a subject and all its implications in entirety. Exercises and labs help to strengthen fragile concepts into something more robust: something we can play with and build on. This fosters a level of success in a technology or discipline and creates a framework to add more knowledge.

Using books and video courses with exercises, labs and a curriculum help me to organize my own thoughts and actualize some of the information which is presented. I’m not even opposed to paying for an occasional online or classroom course with an instructor to shore up some loose ends and field questions. (A luxury to be sure.)

There are many good educational sights on the web. The one that I have actively investigated in the last two years are:, and Safari Online. Being a working stiff with a finite amount of funds and time, these are the ones I have explored that I can evaluate meaningfully. Why not start with the best:

(No this is not a paid commercial—I wish it were—have you priced root canals lately—I’m on 14—got to stop at 28 right?—Please God!!.)

Last year, I explored a free Course that Pluralsight offered on the web and I was hooked. The course had excellent video content, a good lab, and an excellent instructor. I couldn’t wait to apply part of my company’s educational benefit/allowance.


Fortunately for me, my employer’s plan covered the “Annual Plus” subscription of $499 which adds the labs, demos, and assessments.


What I have enjoyed are professional courses taught by elite instructors, many of whom are Microsoft MVP’s or prominent authors: Fritz Onion, Sahil Malik, Robert Cain, Dan Wahlin, David Chappell, John Pappa, Kate Gregory, Rob Windsor, Scott Allen. (This is only a partial listing of instructors for the courses I have taken.)

The “Plus” subscription adds exercise files (labs and demos), plus assessments (before and after—not yet available on all courses-but on many), certificates and offline viewing.

The following is a print-out of some of the assessments:


But wait there’s more: Pluralsight just added Critical Path Training to its contributors making it arguably the best offering of SharePoint Courses on the net. With Critical Path Training, the top contributors to SharePoint Education (best of the best): Ted Pattison and Andrew Connell join an already stellar line-up of instructors.

With Critical Path Training, Pluralsight hit critical mass in SharePoint 2007, 2010 and 2013.


The following shows the current offering of 48 SharePoint Courses with the addition of Critical Path Training:




Date Added

PowerPivot for SharePoint 2010 - System Setup

Robert Cain


25 Apr 2011

SharePoint 2007 Developer Ramp-Up - Part 1

David Mann


13 Sep 2012

SharePoint 2007 Features and Solutions by Example

Dan Wahlin


12 Nov 2009

SharePoint 2007 Fundamentals for Developers

Onion , Malik


29 Jun 2010

SharePoint 2007 Tutorial for Site Administrators

Janis Hall


24 Mar 2010

SharePoint 2010 Branding for Web Designers Fundamentals

Ted Pattison


13 Sep 2012

SharePoint 2010 Developer Ramp-Up - Part 1

Pattison , Connell


13 Sep 2012

SharePoint 2010 Document/Meeting Workspaces for End Users

Wendy Henry


13 Sep 2012

SharePoint 2010 Fundamentals

Rob Windsor


21 Feb 2011

SharePoint 2010 Introduction for End Users

Wendy Henry


13 Sep 2012

SharePoint 2010 Lists & Libraries for End Users

Wendy Henry


13 Sep 2012

SharePoint 2010 Managing Sites & Site Collections

Wendy Henry


13 Sep 2012

SharePoint 2010 No-Code Customizations for Power Users

Andrew Connell


13 Sep 2012

SharePoint 2010 Personalizing SharePoint for End Users

Wendy Henry


13 Sep 2012

SharePoint 2010 Social Networking for End Users

Wendy Henry


13 Sep 2012

SharePoint 2007 Developer Ramp-Up - Part 2

David Mann


13 Sep 2012

SharePoint 2007 Developer Ramp-Up - Part 3

David Mann


13 Sep 2012

SharePoint 2007 Developer Ramp-Up - Part 4

David Mann


13 Sep 2012

SharePoint 2007 Developer Ramp-Up - Part 5

David Mann


13 Sep 2012

SharePoint 2007 Developer Ramp-Up - Part 6

David Mann


13 Sep 2012

SharePoint 2007 Developer Ramp-Up - Part 7

David Mann


13 Sep 2012

SharePoint 2007 Developer Ramp-Up - Part 8

David Mann


13 Sep 2012

SharePoint 2007 Services Client Programming

Sahil Malik


5 Jul 2010

SharePoint 2007: Business Services

Sahil Malik , et al.


20 Jul 2010

SharePoint 2010 Administrator Ramp-Up - Part 1

Ted Pattison


13 Sep 2012

SharePoint 2010 Administrator Ramp-Up - Part 2

Ted Pattison


13 Sep 2012

SharePoint 2010 Administrator Ramp-Up - Part 3

Ted Pattison


13 Sep 2012

SharePoint 2010 Administrator Ramp-Up - Part 4

Ted Pattison


13 Sep 2012

SharePoint 2010 Administrator Ramp-Up - Part 5

Ted Pattison


13 Sep 2012

SharePoint 2010 Administrator Ramp-Up - Part 6

Ted Pattison


13 Sep 2012

SharePoint 2010 Administrator Ramp-Up - Part 7

Ted Pattison


13 Sep 2012

SharePoint 2010 Administrator Ramp-Up - Part 8

Ted Pattison


13 Sep 2012

SharePoint 2010 Advanced Branding for Web Designers

Ted Pattison


13 Sep 2012

SharePoint 2010 Basics

Sahil Malik


27 Aug 2010

SharePoint 2010 Branding a WCM Site for Web Designers

Ted Pattison


13 Sep 2012

SharePoint 2010 Developer Ramp-Up - Part 2

Connell , Pattison


13 Sep 2012

SharePoint 2010 Developer Ramp-Up - Part 3

Connell , Pattison


13 Sep 2012

SharePoint 2010 Developer Ramp-Up - Part 4

Andrew Connell


13 Sep 2012

SharePoint 2010 Developer Ramp-Up - Part 5

Andrew Connell


13 Sep 2012

SharePoint 2010 Developer Ramp-Up - Part 6

Connell , Pattison


13 Sep 2012

SharePoint 2010 Development

Sahil Malik


24 Sep 2010

SharePoint 2010 Lists and Libraries for Developers

Rob Windsor


18 Jul 2011

SharePoint 2010 Master Pages for Web Designers

Ted Pattison


13 Sep 2012

SharePoint 2010 Security

Sahil Malik


5 Oct 2011

SharePoint 2010 Web Part Development

Rob Windsor


6 Aug 2012

SharePoint Development with the Client Side Object Model (CSOM) and REST API

Windsor , Malik


24 Sep 2010

SharePoint 2010 Security Part 2

Sahil Malik


8 May 2012

But wait there’s more: For you MSDN Folks: Pluralsight has a deal with MSDN subscribers for a free Pluralsight Starter subscription (Not the full Monty—but definitely not decaf.).

Also Pluralsight has a 10-day trial subscription details of which can be found on their support page: Pluralsight Support and Feedback.

Also check out the free offering at the following link: Free Courses | the pluralsight blog.


So many courses—so little time—well maybe I can give up work. (Just kidding boss! The check comes in handy feeding the wife and shih tzu!—nums aren’t cheap—priced dental chews lately!)

So what could be better?

(Yes SharePoint Grasshopper, it is not all it could be or even will be.) Just start with the lack-luster site layouts: they are cumbersome and laborious. Although, Pluralsight offers a lot of jQuery courses, they haven’t spiffed (70’s and 80’s die hard) up the interface with awesome (90’s) jQuery UI. Of course, I can endure any interface for great videos and labs.

Before Critical Path Training got added to their arsenal in September, I felt their SharePoint offering needed some beefing up in the areas of SharePoint Administration, SharePoint Designer and SharePoint Branding. This has been rectified in spades with the addition of Critical Path Training.

Only three more things are on my wish list (for now):

  1. The first involves having printable course material—reading from the screen gets old at night. (Forgive me Rain Forests! Please include in my transgressions the number of copies I’ve printed to revise this article.)
  2. The second would be advanced coverage of SharePoint PowerShell for both developers and admins. Critical Path Training added a SharePoint PowerShell Course but the course has training wheels. Not a bad course for a beginner—but not quite at the Don Jones/Gary LaPointe power user or administrator level.
  3. The third would be a SharePoint jQuery Course. This would feature specific exercises in jQuery, CSS, HTML5 and Branding at the level of Heather Solomon and Dustin Miller Courses - The SharePoint Experience.

But overall Three thumbs-up for the site—or two thumbs and a paw (I have an opinionated Shih tzu -eleven pounds of solid will-power).



When I die, my lovely wife will have to shut off a computer, tablet, iPod or close a book. I love learning. Just drop me in a random profession and I get interested—this one happens to be SharePoint so be it. Even though the only way to make SharePoint fly is by FedEx or UPS—I’m intrigued by its innards and rely on online materials to supplement what I understand.

From my vantage point, is the best deal and long-term bargain for the serious SharePoint Developer. For those with less budget and not otherwise subsidized, the basic offering on should suffice (I hope to cover them in a later article.). Safari Online, not an education bargain in this author’s opinion.

Happy SharePointing

SharePoint Web Parts with jQuery and the Web ToolPart


As a developer, the question of where to begin looms heavy; especially, when what is supposed to logically work doesn’t. Then, there are times a solution is in search of a problem. Both seemed to happen with this project:

I’ve been a fan of jQuery for some time as a way to tame SharePoint without going into the bowels of the beast. Last year, the Google Search Engine and I pieced together a solution for the display of Gantt Charts that really amazed me with jQuery’s ad hoc formatting capability of complex SharePoint Screens. I had been wondering how I could use jQuery in the Tool Part of a Web Part for validation and highlighting. Then a stubborn problem with two validators synching events in C# ate my Friday and most of Saturday.

The project that piqued my jQuery interest is a simple customizable banner. The code attached to this article is even a bit simpler than was required by the specifications.

(Don’t you hate it when the project is so complex you forget what the author is trying to demo!!)

Figure 1 Simple Configurable Banner - Web part Edit Mode

The Web Part project is a simple banner with four fields: Organization Name, Leader Name, Leader Title, and Banner Color. Only Organization Name and Banner Color are required. A default color is specified for Banner Color. The specifications require the two fields, Leader Name and Leader Title, to be either both filled with text or both empty.

(Not a simple Required Validator.)

My first thoughts were to have required validators for both the Leader Name and Leader Title and use the Text Changed Event to deactivate and activate selected validators. After repeatedly attaching to the processes and stepping through the debugger, the events never fired predictably. I also toggled the Autopostback settings for the text fields but to no avail.

Next I tried a custom validator with another server validation routine—but had no more luck.

Finally in desperation ( 10-12 hours on two simple validators), I began to experiment with Clientside Validation with jQuery.

An initial question I had was: “Would jQuery work with controls not always visible like those displayed in the ToolPart?”—Not to worry.

[The ToolPart is a separate class that provides a mechanism for creating a more elaborate display and input for the fields on the Web Part. It is useful for adding more complex controls such as list boxes, radio buttons and textboxes with validators for input to Web Part. The ToolPart also lends itself to adding more complex routines such as those for data retrieval and binding. My first excursion with the ToolPart came from downloaded code from Meron Fridman’s Blog ].

Essential Tools

Most of my development is done on Internet Explorer because it is a standard in my work environment. (At work we use IE7 and at home I use IE9.) Therefore, one of the tools helping me identify parts of the DOM and rendered structures on the client web page are the IE Developer Tools. These can normally be accessed in IE8 or IE9 by pressing the F12 key. In IE7, I use the Internet Explorer Developer Tool Bar—but this has to be downloaded and installed.

The following shows the IE Developer Tools from my home machine pinned to the Browser Display. Note the “Leader Name:” Textbox has been selected by using the white pointer at the lower left within the Developer Tools.

Also note the entire control name assigned by this program to make it unique is

"ctl00_MSOTlPn_EditorZone_Edit0g_ef3ed315_2ae3_431e_8d5d_f1b1bcbdd022_txtLeaderName". The Web Part uses a jQuery Selector that matches the only end of the id, “$(‘input[id $="txtLeaderName"]’)”—a bit less cumbersome.

Figure 2 IE Developer Tools with Input Highlighted

Getting Started with jQuery and Web Parts?

Another useful tool to begin delving into SharePoint before transforming your logic to compiled code is the SharePoint Content Editor Web Part. This fits the bill nicely by letting you experiment with jQuery Statements directly on your SharePoint Page.

This is a standard out of the box Web Part that comes with SharePoint that can be used on any Web Part page to add scripts, CSS and HTML content to an existing page.

[Before describing the jQuery Statements, my assumptions are that jQuery Libraries are available within your SharePoint Environment. There are various techniques of making them available. In my SharePoint Installation jQuery is enabled through delegate web controls added to the masterpage. These libraries were added via a SharePoint Feature deployed to the Web Application.

Another method of incorporating jQuery into SharePoint can be found in the CodePlex article on SharePoint SPItemsRotator specifically on a page entitled “Setup the SharePoint site for SPItemsRotator” by Anouvel.

One additional method can be to embed the library into the project, the same way that I will demonstrate adding my basic.css or documentready.js script. If you do it this way, I recommend the compressed versions since you probably will not be debugging the library and the compressed code will execute faster.]

The next figure shows the Source Editor Display of a Content Editor Web Part added to the page that contains my Web Part. This was used to attack the project with jQuery.

Figure 3 Content Web Editor Source Editor Display

Yellow is Good!!!

I set the input fields to yellow just to show my prowess over the DOM (Document Object Model).

Seriously, it is helpful to show jQuery is still functioning while honing your code manipulations. The problem I encounter with JavaScript/jQuery is when I break the code by a syntax error, everything stops working. Since there are no compile errors, I am sometimes unaware the code has stopped working. By including a line like selecting the input controls and turning them yellow, this allows me to know that my last manipulation hasn’t broke the bank and the script is still rendering intact.

The jQuery Script-documentready.js

The logic behind the script is as follows:

  1. Create two function to set and reset a hidden field and assign them to variables: $setvar and $setvarBlank
  2. Use the first function $setvar to initially fill the hidden field with “Filled”.
    (Guess what $setvarBlank does?).
  3. Create a function to check the fields and assign it to a variable called checkfields.
    1. In this function get values from each of the text boxes ending with txtLeaderName and txtLeaderTitle.
    2. Then perform the following checks:
      1. Check if both fields are blank—if so reset the hidden field using $setvar.
      2. Check if both fields are filled—if so reset the hidden field using $setvar.
      3. Check if only one of the fields is filled—if so reset the hidden field using $setvarBlank
  4. Finally assign blur functions to the jQuery Expression for the two fields ending with txtLeaderName and txtLeaderTitle. The blur functions will perform checkfields.
  5. [ A couple of notes: The “Hidden Text” field, identified by its title, must be visible it can be populated with a value then rehidden so the user won’t interact with the field this the chained command:

    $(‘input[title="Hidden Text"]’).show().css("background-color",’yellow’).attr(‘value’,’Filled’).hide();

When working with the field, you may want to leave it unhidden until you’ve finished your code machinations and testing.

Also note when dealing with server text controls, use “value” attribute—not “Text”.

It is useful to write the jQuery in an editor such as NotePad++© where you can match up the gazillion one hundred and fifty parenthesis and curly braces in you JavaScript/jQuery.]

Figure 4 jQuery DocumentReady.js in NotePad++©

Program Structure and Hookup

The following figure shows the overall WSPBuilder Project and the structure for the SimpleConfigurableBanner.cs:

Figure 5 Basic Project Outline and SimpleConfigurableBanner structure

The project was created on a SharePoint 2007 machine on Windows Server 2008 using Visual Studio 2008 on an Oracle Virtual Box using WSPBuilder. (Make sure you are using 1.06 Version of WSPBuilder with SharePoint 2007. After initial loading and renaming the WSPBuilder Template, a WSPBuilder Item entitled “Web Part without Feature”—which I name “SimpleConfigurableBanner”:

Figure 6 WSPBuilder Item Added-Web Part Without Feature

Three sections of the Web Part require a little explanation. The first is the “public override ToolPart[] GetToolParts” Routine. I did not want the standard SharePoint Web Part Configuration data for Title, Width, Chrome, etc. to show up so note the commented line before the actual line used. I simply did not use the “base.GetToolParts()” when adding my ToolPart Generic Arrays.

The second point of note in the SimpleConfigurableBanner.cs is the OnLoad Routine:

Figure 7 OnLoad Routine of SimpleConfigurableBanner.cs

This is where Chrome is turned off and CSS Script is Registered and Loaded. The next screen shows the relationship of CSS for basic.css with the Assembly Module and the Constants.cs file.

Figure 8 CSS Relationships -Constants.cs, Assembly - Embedded Resource

Also note the property for basic.css must be set to “Embedded Resource”. All of these just noted are also true for the documentready.js: defined constant, entry in the Assembly, and specified as an “Embedded Resource”. Also I place the js and css files in a separate folder called Resources, which is referenced in Constants.cs. (The above relationships were demonstrated to me by BJ Herrington, SharePoint Guru)

The third point of note in the SimpleConfigurableBanner.cs is the Render Routine:

Figure 9 Render Routine of SimpleConfigurableBanner.cs

When working with the ToolPart and variables within the C# Program Web Part, I’ve observed that if I use the “OnLoad” Event to do build my structures and assign variables from the Web Part, I invariably have to hit the “Apply” button twice to see my property changes happen. It seems the Apply event happens after the OnLoad event. If the code is placed in the Render Event, then it is updated immediately after the “Apply” button is executed.

Finally we reach the ToolPart called ToolAcc.cs. The basic structure is outlined in the next screen:

Figure 10 ToolPart - ToolPartAcc.cs Basic Structure

The CreateChildControls and buildGeneralSectionControl were probably borrowed from the first tool part I referenced: Essentially, they set up the basic panel and build the html around the customized table that the ToolPart will create with the declared controls listed in the basic structure.

Figure 11 ToolPart - ToolPartAcc.cs – Standard Routines

Cut and Paste are your Friends!!

The buildItemLimitControl routine is where the controls get built and placed in a table. Since the code for this project is included and there is nothing novel in the code, I decided on a partial listing of this routine:

Figure 12 buildItemLimitControl - partial listing

Yes, really the last screen showing the OnLoad and the ApplyChanges Routine for the ToolPart.

Figure 13 OnLoad and ApplyChanges Routine for the ToolPart

Now you have everything I think I know about the SimpleConfigurableBanner SharePoint Web Part. As programmers don’t you document all of your projects like this.

Er…What is documentation?

Click here to download the SimpleConfigurableBanner