rss

Sharepointology

Sharepointology is the study and handling of Microsoft Office SharePoint Server

Online SharePoint 2007 Development Training

Posted 08Nov08 by Erwin in Development, General having no comments »

A few days ago Microsoft’s Ramp Up program launched a new track: SharePoint for Developers, Part I.

Microsoft Ramp Up is a completely free, online, community-based program that only requires a Live ID to sign up and dig in. It connects you with other professionals while you’re building your skills.

On Ramp Up you can review the content and advance through the learning track at your own pace. At the end of the each level, you take an assessment to unlock the next level. Once you’ve completed the full learning track, you will have gained new skills integral to a successful developer.

Other tracks you can dig into are:

RSSIf you like this post then please consider subscribing to my full feed RSS. You can also subscribe by Email and have new posts sent directly to your inbox.

Change email address that Requests For Access get send to

Posted 20Oct08 by Erwin in Setup having 1 comment »

Whenever a user tries to access a page that he doesn’t have access to he get’s the following screen:
request access

At the bottom of the screen he can Request access. When he click’s the Request Access link he can enter a message that get’s emailed.

Reques Access Email

But where can you find/change the email address that get’s used to send these requests to?

When you are on a site, go to Site Settings and choose Advanced Permissions, click on the menu Settings and choose Access Requests. This will give you the email address used for requests from within that site.  Since you can grant access at Library and Item level, these Libraries and Items will inherit the setting from the site that they are on. You are not allowed to change the email address at those sub levels, but you can disable the feature on them (i.e. for a whole library disable the Request Access feature).

Customize the People Search Results – Part 2

Posted 12Oct08 by Erwin in Development having 7 comments »

In Customize the People Search Results – Part 1 we learned how to pimp the search results from looking something like this:

People Search Default Results

To something like this:

People Search New Results

In Part 2 we are going to learn how to add other fields (properties) to the Search results.

How do we do this?

Let’s first include the Mobile phone of a user into the XML list of results returned by the search service.

  • First you go to your People Search Page and execute a search on a certain name for wich you know you will find results.
  • On the results page you click on Site Actions / Edit page.
  • For the People Search Core Results web part you choose Modify Shared Web Part.

People Search Core Results Edit Web Part

  • Open the Results Query Options by pressing on the + sign in front of it.
  • Look up the Selected Columns field and press the [...] button and you’ll get this:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Columns>
<Column Name="AccountName"/>
<Column Name="UserProfile_GUID"/>
<Column Name="PreferredName"/>
<Column Name="JobTitle"/>
<Column Name="Department"/>
<Column Name="WorkPhone"/>
<Column Name="OfficeNumber"/>
<Column Name="Fax"/>
<Column Name="AboutMe"/>
<Column Name="PictureURL"/>
<Column Name="WorkEmail"/>
<Column Name="WebSite"/>
<Column Name="Path"/>
<Column Name="HitHighlightedSummary"/>
<Column Name="HitHighlightedProperties"/>
<Column Name="Responsibility"/>
<Column Name="Skills"/>
<Column Name="SipAddress"/>
</Columns>
</root>
  • Now you’ll be able to include new columns based on the columns you can reference from the user profile database. For example if you wanted to include a person’s mobile phone you’ll want to include <Column Name=”MobilePhone”/>. After you’ve done that the XML getting returned by the Search has the MobilePhone column in it.
  • Where do you find these column names? Go to your Central Administration, click Shared Services, then Search Settings and click Metadata property mappings.

Meta Data Property Mappings

  • You’ll find the column names in the column Property Name.

Metadata Property Mobilephone

Now we’ll have to change the XSLT to include the MobilePhone column as output.

  • Choose Modify Shared Web Part for the People Search Core Results web part. If you don’t know how to do this look up a few lines.
  • Just below Data View Properties you see a XSL Editor button. Press it.
  • Search for “Phone” and you’ll find a line containing  <xsl:with-param name=”phone” select=”workphone” />.
  • Copy that line and change the new line to  <xsl:with-param name=”mobile” select=”mobilephone” />.
  • Keep searching for “Phone” and you’ll find the following line <xsl:param name=”phone” />.
  • Copy it and change the new line to <xsl:param name=”mobile” />.
  • Search again and you’ll find:
<xsl:if test='string-length($phone) > 0'>
<tr>
<td><b>Telefoon nr: </b></td>
<td><xsl:value-of select="$phone" />  </td>
</tr>
</xsl:if>
  • Copy and change to:
<xsl:if test='string-length($mobile) > 0'>
<tr>
<td><b>Mobiel nr: </b></td>
<td><xsl:value-of select="$mobile" />  </td>
</tr>
</xsl:if>
  • Save it, publish the page and retry your Person Search and you’ll get something like this:

People Search New Results Mobilephone

Dropdown to change the View disappeared

Posted 19Sep08 by Erwin in General, Setup having 80 comments »

When you go to a document library or list in Sharepoint 2007, you see a dropdown in which you can select a different view or create a new view if you have the right permissions.

If you ever find yourself thinking “Where did the change the view dropdown go?”

Change view disappeared

Don’t worry, one of two things could have happened.

  1. You added a second document library webpart on your page, but this would be obvious because you would see two webparts, one with a dropdown and one without it.
  2. Your user (or yourself) -closed- the webpart and added it again, leaving the closed webpart on the page, but hidden. This one is harder to detect, because you only see the webpart without the dropdown.

Close webpart

How do you fix this?

In the first case there isn’t much of a problem, you -delete- the second webpart from the page or you leave it on there (but without the dropdown).

For the second case you’ll have to edit the page (Site Actions, Edit Page), press Add a Web Part. At the bottom of the dialog is a link “Advanced Web Part gallery and options“, click it. A side bar “Add Web Parts” appears. Below the “Select the collection you want to browse.” is a link called “Closed Web Parts“, when you click it the Web Part List with closed Web Parts appears. Select the Document Library Web Part and click the “Add” button on the bottom of the screen. The page will show the two Web Parts, -delete- the one without the dropdown and you’re back in business.

Why? A web part which shows a list is supposed to display only one view of the list at a time. But you can definitely change the view by modifying the shared web part properties.

Customize the People Search Results – Part 1

Posted 30Aug08 by Erwin in Development having 11 comments »

Out of the box:

First of all let’s start off with showing how the default People Search Results look like:

People Search Default Results

In my opinion not really something you can give to your users to work with. No labels, no design, no clear layout.

This article will try to show you how you can beautify these results a bit.

Preparation:

Let’s try and get ourselfs something to work with for starters. The list of results returned by the search service is in XML format and get’s transformed by using an XSLT. If we can get the XML before it gets translated by the XSLT we can use that XML as input for our custom XSLT.

How do we do this?

  • First you go to your People Search Page and execute a search on a certain name for wich you know you will find results.
  • On the results page you click on Site Actions / Edit page.
  • For the People Search Core Results web part you choose Modify Shared Web Part.

People Search Core Results Edit Web Part

  • Edit the XSL by pressing the XSL Editor button.
  • Save the existing source into a backup XSL file, you can use it later on.
  • Replace the existing XSL by the folowing code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:template match="/">
		<xmp><xsl:copy-of select="*"/></xmp>
	</xsl:template>
</xsl:stylesheet>
  • Save, press OK button on Properties of web part, choose Save and stop editing from the menu.
  • Retry your search and the results will look something like this:
<All_Results>
    <DummyResult>
      <Everyone />
    </DummyResult>
    <Result>
      <id>1</id>
      <accountname>MOSS\Sharepoint-Test</accountname>
      <userprofile_guid>07BEF018-AE22-495E-B8B5-0EF167B46C90</userprofile_guid>
      <preferredname>Sharepoint Test</preferredname>
      <jobtitle>Sharepoint Tester</jobtitle>
      <department>ICT</department>
      <workphone>+32 14 76 78 90</workphone>
      <officenumber>+32 14 76 45 67</officenumber>
      <aboutme></aboutme>
      <pictureurl></pictureurl>
      <workemail>Sharepoint-Test@moss.com</workemail>
      <website></website>
      <url>http://moss2007:17212/Person.aspx?guid=07BEF018-AE22-495E-B8B5-0EF167B46C90</url>
      <urlEncoded>http%3A%2F%2Fmoss2007%3A17212%2FPerson%2Easpx%3Fguid%3D07BEF018%2DAE22%2D495E%2DB8B5%2D0EF167B46C90</urlEncoded>
      <hithighlightedsummary>moss\<c0>Sharepoint</c0>-<c1>Test</c1>  <ddd /> <c0>Sharepoint</c0> <c1>Test</c1>  <ddd /> <c0>Sharepoint</c0>-<c1>Test</c1> </hithighlightedsummary>
      <hithighlightedproperties>
        <HHTitle />
        <HHUrl>http://moss2007:17212/Person.aspx?guid=07BEF018-AE22-495E-B8B5-0EF167B46C90</HHUrl>
      </hithighlightedproperties>
      <responsibility>Testing Sharepoint</responsibility>

      <skills>sharepoint;C#</skills>
      <sipaddress></sipaddress>
      <imageurl imageurldescription="File with extension: aspx">/_layouts/images/html16.gif</imageurl>
      <addtomycolleaguesurl>javascript:AddToColleagues('moss\\sharepoint-test')</addtomycolleaguesurl>
      <EveryOne />
    </Result>
  </All_Results>
  • Copy the XML and save it in a file.

Create the XSL:

Now that we have the XML, we can this data as input for our XSL. I will explain how to create a simple XSL with Sharepoint Designer 2007. If you have experience with making XSL using another tool, be my guest.

  • Open up your Sharepoint Designer 2007 and open the site (File, Open Site) you are working with.
  • Make a new ASPX page (File, New, ASPX).
  • Insert a Data View on the page (Data View, Insert Data View).
  • After you add the Data View, the Data Source Library window opens.

Data Source Library

  • Expand the node that says XML Files, as seen above, and choose Add an XML file. Browse to your XML file that contains the XML data we saved before and hit ok. Hit Yes on the question about importing the XML.
  • Click the dropdown of your file, and choose Show Data.
  • A nice way to get you started is by using the default XSL that Sharepoint uses to display the People Search Results. We saved it earlier on in this article into a backup XSL file. Open this backup file in Notepad or some other text editor, copy the XSL source code, go to your ASPX file in Sharepoint Designer and copy the XSL source code between the <XSL> and </XSL> tags.
  • Go to the Split view in Sharepoint Designer, this will show you the code and the resulting page.
  • Now you can edit the result, you can add labels to your data. Make stuff bold, italic, use tables to design the results.

Testing the new XSL:

  • When you are satisfied with the result copy everything between the <XSL> and </XSL> tags and paste it into your Sharepoint site. Where exactly? Look at the “Preparation” part of this article and search for “pressing the XSL Editor button” that will explain where to paste the XSL source.
  • Save, press OK button on Properties of web part, choose Save and stop editing from the menu.
  • Retry your search and the results will look something like this:

People Search New Results

It’s not much, but it’s a start. I’ll show you what i changed to the Default XSL source, search for DisplayOfficeProfile and compare it with the next source, the differences are the things I changed.

<xsl:template name="DisplayOfficeProfile">
  <xsl:param name="title" />
  <xsl:param name="dep" />
  <xsl:param name="phone" />
  <xsl:param name="skills" />
  <xsl:param name="responsibility" />

  <table>
  <span class="psrch-Metadata">
  <xsl:if test='string-length($title) > 0'>
  <tr>
   <td><b>Functie: </b></td>
   <td><xsl:value-of select="$title" /></td>
  </tr>
  </xsl:if>
  <xsl:if test='string-length($dep) > 0'>
  <tr>
   <td><b>Afdeling: </b></td>
   <td><xsl:value-of select="$dep" />  </td>
  </tr>
  </xsl:if>
  <xsl:if test='string-length($phone) > 0'>
  <tr>
   <td><b>Telefoon nr: </b></td>
   <td><xsl:value-of select="$phone" />  </td>
  </tr>
  </xsl:if>
   <xsl:if test='string-length($skills) > 0'>
  <tr>
   <td><b>Skills: </b></td>
   <td><xsl:value-of select="$skills" />  </td>
  </tr>
  </xsl:if>
  <xsl:if test='string-length($responsibility) > 0'>
  <tr>
   <td><b>Responsibility: </b></td>
   <td><xsl:value-of select="$responsibility" />  </td>
  </tr>
  </xsl:if>
  </span>
  </table>
  <br/>
</xsl:template>

I also removed the following part of the XSL:

<div class="psrch-Description">
          <xsl:choose>
            <xsl:when test="hithighlightedsummary[. != '']">
              <xsl:apply-templates select="hithighlightedsummary" />
              <br/>
            </xsl:when>
            <xsl:when test="aboutme[. != '']">
              <xsl:value-of disable-output-escaping="yes" select="aboutme"/>
              <br/>
            </xsl:when>
          </xsl:choose>
           <xsl:choose>
            <xsl:when test="responsibility[. != ''] or skills[. != '']">
              <xsl:choose>
                <xsl:when test="responsibility[. != '']">
                  <span class="psrch-PropLabel">
                    <xsl:text>Responsibilities: </xsl:text>
                  </span>
                  <span class="psrch-PropValue">
                    <xsl:value-of select="translate(responsibility,';',',')"/>
                    <xsl:text> </xsl:text>
                  </span>
                </xsl:when>
              </xsl:choose>
              <xsl:choose>
                <xsl:when test="skills[. != '']">
                  <xsl:if test="responsibility[. != ''] and skills[. != '']">
                    <br/>
                  </xsl:if>
                  <span class="psrch-PropLabel">
                    <xsl:text>Skills: </xsl:text>
                  </span>
                  <span class="psrch-PropValue">
                    <xsl:value-of select="translate(skills,';',',')"/>
                  </span>
                </xsl:when>
              </xsl:choose>
              <br/>
            </xsl:when>
            <xsl:otherwise><span /></xsl:otherwise>
          </xsl:choose>
        </div>

About

My name is Erwin Bastiaensen and I am a Software Architect from Belgium, with a huge interest in technology. Lately I have been involved in some Java projects and implementing, interfacing and extending a Sharepoint portal.

You can contact me at sharepointology[@]gmail.com.

View Erwin Bastiaensen's profile on LinkedIn