Friday, August 22, 2014

Device channel panels and web part zones

I recently got the opportunity to create my first mobile device channel. The job seemed pretty straight forward. Create a new mobile master page and add device channel panels to the page layouts. The existing layout in a default panel and the mobile layout in a mobile panel. I instantly ran into a big problem. Device channel panels does not work with web part zones. The reason is that the web part manager knows which web parts should be displayed on a page and in which web part zone. If a web part is registered to a page but the web part zone is unavailable for some reason the web part manager will put that web part in the last available web part zone. This means that if you hide/display different web part zones with device channel panels you will get all web parts from the hidden web part zones in the last displayed web part zone. Well, isn't that just fantastic.

The only solution to this problem I have found is to use a rich text editor instead of a web part zone, but that isn't really the same thing.

Yet another day in SharePoint paradise...

Monday, May 5, 2014

Purge the recycle bin

I currently work in a project where we add and delete thousands of list items. My recycle bin had over 30.000 items and I had to clean it. Cleaning out that amount of items the standard way would take hours. I googled a bit and found out thet there is a hidden feature in the recycle bin. Go to the recycle bin page, type javascript:emptyItems(); in the address bar and hit enter. You will get a confirmation dialog and if you click yes the entire recycle bin will get purged! This works as well for recycle bins on individual sites and for the site collection recycle bin, on both SharePoint 2010 and 2013. Why Microsoft have decided to hide this gem is beyond me.

Yet another day in SharePoint paradise...

Tuesday, April 15, 2014

Enable e-mail functionality in task lists in SharePoint 2013

Recently I was set out to test if e-mail was properly configured in a SharePoint 2013 environment at a customer. Piece of cake, I thought. I created a task list and went to the advanced settings page to tick the "Send e-mail when ownership is assigned"-box. It was very hard since it simply wasn't there. Microsoft have removed the possibility to out of the box enable e-mail in task lists. Wonderful. Thankfully it is possible to enable this option with PowerShell, see http://bernado-nguyen-hoan.com/2013/04/26/enable-email-notifications-for-tasks-list-in-sharepoint-2013/. The property EnableAssignToEmail is available on the SPList object as well if you want to enable it with code.

Yet another day in SharePoint paradise...

Friday, April 4, 2014

SharePoint Server 2013 Service Pack 1 is now unavailable

Microsoft has done it again! The first service pack for the latest SharePoint version is flawed. For those who remember, the same mistake was done in June 2011 with SP1 for SharePoint 2010. According to Microsoft the current service pack for SharePoint 2013 will affect the ability to update installations in the future, see http://support.microsoft.com/kb/2817429/en-us:
"We have recently uncovered an issue with this Service Pack 1 package that may prevent customers who have Service Pack 1 from deploying future public or cumulative updates. As a precautionary measure, we have deactivated the download page until a new package is published."
Yet another day in SharePoint paradise...

Monday, February 3, 2014

Lookup field workaround

I have never really worked that much with lookup fields to connect lists before. Usually a choice field and/or a managed metadata field is enough. Now a customer requested a couple of lists that were connected to eachother. "No problem" was my initial response, but yet again SharePoint would take me on a journey down the road of frustration.

The customer needed one parent list and two child lists. The parent list should display the title field and some choice fields from the child lists. Sounds really simple. When I started creating the lists I quickly discovered that it is impossible to use choice fields as lookup fields. The workaround is both simple and brilliant, see http://bramnuyts.be/2011/04/05/using-a-lookup-field-on-a-choice-field-workaround/. Now it works just as the customer wanted, as long as you hide the calculated fields in the default view and the item display form.

Yet another day in SharePoint paradise...

Thursday, January 30, 2014

The evolution of SharePoint

After a year of working with SharePoint Online I reflected over what SharePoint have becomed. SharePoint is now a beast. It can almost do anything, except cure cancer. It is almost impossible to be expert of every aspect of the product any more. But new capabilities are not all a good thing. I'm worried that Microsoft have come to a point where the code base have become too much to handle. The fact that Microsoft itself cannot host the product properly any more fuel my thoughts. In my project we have had, in avarage, one severe hosting problem every week. This is not acceptable.

Even though you might be frustrated out of your mind sometimes when working with SharePoint you must always remember that you are not alone. I recalled this little gem on Stack Overflow. The guy is rather bitter, but he have some valid points. Read it and you will feel better! :)

Yet another day in SharePoint paradise...

Tuesday, October 1, 2013

The request uses too many resources

I currently work in a project where the solution is hosted in SharePoint Online and Azure. All communication between the web applications in Azure and SharePoint Online is done with the client object model. Before the summer vacation everything was working just fine. When we came back a couple of weeks later nothing worked. Our applications got a lot of "Ther request uses too many resources" responses from SharePoint Online. After getting past the first line support at Microsoft we eventually got to speak to someone who actually knew what they were talking about. We found out that Microsoft lowered the limit for operations in an execute query call during the summer without notifying anyone. The limit is controlled by the property ClientCallableSettings, see http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.clientcallablesettings.aspx. Since that kind of properties are untouchable in SharePoint Online we had to add several execute query calls on strategic places throughout our code.

Yet another day in SharePoint paradise...