Archive

Archive for the ‘DevNotes’ Category

Installing SharePoint Foundation 2010 on Windows 7

July 20, 2010 8 comments

I know there’s a lot of posts describing how to install SharePoint Foundation 2010 (WSS4) on Windows 7 (see Microsoft’s installation procedure for Vista and Windows Server 2008 installations), but I just had to write my own short edition of the installation procedure available at MSDN.

Please note that Microsoft does not support this configuration for production environments. Windows 7 installations should only be used for development, testing and demo purposes!

Prerequisites

The following components and additions has to be installed on the computer running Windows 7 64-bit edition:

Installation procedure

Use the following procedure to install SharePoint Foundation:

  1. Make sure all prerequisites are met and no critical error is present in the event logs.
  2. Download SharePoint Foundation from Microsoft’s web site.
  3. Extract the web package to a temporary location using the /extract command line option.
  4. Edit the .\files\Setup\config.xml file according to the section below.
  5. Run the SharePoint Foundation setup, but do not run the configuration wizard.
  6. If you use a local SQL Server 2008, install KB970315.
  7. Run the SharePoint products and technologies configuration wizard.
  8. Install appropriate language packs.
  9. Configure SharePoint with the SharePoint Central Administration web application.

Editing the config.xml file

As described in step 4 in the installation procedure above, the config.xml file has to be edited to allow installation on Windows 7. Add the following line in the configuration section:
<Setting Id="AllowWindowsClientInstall" Value="True"/>

The entire config.xml file should look similar to this:

<Configuration>
  <Package Id="sts">
    <Setting Id="SETUPTYPE" Value="CLEAN_INSTALL" />
  </Package>
  <DATADIR Value="%CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\Data" />
  <Logging Type="verbose" Path="%temp%" Template="Microsoft Windows SharePoint Services 4.0 Setup *.log" />
  <PIDKEY Value="RBWQH-7PFXQ-D6RX2-HVK8Y-HP7F7" />
  <Setting Id="UsingUIInstallMode" Value="1" />
  <Setting Id="SETUP_REBOOT" Value="Never" />
  <Setting Id="AllowWindowsClientInstall" Value="True"/>
</Configuration>

IIS Features and Components

The follow screen shots shows required IIS components as described in the prerequisites section:

N’Joy!

Advertisements

Desired SharePoint Solutions

April 21, 2009 1 comment

In many cases there’s a need for a set of default web parts and solutions for SharePoint to give the user a better experience, and designers tools to create nice web solutions. I’ve been working with SharePoint for quite a few years, and during this time my experience is that the following basic web parts and solutions often are required.

If anyone have solutions for these needs or would like to develop them as Open Source projects, please let me know. In addition to the solutions specified below, I think the following solutions might be just as relevant, but will generate quite a lot of work:

  • Organization chart based on user profiles
  • Basic graphical charts, typically as included in .NET FrameWork 3.5, similar to the ChartPart for SharePoint or the Charting for SharePoint projects at Codeplex
  • Phone Book/List view of the profile database (not  just people search)
  • LDAP directory lookup and search
  • Customized list forms with a forms designer
  • File explorer with delegated permissions
  • PowerPoint mini-viewer web part to display a PPT in a small web part (Silverlight)
  • Rolling info screen presentation based on SharePoint content (Silverlight)
  • User self service with AD property modification, password resets and more
  • Server side Power Shell script execution
  • Corporate CV database based on the user profiles shared service

In general all solutions should be flexible in terms of deployment scope, languages, WSS/MOSS and highly configurable.

Content Tagging with Tag Clouds

This solution is more or less the same as any standard tagging feature, but for some reason it’s not included in SharePoint. The solution should cover as many of the following requirements as possible:

  • Tagging of any content type in any site within a site collection
  • Dynamically storing all used tags in a configurable tags list
  • Auto complete lookup towards the configured tags list (Ajax)
  • Highly customizable rendering

The SPTags project at Codeplex is a possible solution to cover this need.

Cross Site List Aggregator and Rollup

This solutions should be able to aggregate information from a specified list type in different sites and display the aggregated result. The solution should be able to use all Sharepoint view features, such as the default list view, calendar, Gantt charts and more.

A possible solution for this is the Portal Solutions SharePoint Toolbox project at Codeplex.

Advanced Lookup Field

The standard lookup field in Sharepoint is very limited. It’s not possible to use this field cross site or towards any other data source other than a Sharepoint list. In addition, it’s not very user friendly, especially with a large number of entries returned to the user.

Some of the basic features of this solutions should be:

  • If the input field is free text, it should be possible to enable auto complete as the user types. Typically implemented as Ajax.
  • It should be possible to use more or less any data source as a lookup source.
  • The lookup should be able to filter and sort the returned results based on configurable options.
  • It should be possible to enable dynamically connected lookup fields which filters the selection list based on a value in another field.
  • Both multi select and single select must be configurable
  • The rendering of the selection alternatives must be configurable

The SharePoint Filtered Lookup Field project at Codeplex covers the need for filters in a lookup field, but it’s not possible to combine this feature with other solutions such as dynamic/connected and auto complete lookup fields.

The SharePoint Connected Lookup project at Codeplex covers basic needs for dynamically connected lookup fields, but again it’s not possible to combine this feature with other solutions.

Multi RSS Feed Reader

The MOSS RSS feed reader does not support WSS and multiple feeds, and in many cases it’s desirable to have multiple feeds combined as one. It’s also important to have a good RSS reader for WSS.

The best solution I’ve found so far is the Smiling Goat RSS Reader, but there are several issues with this solution. Among other things, the solution has problems with non-English characters and the formatting is poor. For commercial use it’s not preferable to have author branding as the web part icon.

Content Rating

This solution should be able to rate any content on a SharePoint site or site collection regardless of content type (libraries, lists and pages). The rating should be configurable as both strings and numbers as well as the presentation such as images, strings or other visual effects.

The SharePoint Tool Basket project at Codeplex contains a solution which might cover this need, but I’ve not been able to try this out yet.

Mini Calendar View

On most intranets and public internet sites, where a schedule is an important part of the business, it’s often requested to have a tiny calendar on the front page which highlights the dates in a month with content and displays the entries when a user hovers over the date. Each date in the mini calendar view should be linked to a calendar and the appropriate date.

I know that Bamboo Solutions have some commercial alternatives, but I haven’t been able to test them yet.

Calculated Icon Field Type

Lists in SharePoint is often used as an alternative to Excel spreadsheets, but there’s one important feature missing which is conditional formatting, especially icons to visualize status of the rows.

I’ve seen some solutions at Codeplex, but these solutions are limited in use. Among other things, it’s not possible to configure which images to use and the criteria/rules are limited to specific values or ranges. It should be possible to define SharePoint formulas as the criteria and custom images based on the result of the formula.

Based on a tip from one of my associates, I’ve manage to accomplish this by altering the fldtypes.xml file on the server, but I don’t think hacks are the way to go in a commercial production environment.

In addition it would have been nice to have conditional formatting in any list similar to conditional formatting in Excel 2007.

User Poll

This solutions is a quite straight forward User Poll, but it should be possible to use the Poll both as an authenticated user and as an anonymous user. It should be configurable if the user may respond several times or not, and if the user may see the results of the poll.

Some projects at Codeplex covers some of the needs, but anonymous poll is not supported and the configurability and styling is very poor.

What’s New and What’s Hot

This is actually two different solutions which is closely related. The What’s New web part should display the newest items on a site or site collection with the ability to filter on specific lists. It should be customizable how the result is displayed and how many items to return.

The What’s Hot web part should display the top x items on a site or site collection. The solutions should be able to exclude some pages/entries, such as the home page of the site, and the information returned or displayed should be customizable.

Web Capture Web Part

In SharePoint Portal Server 2003 (SPS) Microsoft shipped a web part called "Web Capture" which grabbed parts of any web page and displayed the result in a web part. With Office Systems 2007 the feature disappeared, including the client side ActiveX control required to browse and select elements for the targeted web page.

Since it’s lots of web sites and web applications which doesn’t support any kind of data aggregation or integration, this solutions was great. However, it’s gone.

I deployed the SPS web part on WSS/MOSS and the web part it self works fine, but it’s required to use Office 2003 to have the ability to browse and select which element to grab. In addition, the old web part only supports table tags, and the div tags are more commonly used and the W3C recommended tag for layout purposes.

Ticker Web Part

The Ticker should be able to display content from lists, web services and RSS feeds as a scrolling text, both vertically and horizontally, similar to the stock ticker you might find on any financial web page. The web part should be able to use both JavaScript and Silverlight or flash as client side presentation.

iFrame page template for MOSS

November 17, 2008 Leave a comment

As you all know, the web page viewer web part included in Sharepoint does not support dynamic sizing of the iFrame it creates. Because of this, I found the need for a page template which users might use to create a Sharepoint page with external content. The following code is the entire page template, which might be used as is by anyone it might suit.

Please not that the javascript variable FooterHeight has to be set according to the whitespace you would like at the bottom the page. The height of 30 pixels is based on the footer height of the default collaboration master included in Sharepoint 2007.

<%@ Page language="C#" Inherits="Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" meta:progid="SharePoint.WebPartPage.Document" %>
<%@ Register Tagprefix="SharePointWebControls" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="PublishingNavigation" Namespace="Microsoft.SharePoint.Publishing.Navigation" Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>   <asp:Content ContentPlaceholderID="PlaceHolderPageTitle" runat="server">
   <SharePointWebControls:FieldValue id="PageTitle" FieldName="Title" runat="server"/>
</asp:Content>
<asp:Content ContentPlaceholderID="PlaceHolderPageTitleInTitleArea" runat="server">
   <SharePointWebControls:TextField runat="server" id="TitleField" FieldName="Title"/>
</asp:Content>
<asp:Content contentplaceholderid="PlaceHolderAdditionalPageHead" runat="server">
   <PublishingWebControls:editmodepanel runat="server" id="editmodestyles">
     <!-- Styles for edit mode only-->
     <SharePointWebControls:CssRegistration name="<% $SPUrl:~sitecollection/Style Library/~language/Core Styles/zz2_editMode.css %>" runat="server"/>
   </PublishingWebControls:editmodepanel>
   <SharePointWebControls:CssRegistration name="<% $SPUrl:~sitecollection/Style Library/~language/Core Styles/rca.css %>" runat="server"/>
   <SharePointWebControls:FieldValue id="PageStylesField" FieldName="HeaderStyleDefinitions" runat="server"/>
</asp:Content>
<asp:Content ContentPlaceHolderId="PlaceHolderTitleBreadcrumb" runat="server">
   <div class="breadcrumb">
     <asp:SiteMapPath ID="siteMapPath" Runat="server" SiteMapProvider="CurrentNavSiteMapProviderNoEncode" RenderCurrentNodeAsLink="false" SkipLinkText="" CurrentNodeStyle-CssClass="breadcrumbCurrent" NodeStyle-CssClass="ms-sitemapdirectional"/>
   </div>
</asp:Content>
<asp:Content ContentPlaceholderID="PlaceHolderMain" runat="server">
   <SharePointWebControls:CssRegistration name="<% $SPUrl:~sitecollection/Style Library/~language/Core Styles/pageLayouts.css %>" runat="server"/>
   <table id="MSO_ContentTable" cellpadding="0" cellspacing="0" border="0" width="100%">
     <tr>
        <td>
           <div class="pageContent">
             <PublishingWebControls:RichHtmlField id="content" FieldName="PublishingPageContent" runat="server"/>
           </div>
        </td>
     </tr>
     <tr>
        <td style="padding-top: 5px;">
     <WebPartPages:WebPartZone runat="server" FrameType="None" AllowPersonalization="false" Title="<%$Resources:sps,LayoutPageZone_BottomZone%>" ID="MiddleLeftZone" Orientation="Vertical" QuickAdd-ShowListsAndLibraries="false" allowlayoutchange="false"><ZoneTemplate></ZoneTemplate></WebPartPages:WebPartZone> <!-- _locID@Title="L_MiddleLeftZone_Title" -->
        </td>
     </tr>
   </table>
   <PublishingWebControls:editmodepanel runat="server" id="editmodepanel1">
     <!-- Add field controls here to bind custom metadata viewable and editable in edit mode only.-->
     <table cellpadding="10" cellspacing="0" align="center" class="editModePanel">
        <tr>
           <td>
             <PublishingWebControls:RichImageField id="ContentQueryImage" FieldName="PublishingRollupImage" AllowHyperLinks="false" runat="server"/>
           </td>
           <td width="200">
             <asp:label text="<%$Resources:cms,Article_rollup_image_text%>" runat="server" />
           </td>
        </tr>
     </table>
   </PublishingWebControls:editmodepanel>
<script language="JavaScript">
  <!--
    function resizeFrame() {
      objFrame = document.getElementsByTagName("iframe").item(0);
      windowHeight = document.body.offsetHeight;
      headerHeight = absoluteTop(objFrame);
      iframeHeight = windowHeight - (headerHeight + footerHeight);
      if (iframeHeight >=0) { objFrame.style.height = iframeHeight};
      objFrame.style.border = "1px solid gray";
      objFrame.style.margin = "0px";
    }       function absoluteTop(objNode) {
      var currentNode=objNode;
      var sumTop=0;
      while(currentNode.tagName!="BODY"){
        sumTop+=currentNode.offsetTop;
        currentNode=currentNode.offsetParent;
      }
    return sumTop;
    }       function getFooterHeight() {
      objPlaceHolder = document.getElementById("ctl00_MSO_ContentDiv");
      footH = document.body.offsetHeight - (absoluteTop(objPlaceHolder) + objPlaceHolder.offsetHeight);
      return footH;
    }       var footerHeight = 30;
    window.attachEvent ("onresize", resizeFrame);
    window.attachEvent ("onload", resizeFrame);
  //  resizeFrame();
  //  footerHeight = getFooterHeight();
  // -->
</script>
</asp:Content>  

N’Joy!

Resizing an iFrame to it’s parent

November 17, 2008 Leave a comment

In some cases it’s not possible to use the style tags width and height to define the size of an object on a web page. This is typically the case when an inline frame is placed within a placeholder such as a <div> or a <td>. My approach to resolve this is to include a javascript which resizes the iframe based on it’s parents width and height.

The script is based on a Sharepoint 2007 collaboration page template and has a static reference to the page footer. If this should be used elsewhere, please modify the static object references in the code.

function resizeFrame() {
   objFrame = document.getElementsByTagName("iframe").item(0);
   windowHeight = document.body.offsetHeight;
   headerHeight = absoluteTop(objFrame);
   iframeHeight = windowHeight - (headerHeight + footerHeight);
   if (iframeHeight >=0) { objFrame.style.height = iframeHeight};
   objFrame.style.border = "1px solid gray";
   objFrame.style.margin = "0px";
}

function absoluteTop(objNode) {
   var currentNode=objNode;
   var sumTop=0;
   while(currentNode.tagName!="BODY"){
      sumTop+=currentNode.offsetTop;
      currentNode=currentNode.offsetParent;
   }
   return sumTop;
}   function getFooterHeight() {
   objPlaceHolder = document.getElementById("ctl00_MSO_ContentDiv");
   footH = document.body.offsetHeight - (absoluteTop(objPlaceHolder) + objPlaceHolder.offsetHeight);
   return footH;
}

var footerHeight = 30;
window.attachEvent ("onresize", resizeFrame);
window.attachEvent ("onload", resizeFrame);

N’Joy!

%d bloggers like this: