I love solutions. I love understanding the problems a business is facing, and then applying deep thought, creativity and pragmatism, to the process of building a great solution. The keyword in that sentence of course, is pragmatism, and it has meant that despite a love for writing good code, I also like not writing good code. In it’s place, bending the out-of-the-box features to my will, and deriving extra value out of the platform that is SharePoint.
Where am I heading? Well, around 6 months ago Hans came to the office with a cool demo. Now, he is no longer a hard core developer, but the demo left us developer-sorts pretty impressed. What made us even more impressed was that he had built the solution without touching the server. In other words, he did it entirely without an assembly.
This got us all thinking, and along with the emergence of some excellent articles also covering this topic (see below in further reading), we began to wonder just how far we could take this “Assembly Free” approach to solutions.
Our conclusion is, that actually, you can take them very far indeed.
Now, why would I call it the “Next Level”? Because up until now, (big apologies if I have missed anything) I’ve only seen examples that perform “read” operations on SharePoint, solutions that are mostly focused on improving the user experience. While I have loved every one of them, what I really wanted to see, was an entire solution. Something that actually met a complete business requirement. Again, apologies if I have missed something, the blogosphere is big these days, please ping me if you have a demo, would love to take a look (firstname.lastname@example.org).
All of this got me thinking about the way we do timesheets at zevenseas. Like a lot of small businesses we use SharePoint. We grabbed a calendar list, added a few fields, and away we went. It works, its a little clumsy (helped by Access integration) but the bottom line is, it’s a very good value solution for our modest company.
But What if?
What if we could make SharePoint just a little bit better at doing Timesheets? And what if this could be used by anyone with a SharePoint teamsite, regardless of whether or not they had access to the command prompt on their servers. With this problem,we went to work on a solution, and this is the proof of concept we came up with.
This is the first screen you see after creating a new instance of the Timesheet site:
The first task you have is to setup your client list, done by clicking on the “Create a new client” link:
With the clients created, pretty standard stuff, I can now go about entering my timesheet information, to do this, I return to the homepage and click on the “Complete your timesheet” link, which opens a page like this:
This is a page that I customised using SharePoint Designer, and it sits inside a “Calendar” list. As you can see, this already “looks” a lot more like a classic Timesheet application.
Clicking on the “Click here to select start date” field pops up a calendar:
Selecting a starting day, a Monday, means I can start completing my Timesheet:
The interesting but here, is that the “Client” dropdown is being populated by a Web Service call to the “Clients” list. Selecting a customer also pre-populates the rest of the fields, as at zevenseas, we usually work with one customer a week.
Next, I complete a description, the start time, end time and any breaks, the hours are automatically calculated for me. Here is a timesheet fully completed:
To me, this is where it gets interesting. What we need to do is convert this list of daily timesheets entries, into individual list items inside the calendar. Clicking on the “Submit Time” button does just that.
Here is what it looks like from the “Calendar” perspective:
When you click the “Submit Time” button, we make a Web Service call which populates the Calendar, so we are doing not just “Reads” against SharePoint from the browser, but “Write” operations too. The result is a very basic solution, installed and ready, without having to touch the server. There are zero assemblies, zero C#, zero admins, its just the site owner.
How do we do it?
Here are the key elements in the solution:
- SharePoint Designer – Great tool for building these solutions, which eventually boil down to a Site or List Template.
- SharePoint Web Services – This is your API, or OM, this is how you do stuff. Sure there are limitations, but focus less on what you can’t do, and more on what you can. Its impressive when you dig into it.
With this set of tools, and some browser side debugging helpers (IE8 is excellent) you are well on the way to delivering solutions for customers without the overhead and risk of assemblies. In fact, it opens up the possibility of solutions to a whole range of customers who can’t install custom solutions.
Don’t get me wrong, this is in no way a replacement to Features and Solutions, it compliments them, providing you with another technique in your kitbag for solving problems.
Call to Action
If you are interested in building small, focused solutions with SharePoint, just like this one, then drop me an email at email@example.com. We are looking for partners who want to participate in a new and innovative way of bringing SharePoint solutions to market, unlocking enormous value for a rapidly growing number of SharePoint customers.
A big thanks to the following for their efforts and inspiration:
JQuery - A Fresh Look at What YOU Can Do On SharePoint Without Server Code – Joel Oleson
Dock Navigation – Jan Tielens
JQuery and the Content Editor Web Part - Peter Serzo
SharePoint InstantListFilter – Jaap Vossers
Waldeks posts over at EndUserSharePoint - Waldek Mastykarz
Binary Free SharePoint Twitter Search Web Part – Woody Windischman
P.S. I will be releasing this solution in the coming week or so.