6 Things that you think will work in SharePoint but doesnt


  1. When you have a Gantt view of the Task List, Web part connections are unavailable.  Hence you cant filter a Gantt View using the Filter Web Parts
  2. DateTime columns cannot be used for Grouping in the Content Query Web Part out of the box
  3. You cannot use the PortalSiteMapProvider to retrieve Navigation items from another site collection
  4. If you have a Date Column in a List, it cannot be used as a Lookup Column on another List
  5. If you activate a Feature on a site and then save it as a Site template and create a new site from this template, the FeatureActivated code doesnt fire
  6. You cannot write back to a List from Excel 2007.  This was available in Excel 2003. You will need Access for writing back to a List from Office (Update: Refer to WorkerThread’s link below for an add-in)

If you have any more of these oddities, please post in the comments and I will update this list

Edit: When you use the Content Migration APIs to copy lists and libraries from one farm to another, person fields do not copy over correctly

Advertisements

Create Publishing Pages on custom Document Libraries in SharePoint


Have you ever wanted to create pages in your custom document libraries in MOSS 2007 ?

When you click on Create Page under Site Actions, it always defaults to the Pages library. Well not any more.

Here is a great post on how to work around that limitation.

http://blogs.msdn.com/syedi/archive/2008/07/18/why-should-one-save-publishing-pages-in-pages-list-always-in-moss-bend-it.aspx

Some things to note after making these changes

  1. Import the Microsoft.SharePoint.Publishing namespace in your custom page
  2. Enable the Page Content Type for the document library for it to show up in the dropdown list

Office 2007 Integration with SharePoint


One of the frequent questions we encounter from our customers is

“Why do I need Office 2007 and how does it integrate with MOSS 2007”

Here is a great post on the  integration of the different Office applications with SharePoint

http://blogs.msdn.com/brittog/archive/2007/02/16/wht-you-get-with-office-2007.aspx

MOSS 2007 Employee Directory web part using Search and Data View web parts


SharePoint Employee Directory web part

One of the frequent requests from my customers in a MOSS 2007 implementation is an employee directory webpart. During the pre-sales cycle they are excited to see the Active Directory integration and the first question they ask is ” Can this replace our existing employee directory out of the box ?”. Unfortunately there are no out of the box web parts at this time to display an employee directory from the user profiles.

Bamboo Solutions(Link) has a great package that provides some of these webparts. However if you don’t need the robust suite from Bamboo, the same can be built using MOSS 2007 Search and the Data View webpart. Let us get started on building the employee directory webpart in this article.

To build an employee directory web part, you need the following

  • The free SharePoint Search Query Tool – refer to this article for download instructions
  • SharePoint Designer 2007 – Click here to download a free trial
  • Information on how to build Data View Web Parts – there is a great white paper here

First, we need to retrieve the properties from the user profile. Since the user profiles are available under the people scope, we will use the SharePoint search query tool to build our people search query. For this article, we will retrieve the “preferredname”, “firstname”. “lastname”, “workemail”,”picturelurl”. Run the Sharepoint search query tool. Since we will be connecting to a MOSS 2007 instance select the MOSS option and enter your server web service URL ( http://<servername>/_vti_bin/search.asmx)

Now we build a SQL search query to retrieve the properties

“select preferredname,firstname,lastname,workemail,workphone,pictureurl,Title,Description,write,Rank,Size, from scope() where “scope” = ‘People’ order by preferredname ASC”

Notice the double quotes around the scope. I am not sure why this is needed but it doesn’t work without the quotes. Enter the number of search results you will need by setting the “Count” field in the query tool. Once the SQL Query is in place click “Build Request XML” . This will build an XML fragment. Once the XML fragment is built, Click on QueryEx to ensure that you are getting the desired results. Remember to click build request XML everytime you make a change to the query.

The screenshot shows a the final results of this exercise. We will need the XML generated by the Build Request XML action. Copy the XML and paste into Notepad and remove all linebreaks in the XML. Ensure that the entire XML is available on a single line within Notepad. Here is how our XML query looks

<QueryPacket xmlns=”urn:Microsoft.Search.Query”>Query> <SupportedFormats><Format>urn:Microsoft.Search.Response.Document:Document</Format></SupportedFormats> <Context> <QueryText type=”MSSQLFT” language=”en-us”>select preferredname, firstname, lastname, workemail, workphone, Title,Path, pictureurl, description, write, rank, size from scope() where “scope”= ‘People’ and firstname != ” order by preferredname asc</QueryText> </Context> <Range> <StartAt>1</StartAt> <Count>1000</Count> </Range> <EnableStemming>true</EnableStemming> <TrimDuplicates>true</TrimDuplicates> <IgnoreAllNoiseQuery>true</IgnoreAllNoiseQuery> <ImplicitAndBehavior>true</ImplicitAndBehavior> <IncludeRelevanceResults>true</IncludeRelevanceResults> <IncludeSpecialTermResults>true</IncludeSpecialTermResults> <IncludeHighConfidenceResults>true</IncludeHighConfidenceResults> </Query></QueryPacket>

If you need to retrieve additional properties, add them to the SQL query. To refer to the fieldnames for the properties, click on

Central Admin -> Shared Service Provider -> User Profiles and Properties -> View Profile Properties

Click Edit on the property that you need and get the property name. In this case I needed the Profile Picture. The name of the property is PictureURL, which is what we need in the query

Now that we have our XML ready, this is time for us to build the web part. We will be using the Data View webpart available within SharePoint Designer for building the UI

The white paper linked in this article above is a must read for building Data View web parts.

First we will create a web part page to host our web part. Click Site Actions-> Create and select web part page to create a new web part page. Here we have used the Full Page Vertical option and named our page “EmployeeDirectory.aspx”. Now that we have our page ready we build the webpart using SharePoint Designer. Open the site within SharePoint designer and navigate to the web part page

Open the site within SharePoint Designer

Once the site is opened, click on the document library where the web part page was created. In our case it is Shared Documents.

Click on the EmployeeDirectory.aspx file to edit

Now we will connect to the MOSS web service and use the XML query to retrieve the user profiles. In the Data Source Library options in the right toolbar, select XML Web services and connect to a web service. Enter the location of the web service, which will be the same as what we entered in the Query tool and click “Connect”. Change the “Operation” to “QueryEx”. All other options can be left at the defaults.

Now we will use the Data View webpart to display these values. Click on the Web Part zone which says “Insert a Web Part” and insert a Data View Web Part by selecting Data View from the menu bar and “insert data view”. Your screen should look like this

The queryXML needs to be modified and our XML fragment from Part-1 needs to be used here. Click on queryXml and click modify and enter the search query from the notepad file. If your query has any line breaks, then your XML will not be copied over correctly. Ensure that your XML ends with a </QueryPacket>. If it does not, then you have some line breaks in your XML fragment. You can now switch to the General tab and set an appropriate name for this connection and set the authentication to Windows in the Login tab.

Click on the connection drop down and click Show Data to view the results of the search query during design time

We can see the fields returned from the web service as well as the data in those fields. There are 115 records returned in this case. Now you can drag and drop these fields on to the data view web part to create your employee directory. The DataView white paper provides information about the different options for formatting and working with the web part. In the code view in SharePoint Designer, search for <XSL>. The entire stylesheet for displaying your data is available within the <XSL></XSL> tags. You can develop the stylesheet externally and include it within these tags. Just ensure that the propertynames in the XSLT tags shown below match the query from the web service.

<xsl:variable name=”fullname” select=”Title” /> <xsl:variable name=”url” select=”Path”/> <xsl:variable name=”email” select=”WorkEmail”/> <xsl:variable name=”pictureurl” select=”PictureURL”/>. In the example above select=”Title” will need to be modified as select=”TITLE” and so on for the other properties.

Our web part is now ready. Save the changes and preview your page.

Here is a great article on how to include the presence information. The presence information is embedded into the XSLT by adding an image with a call to the IMNRC function onload.

<img
border=0
valign=middle
height=12
width=12


src=/_layouts/images/imnhdr.gif
onload=IMNRC(‘{$email}’)


id={generate-id()}
ShowOfflinePawn= 1 />

Click here for the web part. Search for SelectUrl and WsdlPath attributes and replace the links to match your environment

Click here if you just need the XSL.

Any changes to the profile, will be available upon the next indexer crawl, which is set up in the central admin console.

Update:

See Gavin’s post below for resizing the image

%d bloggers like this: