Building a Non-SharePoint Site for a Change – Part Deux

I’ve had a few more thoughts from working on my wife’s Web site (now publicly available at http://koochiku.com).  Being a Webmaster should not be dismissed as a pedestrian task!

Accessibility

Not all sites have to be fully accessible as defined by the various regulations and guidelines that exist out there.  (Section 508 and WCAG 1.0 Priority 2 and 3 in the US, etc.).  That doesn’t mean that you should totally ignore the rules.  It’s worth doing a quick scan to see where your site might have issues.  One good scanner is freely available from Hi Software at http://www.cynthiasays.com/.  You can decide which rules you want to pay attention to.  Keep in mind that things like alt tags for images aren’t just useful for screen readers, but also for regular users who want to get some sort of descriptive text for the image to understand what you’re showing them.  Some of these rules have a lot of common sense behind them as well as the accessibility goals.

Search Engine Optimization

I had a “what a bonehead” moment when I went to create a Sitemap for Google for the site.  I had written this neato little JavaScript menu generator for the site (mainly because I thought it would be fun – there are umpteen of these things out there for free).  When I used one of the free Sitemap generator sites (http://www.xml-sitemaps.com/), I realized that, by putting all of the logic into JavaScript, the search engines weren’t going to “see” most of the pages.  Oops.  I backed off on my neato menu generator and instead embedded the HTML in the pages.  Whiz, bang, the next scan went just the way I wanted it to, “seeing” all of the pages that I wanted the search engines to index.

And speaking of SEO, I’ve posted before about some steps that you can take to get your blog noticed.  The same steps work for pretty much any site.  Here are a few of the links you’ll definitely want to visit:

Once you have your Sitemap in place, you can also submit your URL to Ask.com by going to this URL:

http://submissions.ask.com/ping?sitemap=http%3A//[site name]/[sitemap path]

And by no means should you fall for the “We’ll get your site indexed by Google and others in 7 days for $29.99/month” trap.  The search engines are going to do their thing regardless – it’s what they are out there for.  If you submit your site to the links above, you’ll give yourself a leg up, maybe accelerating the process a tad, and it won’t cost you a dime.

Project and List Properties Available from CAML

When you are building a DVWP in SharePoint, there are some project (Web site) and list properties that are available to you directly from CAML that aren’t well-documented, which you can use if you request them directly.  For instance, if you add the following to your CAML <ListProperty Name=”Title” /><ProjectProperty Name=”Title” />, the titles of the project and list are available to you:

<xsl:value-of select=”@ListProperty.Title” />
<xsl:value-of select=”@ProjectProperty.Title” />

These properties are especially useful when you build CrossList DVWPs in order to build up links to items and to display information about them on the page.

Here’s an actual example from a project I worked on:

&lt;View&gt;&lt;Webs Scope="SiteCollection"&gt;&lt;/Webs&gt;&lt;Lists ServerTemplate="104"&gt;&lt;/Lists&gt;&lt;Query/&gt;&lt;ViewFields&gt;&lt;ProjectProperty Name="Title"/&gt;&lt;FieldRef Name="ID"/&gt;&lt;FieldRef Name="Title"/&gt;&lt;FieldRef Name="Body"/&gt;&lt;FieldRef Name="FileDirRef"/&gt;&lt;FieldRef Name="Created"/&gt;&lt;FieldRef Name="Author"/&gt;&lt;FieldRef Name="Expires"/&gt;&lt;FieldRef Name="PermMask"/&gt;&lt;FieldRef Name="ShowOnRootPage"/&gt;&lt;/ViewFields&gt;&lt;/View&gt;

and again in “English”:

<View>
  <Webs Scope="SiteCollection"></Webs>
  <Lists ServerTemplate="104"></Lists>
  <Query/>
  <ViewFields>
    <ProjectProperty Name="Title"/>
    <FieldRef Name="ID"/>
    <FieldRef Name="Title"/>
    <FieldRef Name="Body"/>
    <FieldRef Name="FileDirRef"/>
    <FieldRef Name="Created"/>
    <FieldRef Name="Author"/>
    <FieldRef Name="Expires"/>
    <FieldRef Name="PermMask"/>
    <FieldRef Name="ShowOnRootPage"/>
  </ViewFields>
</View>

ProjectProperty.Property Value
A string that contains the name of a project property listed in the following table.

Name Value
BlogCategoryTitle Category of the current post item.
BlogPostTitle Title of the current post item.
Description Description of the current Web site.
RecycleBinEnabled 1 if the recycle bin is enabled; otherwise, 0.
SiteOwnerName User name of the owner for the current site collection.
SiteUrl Full URL of the current site collection.
Title Title of the current Web site.
Url Full URL of the current Web site.

See ProjectProperty.Property Property for the original MSDN article.

ListProperty.Property Value
A string that contains the name of a property listed in the following table.

Name Value
Created Date and time the list was created.
DefaultViewUrl Server-relative URL of the default list view.
Description Description of the list.
EnableSyndication true if RSS syndication is enabled for the list; otherwise, false.
ItemCount Number of items in the list.
LinkTitle Title linked to list.
MajorVersionLimit For a document library that uses version control with major versions only, maximum number of major versions allowed for items.
MajorWithMinorVersionsLimit For a document library that uses version control with both major and minor versions, maximum number of major versions allowed for items.
RelativeFolderPath Site-relative URL for the list.
Title Title of the list.
ViewSelector View selector with links to views for the list.

See ListProperty.Property Property for the original MSDN article.

Today’s ‘Optimize Your SharePoint Investment’ from Vitale, Caturano

Focus On Series: Optimize Your SharePoint Investment

I want to thank my ex-colleagues at Vitale, Caturano for a great event today in Waltham at Microsoft’s offices.  There were some good presentations about the use of Sharepoint in the enterprise, about some of the vendor offerings in the space, and specific stories about how SharePoint use has evolved by Andy Kawa from Goodwin Procter LLP and by Shelley Norton from Children’s Hospital Boston.

Probably the most interesting presentation to me (not to diminish the other presentations at all) was the one from Jeff Fried of FAST Search.  FAST was acquired last April by Microsoft, and is now their high-end search offering.  Jeff showed some very cool demos of FAST in action as well as talking about how FAST can effectively slide under SharePoint to provide what looked to me like “uber-search” capabilities.  For details on how this might work for you, see Microsoft Unveils New Enterprise Search Road Map: Strategy features FAST Search for SharePoint and FAST Search for Internet Business from Microsoft.

Building a Non-SharePoint Site for a Change

It’s been a quiet week here in Lake Wobegon…Oh, wait, that’s not my tagline.  But I have been quiet lately, busy with a number of things.  One of those things has been building a Web site for my wife’s business.  It’s been fun to work outside of SharePoint for a while.  I’ve learned a few things in this process, and I thought I’d share some of them.

If you’d like to take a look, go to http://koochiku.com/collection.aspx.  It’s not public yet, so if you poke around, consider yourself an alpha tester.  Do let me know if you see anything out of whack.  We’ve tested with IE7/8, Firefox, and Safari, but it’s hard to hit all the variations.  A lot of the images are just placeholders, quite a bit of the text isn’t finalized, etc.

HostingDiscountASP.NET - ASP.NET, SQL, ASP hosting for less

I decided to go with DiscountASP.net.  Hosting is absolutely a commodity these days, but each time I look to host something, I look around to see what’s new out there.  I was impressed with DiscountASP’s support of the latest and greatest from Microsoft’s 2008 platforms, IIS 7, etc.  So far, so good.  Setup was a breeze, and their customer service (a couple of questions about FTP access) has been extremely fast and accurate.  More importantly, I didn’t get the attitude that I’ve frequently seen from other providers.

Image Manipulation

GIMP Plugin Registry

A former colleague of mine, Alan Kelleher at Vitale, Caturano, had pointed me to Gimp last fall, and I hadn’t really had much occasion to use it.  I’ve found it to be extremely feature rich and as easy to use as any of the high-end graphics programs can be, given what they allow you to accomplish.   If you need to do some image work and can’t fork over the bucks for one of the name brands (or don’t do enough to justify it, like me), Gimp is the way to go.

Forms

I haven’t had to do much with forms outside SharePoint in a long time!  I found this MSDN article, Validating ASP.NET Server Controls by Bill Evjen (as old as it is) to be of great help for the validation piece.  I’m not doing anything fancy, just a couple of simple “contact us” type forms, but this article helped me to brush aside the cobwebs.  A little validation code, some VB Script, and away we go.

Metrics

For the money (none!), you just can’t beat Google Analytics.  With a few minutes of setup, and by dropping some JavaScript into your pages (I’m using a Dynamic Web Template in SharePoint Designer, so one page), you’re wired up and in business.  I haven’t seen anything as complete and full featured except in the enterprise class (read: $$$) tools out there.

I think these are the big bits.  More in another post if I think of anything else…

Error When Trying to Delete a Master Page: “Server error: This item cannot be deleted because it is still referenced by other pages.”

I’ve had this happen often and I’ve usually just left the unused master pages, since they aren’t really hurting anything.  Today I finally decided to try to see if I could get rid of a pile of old copies of master pages I had lying around, and I found this Microsoft article which explains a workaround.  Turns out it’s a “known issue”.  Once you’ve gone through these steps, you ought to be able to delete the master page.  However, I’ve found that this workaround doesn’t always work in Site Collections with variations enabled.

When you try to delete a master page file from the Master Page and Page Layout Gallery on the Site Settings page in Microsoft Office SharePoint Server 2007, you receive the following error message:

This item cannot be deleted because it is still referenced by other pages.

This error message occurs even when the master page file is not associated with a SharePoint Server 2007 site.To work around this problem, mark the master file as hidden so that the master file does not appear as a selection when you create a new site. To do this, follow these steps:

  1. Use an account that has administrative permissions to log on to the Web application that is hosted on the SharePoint Server 2007 server.
  2. Click Site Actions, click Site Settings, and then click Modify All Site Settings.
  3. Under Galleries, click Master Page and Page Layout Gallery.
  4. Click the list next to the master file that you want to hide, and then click Edit Properties.
  5. On the list next to Content Type, click Page Layout.
  6. Click to select the check box next to Hidden Page, and then click OK.
  7. Click the list next to the master file, and then click Check In.
  8. On the Check In page, select the options that you want, and then click OK.
  9. Click the list next to the master file, and then click Publish a Major Version.
  10. On the Publish a Major Version page, enter a comment, and then click OK.
  11. Click the list next to the master file, and then click Approve/reject.
  12. Next to Approval Status, click Approved, and then click OK to approve the changes.