Category name:Sharepoint

Day 1 SharePoint 2010 Connections Amsterdam

Today started the 2-day SharePoint Connections 2010. It was my first meeting with SharePoint 2010 since I left SharePoint back in 2005. I must say it is an exiting platform which can be used to build great solutions.

The key note was presented by Mike Fitzmaurice of Nintex. As a former Microsoft SharePoint evangelist he took us on a journey through the history of SharePoint. It was fun to watch.

My next session was by Steve Fox, he brought an overview of the developer platform. Steve is a good speaker with a great sense of humor. On the way of course the SharePoint designer and Visual Studio came by. It was useful overview.

Then I went to a session I would normally not attend. The SharePoint BI overview by Mike Fitzmaurice. I’m on a project now with a strong focus on BI so I thought it wouldn’t be a bad idea to see what Microsoft did to for example Performance Point Server. Like Steven Forte predicted, BI in SharePoint 2010 will be for the masses. Performance Point Server is integrated and is now a service like the Excel and Visio services. It is much easier to build a custom dashboard in SharePoint 2010.

Next I visited the ECM (Enterprise Content Management) for the masses by Erica Toelle. It was a new experience for Erica. As she told at the end she wasn’t used to speak for such a crowed but she tried to make the best of it. She was unsure about her live demos Her demo environment stopped working so she had recorded ones, which wasn’t the best choice. However I learned quite a few things from this session I normally would skip when researching SharePoint, like document sets where you can create a set of documents with one click and those documents can also be parameterized. How about records management for auditing purposes and auto-archiving.

My final session of today was presented by one of my favorite speakers, Jan Tielens. Jan can make complex things easy, knows his stuff and is entertaining. He showed how easy it is to use client technology to access SharePoint 2010 using a console application, JavaScript or Silverlight. It is great to see that SharePoint now comes with a client side API which makes it possible to use the object model on a client the same way it can be used on the server. That makes it possible to easily use SharePoint data in for example a Silverlight client.

Like at any conference it is difficult to decide what session to attend and I hope the other session will be available soon.

I’m looking forward to tomorrow!

It wasn’t really a surprise but I ran into quite some familiar faces from fellow freelancers, customers and former colleagues from Macaw. It was great to talk to any of them.

Quick launch bar in portal area missing

Sometimes you think “asjemenou” when you run into a very obvious bug. I had such an experience with Sharepoint today.


When you create for example a document library in a portal area there is a section in which you can select the document library to “display on the quick launch bar”. However when you select this, it doesn’t show up there! While searching newgroups I found out that this behaviour is due to the fact that this isn’t specified in the portal area templates. It is in the WSS (STS) template though.


As a fix some people suggested to use Frontpage to put it in the portal area. I like it more to fix this in the templates (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/tsptCustomNavBar_SV01016232.asp). I tried this and it seems to work.


Keith Richie from Microsoft wrote some time ago in the portalserver newsgroup:


Allthough Portal 2003 Areas are based on WSS Webs, the concept of the quick launch bar is not necassarily the same.
The “Portal Navigation” bar is highly controlled by Portal, and selecting for a doc lib to show up on “Quick Launch” will not work for the Portal Navigation bar without edits to the page.
I recommend using a “Portal Listing” if you can.

How does the Sharepoint Text Editor work?


For things like the content editor webpart and the add listing functionality, Sharepoint has a Text Editor. As you might have noticed, the text editor isn’t the same everywhere. It looks more or less the same but it is supplying different functionality at every different location.


To change the default Text Editor, it is necessary to first understand how the current is working. This post tries to explain this.


First of all the Text Editor is a plain DHTML editor. It uses a TextArea and an IFrame, just like the well known DHTML editor.


The Text Editor is wrapped in a user control:



When the page is rendered, the Text Editor is converted into a TextArea:


<TEXTAREA id=TextEditor style=”WIDTH: 600px; HEIGHT: 800px” name=TextEditor>….</TEXTAREA>


Also at the bottom of the page the following Javascript is added:


RTE_ConvertTextAreaToRichEdit (“TextEditor”, …)


This function is located in the ows.js and does exactly what it looks like it does. It looks up the TextArea and converts it into the DHTML control. It leaves the TextArea alone but adds an IFrame and toolbars for the editor.


The function RTE_GiveEditorFirstFocus(“TextEditor”) moves the focus to the just created editor. Also an event is attached to the IFrame which makes sure that the content in the editor is moved to the text area after the user presses the submit button. It uses the following function for that:


RTE_TransferIFrameContentsToTextArea(“TextEditor”)

 

All Javascript is located in the ows.js file.

 

To change the default implementation of the text editor, the best approach is to make sure the content of the adjusted editor ends up in the text editor text area afterwards. For the add listing version it is also necessary to leave the SPSWC:TextEditor in place because the button calling ‘ShowTextEditor’ counts on it. If that is removed, it is much more difficult to display the editor and save the content using default available functionality. I was not able to determine the implementation of ‘ShowTextEditor’, so if someone can explain it to me……..

Order Sharepoint areas like the portal hierarchy


A few weeks ago I was working on a web part which had to display the area hierarchy, much like the way topics are displayed.


When implementing I found out that the areas in the AreaCollection were returned in alphabetical order and not in the hiearchical order that Sharepoint uses. It turned out that other people also ran into this. Using the ‘HonorOrder’ property didn’t help a lot and in fact it is unclear what that property actually does.


I built my own AreaCollection, very easy but very useful. One thing to be aware of:  when an area is removed from the collection Sharepoint doesn’t renumber the other areas. This means that you can have 3 areas with order numbers like 2, 5 and 9. This implementation is taking that into account.


int tmpAreaCnt = 0;


int nbrOfVisibleAreas = 0;


 


// Determine the highest order number


foreach(Area thisArea in SomeArea.Areas)


{


       if(thisArea.Order > tmpAreaCnt)


       {


              tmpAreaCnt = thisArea.Order;


       }


}


 


// Create temp and real array objects to contain the sorted areas


// Increase the counter by one, the array is 0-based


tmpAreaCnt++;


Area[] tmpPortalAreaColl = new Area[tmpAreaCnt];


 


foreach(Area thisArea in SomeArea.Areas)


{


       if(thisArea.Navigation == AreaNavigation.Show)


       {


              tmpPortalAreaColl[thisArea.Order] = thisArea;


              nbrOfVisibleAreas++;


       }


}


 


// Now we only have to remove the empty entries


int areaCnt = 0;


Area[] portalAreaColl = new Area[nbrOfVisibleAreas];


for(int i=0; i<tmpAreaCnt; i++)


{


       if(tmpPortalAreaColl[i] != null)


       {


              portalAreaColl[areaCnt++] = tmpPortalAreaColl[i];


       }


}