Feeds:
Posts
Comments

SharePoint 2010. What is new?

Here a quick overview of what I learned through blogs after the first day of SharePoint conference 2009.

New names.

Every new release has some changes in the naming.

WSS 4.0 becomes  SharePoint Foundation
Groove becomes  SharePoint Workspace

No more table layout.

No more table layout!! Personally I’m excited about this.  It was the first thing technical end-users came complaining about.
UI implementation is no longer table-based… it’s pixel perfect (via CSS)

Solutions are now sandboxed.

Everything in the WSP is deployed to a special repository managed by Central Administration. This might impact your custom solutions.
http://weblogs.asp.net/erobillard/archive/2009/10/19/sandboxed-solutions-and-security-in-wss-4-0.aspx

New service model.

http://blah.winsmarts.com/2009-10-Ramifications_of_the_re-architected_service_model_in_SP2010.aspx
http://www.andrewconnell.com/blog/archive/2009/10/19/the-new-service-application-architecture-in-sharepoint-server-2010.aspx

Rating field.

SharePoint 2010 offers a new feature around rating content
http://weblogs.asp.net/bsimser/archive/2009/10/19/sharepoint-2010-what-s-new-ratings-spc09.aspx

Lookup field.

http://weblogs.asp.net/bsimser/archive/2009/10/19/sp2010-what-s-new-lookup-columns-spc09.aspx
(no word on lookup over site collection level)

New SharePoint Designer.

I never was a fan of SharePoint Designer.  The new version seems to go into the right direction. Hopefully it’s more stable and faster as well.

http://blogs.msdn.com/sharepointdesigner/archive/2009/10/19/putting-the-sharepoint-in-sharepoint-designer.aspx

I downloaded and installed Windows 7 RTM today. What can I say ? 2 thumbs up!!

The install, on my Intel Core2 2,13Ghz (6420), took me 27min 12 seconds from powering up, installing Windows 7 and first time sign in.

The setup experience was great. Only a few questions, the required product key and one reboot.

I had 2 small quirks though. I’m 100% sure I selected the US keyboard. But after install (actually already during installation) I was blessed with a Dutch-Belgium keyboard (which is my locale for formatting dates and currencies).

The second one did cause my eyebrow to frown a bit. My second hard drive was not detected. Well, it was detected but no drive letter was assigned. I have 2 physical drives. The first one contains a System (C:) and a documents partition (D:). The second drive is 200GB drive with one partition. After going to Control Panel -> Security Center -> Administrative Tools,  I could easily assign a drive letter to the second hard drive.

My first impression is a smooth and responsive GUI. It feels faster than Vista. To me, the (Windows) Explorer is more logical structured than the one in Vista.  I always had problems with finding the ‘Computer’ shortcut in myVista Explorer.

If Windows 7 survives the first 4 months without hiccups,  I might consider switching my development environment back to Windows again.

Lost again a few hours today.

Apparently workflows on your SharePoint  site need the hidden ‘OffWFCommon’ feature to be enabled. If not the workflow code is simply not executed.

The annoying thing is that there is no indication that the workflow is not starting. You can assign the workfow to a list ,  let the workflow start on an item, no error or exception. So they seem to execute but actually nothing is started.  I noticed this because the workflow ’status’ field remained empty. Normall it contains: ‘In progress’, ‘Completed’,  ‘Exception occurred’,  … Even the SharePoint logs remained silent.

After hooking up my Visual Studio debugger to the SharePoint site ( which was based upon a custom Site Definition),  it became clear that the code of the workflow was never executed. On an other site collection the custom workflow did work. So it had to be something with the settings of my new site collection.

This post pointed my in the right direction. It turned out that to enable workflows to run, you need to activate the ‘OffWFCommon’ feature. Adding the feature to my Feature list in the Site Definition solved the problem.

After adding the feature in my Site Definition the workflows started correctly.

<!–OffWFCommon –>
<Feature ID=”C9C9515D-E4E2-4001-9050-74F980F93160″ />

When adding a List View web part in a custom Site Definition  be careful to define the url correctly. If not, SharePoint returns the following error when creating a site based upon the Site Definition.

Cannot complete this action.

Please try again.   at Microsoft.SharePoint.Library.SPRequestInternalClass.ApplyWebTemplate(String bstrUrl, String& bstrWebTemplate, Int32& plWebTemplateId)
at Microsoft.SharePoint.Library.SPRequest.ApplyWebTemplate(String bstrUrl, String& bstrWebTemplate, Int32& plWebTemplateId)

It took me a whole afternoon looking for a solution.

Detailed description

I created a feature with a new Site Definition. To this Site Definition I added a custom task list with display name “Qrm reminders”. The list is a custom list that is deployed as a feature ( 2849AF43-E405-481c-9803-09F55785C214) on the server.

For your reference I also included the definition of a default task list.

   1:  <List FeatureId="00BFEA71-A83E-497E-9BA0-7A5C597D0107" Type="107"


2:                Title="$Resources:core,taskList;"
   3:                Url="$Resources:core,lists_Folder;/$Resources:core,tasks_Folder;"

   4:                QuickLaunchUrl="$Resources:core,lists_Folder;/$Resources:core,tasks_Folder;/AllItems.aspx" />
   5:


   6:          <List FeatureId="2849AF43-E405-481c-9803-09F55785C214" Type="10002"
   7:                Title="QRM Reminders"

8:                Url="$Resources:core,lists_Folder;/QrmTasks"

9:                QuickLaunchUrl="$Resources:core,lists_Folder;/QrmTasks/AllItems.aspx" >

As you can see in the above code, the list “QRM Reminders” is added. It is based on custom type  10002.  I also replaced the resource that defines the name for the list  ‘QRMTasks’

Further down in the Site Definition I add a List View web part on the default.aspx page. This List View web part points to the custom list QRMTasks (display name = Qrm Reminders)

   1:          <View List="Lists/QrmTasks" BaseViewID="1" WebPartZoneID="Right" WebPartOrder="3" />

When creating a site based on this site definition with the List View web part, it returns the following error.

Cannot complete this action.Please try again.   at Microsoft.SharePoint.Library.SPRequestInternalClass.ApplyWebTemplate(String bstrUrl, String& bstrWebTemplate, Int32& plWebTemplateId)

Some error information from the SharePoint logs :

Creating list “QRM Reminders” in web “http://wind2003entr2:1100/sites/demoSiteFail” at URL “Lists/QrmTasks”,

Creating default modules at URL “http://wind2003entr2:1100/sites/demoSiteFail” Not enough information to determine a list for module “Default”. Assuming no list for this module.

Failed to find a suitable list for tag in module for file ‘default.aspx’ given List attribute ‘QrmTasks’.

Failed to apply template “ProjectSite#0″ to web at URL “http://wind2003entr2:1100/sites/demoSiteFail”.
Failed to apply template “ProjectSite#0″ to web at URL “http://wind2003entr2:1100/sites/demoSiteFail”, error 0×80004005

Without the List View web part definition, the site and the QrmTasks list are created successfully.

Solution.

It took me a whole afternoon to figure it out. It turned out the  url attribute was improperly set.
I specified the list url as: Url=”$Resources:core,lists_Folder;/QrmTasks”. So it would result in Lists/QrmTasks

For some reason the List View web part could not find the “QrmTasks” list on this location. So I simplified the url and deleted the folder ‘Lists’ from the url

   1:  <List FeatureId="2849AF43-E405-481c-9803-09F55785C214" Type="10002"
   2:                Title="QRM Reminders"
   3:                Url="QrmTasks"
   4:                QuickLaunchUrl="$Resources:core,lists_Folder;/QrmTasks/AllItems.aspx" >
      7:  ...
     6:  <View List="QrmTasks" BaseViewID="1" WebPartZoneID="Right" WebPartOrder="3" />

Note: the url attribute of the list definition now only contains QrmTasks.

Basically the list ‘folder’ is removed from the url. After this the Site Definition worked as expected and the List View web part was correctly provisioned on the page.

Microsoft has released some official information about SharePoint 2010.

Read more about it on their official site:
http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx
(silverlight required)

I recently ran into a problem where my web part, that uses jQuery, didn’t work anymore on the SharePoint production server. After some investigation it became clear that it was caused by another  SharePoint feature that was enabled on the site.

This SharePoint feature used it’s own JavaScript framework that conflicted with jQuery. jQuery uses some keywords and expressions in a fashion that does not match with other libraries. jQuery Has foreseen this and has functionality in place to resolve this.  More information on how to solve this can be found here.
After applying these changes the two frameworks were working happily together.

For more detailed information about the issue I encountered see here.

Hope it helps.

Fill out this survey about your experiences with SharePoint and win a ticket for the SharePoint Conference 2009 in Las Vegas.  It’s a short and easy survey, mainly focussed on your in-house SharePoint deployment. The survey closes on July 17t. 

taken from here

Update 2009-04-23 : Thanks to Coveo support. I was able so resolve this issue. See below for details.

While I was creating a custom web part using the jQuery treeview plugin,  I ran into an issue with Coveo Search.  The click events ( to expand / collapse the treeview nodes) didn’t work anymore. The web part works smoothly on my development and test machine but those machines do not have Coveo Search installed.

After debugging, and manually removing redundant JavaScript files , the CommonClientScripts.js seems to be the reason. This file is ‘injected’ by Coveo at the beginning of the page’s <body> tag.  This injection is done by calling the following url:
{your SharePoint url}/_layouts/Coveo/SharePointCustomContent.aspx?k=ccs&z=1006065576

The injected JavaScript file does a lot of event handling and subscribes to various events.  My guess is that registering to all these events breaks the jQuery functionality.

Disabling the Coveo Search features at site collection level solves the problem but (of course) also disables the search functionality in the site collection.

I haven’t found a solution yet. If you have some tips feel free to leave them in the comments.

[update 2009-04-23]
Thanks to Coveo support I was able to solve this issue. As they already stated in the comments it was indeed a very simple solution.

JQuery uses some keywords and expressions in a fashion that does not match with other libraries. Luckily jQuery has functionality to solve this as explained in this article

In short: You have to add an extra line (jQuery.noConflict();) and replace all your ‘$’ with jQuery.

Introduction.

Lately, I ‘ve been exploring the use of jQuery in ASP.NET applications.  If you haven’t got the chance yet to try it out, do so!! It is certainly an added value, even when programming in .NET.

However the modal forms can break the postback functionality of your ASP.NET pages. Read below for how to fix it.

What is a modal form ?

A modal form is nothing more than a hidden <div> element that is set to visible by running a small piece of JavaScript code in the  browser. It feels very responsive and fast since there is no round trip to the  server. The <div> element containing the modal form is already inplace the first time you load the page.  The JavaScript just toggles the <div> element between visible and invisible.  If you know a little bit about JavaScript and CSS is very easy to understand. 
See some examples here.

However when you have ‘postback’ functionality in this <div> element the modal form breaks. The code behind of your ( for example) button clicks ( asp:Button that is) never execute.

Sample application in ASP.NET

Preparing your Visual Studio environment.

  1. Go to the jQuery download page and download the latest version
  2. Go to the SimpleModal webpage and download the latest version of the jQuery plugin
  3. Start Visual Studio and create a new website project.
  4. Create a new folder (I called mine: ’scripts’)
  5. Drag and drop the jQuery JavaScript file into the scripts folder.
  6. The modal plugin contains various folders. I created a new folder called ‘modal’ in my scripts folder and I copy pasted all the modal files in this new folder

You now have everything in place. You solution explorer should look like this :

Open the default.aspx in HTML view and add a link to the 2 JavaScript files in the <head> section of your HTML page (default.aspx ). Also add a link to the SimpleModal style sheet  (also included in the SimpleModal download).

screenhunter_05-mar-18-21051

Next step is to add the HTML elements. I created the following elements :

  1. A link that opens the modal dialog encapsulated in a <div> element
  2. A label ( This one will be changed by the postback )
  3. A hidden div element. This is our modal form.

So your results looks like this:
HTML elements
Note: the ID attributes ‘Actionlist’ and ‘ModalWithButtonContext’ above. These ID’s identify the elements for jQuery.

You now have all the elements in place. We only need to add the jQuery functionality. Go back to the <head> element of the page and insert the following small JavaScript. Note that it references to the id attributes of the divs, so make sure they match !!

screenhunter_06-mar-18-2106

Now we add some logic to the button. This logic will run when we click on the button in our modal form. For simplicity sake we will only update the Label1 control on the main page with the current time. You can add of course your own code instead. Open the code behind file and add the following code.

code behind

Save all your files and try running the application. As you will notice the postback logic does not execute. The label is not updated. Seems like the postback code is broken.

The fix

The problem is that the jQuery SimpelModal code adds the modal form to the end of the <body> tag. ASP.NET however, needs all of the controls within the <form> tag in order to execute properly. So our modal form is ‘out-of-scope’ and will not trigger the postback events.
Luckely we can modify this in the JavaScript code. It sort of a hack but it works for me.

  1. In Visual Studio go to the solution explorer and open the jquery.simplemodal.js file.
  2. Find and replace all occurrences of appendTo(‘body’) with appendTo(‘form’).
  3. Save the file and run your code again.

When you click now, on the button in the modal form. The postback will trigger, adjust the text in the label and close the modal form.

Result

Feedback and comments welcome.

Today my first hands-on with the Microsoft Business Productivity Online Suite (BPOS). I spend a great deal of time playing with the Exchange Online and SharePoint Online products. Will it be a success? Who will tell? Here are my conclusions.

BPOS verions.

BPOS will be available in 2 different versions. The BPOS Standard and BPOS Dedicated. The Standard version is for everyone who wants to switch to a Saas model for  their email and/or collaboration solution. My opinion is that the Standard is aimed at smaller companies (<50) or even home users that are willing to pay the 3$-15$ monthly fee ( depending on what services you want to use ) per user. For this fee you don’t have to buy hardware, no Exchange license and most importantly: Microsoft will take care of your backups, upgrades and maintenance. If you are willing to fully switch to a browser only solution you can also kick out those Microsoft Outlook licenses.

The BPOS Dedicated is a different beast. It’s aimed at large companies > 5000 seats. No prices are made public. You will have to pay a visit to  your Microsoft Account Manager, so expect high numbers.

Note: on SharePoint forums they are also talking about SharePoint Azure but no details have been made available yet.

SharePoint online.

This blog is about SharePoint so what about SharePoint Online? To be honest, for me the Standard version was a bit disappointing. But I’m used to the full blown Microsoft Office SharePoint Server. People that are used working with (only) WSS might be more exited about SharePoint Online. Certain SharePoint features are not (yet?) available in BPOS. For example you don’t have any control over your search scopes or indexing schedule. There is also no word about what IFilters are supported by default. Although if you think about it, it is logical. Since SharePoint Online is a kind of ’shared hosting’ you don’t have access to Central Administration. So you can leave out most of the  features that are solely configured within Central Admin. Below a list of things I noticed.

  • No control over the search or indexing schedules.
  • No mail enabled lists.
  • No customized work flows (aka Visual Studio work flows)
  • No browser based forms.
  • Since it’s shared hosting there is of course no deployment of custom dll’s,  assemblies, wsp’s, custom features or any files in the 12-hive
  • Backup retention of only 2 weeks.

Conclusion. I think the BPOS has great potential for smaller companies. Certainly the Exchange Online integration. The SharePoint Online is rather basic. I prefer to see it as WSS online with a few MOSS features that you can’t control. However they made very clear that the current feature list is not the final one. The people at Redmond are working  hard to push some extra functionality out.
I’m also expecting that Microsoft will team-up with his partners and that certain popular (and very well reviewed and tested)  third party web parts and components will become available as well in the future, although this is just a wild guess.

Older Posts »