I had the need for a short break from SP2013 research this week and spent that time building a new solution that I thought I’d share with you, called SP SIN.
SP SIN is a highly extensible solution for injecting script, style sheets, or technically anything you like, into a SharePoint page without having to modify master pages or muck around with SharePoint Designer. Typical usages are for SharePoint designers, script editors, first tier developers, or front end developers, that want to add resources either to an entire site or on individual pages.
I’ve recorded a video showing a brief overview of the out-of-the-box experience which is on YouTube (and below).
In addition to working great out-of-the-box, SP SIN is highly extensible. I’ve added a plug-in system based on the method I describe in Advanced Content Type Development so it’s easy for anyone with a bit of .NET skills to develop and add extended features. All you need to do is build a content type, override a method or two in a .NET class, and package it up as a WSP.
There’s even a YouTube video for that.
Creating your own resource types allow you to add completely new filtering and output functionality to SP SIN. The video shows how to build a resource type that extends one of the built-in types by adding filtering based on whether the current user is member of the Owners group of the site. To accomplish this, the entire amount of code writing required is something like 20 lines, and that includes the content type definition.
Also, because everything is based on straight SharePoint development, you retain all the power of building SharePoint solutions. I’ve added a system to manage and deploy configuration packages, which are essentially pre-built sets of configuration, for example if you want to deploy both SPServices and jQuery in one fell swoop. These configuration packages are just plain SharePoint WSP solutions that deploy items to the resource list.
In fact, this is a perfect scenario for using the SPSampleData extractor that I also wrote and is also available on CodePlex. SPSampleData will create the Elements part of a feature based on the contents of a list. I’ve even added a new preview version of SPSampleData today that works better in SharePoint 2010 due to the lack of a List Settings context menu there, but please read the caveats.
Oh, and yes, there’s a video to explain that too.
Now, people have been asking me whether this can be packages into a SharePoint 2013 App or a sandbox solution. No, it cannot. I find both methods to be rather limiting and this project shows some of the things that you cannot accomplish with such limitations. SP SIN also shows what the power of farm solutions, wielded by careful hands, can accomplish in essentially just a couple of hundred lines of code.
Note: I should mention that the entire development time, in calendar time, for SP SIN is around 24 hours, from the time I knew what I wanted to do to the time I had built and tested everything and recorded the first overview video.
It’s not my intention to be political in this post; SharePoint 2013 Apps certainly may have a place in the list of options, but this isn’t about building Apps or even sandbox solutions, it’s about solving a problem that’s been bugging front-end developers for years. For this type of project, a farm solution is the only way to go.
I have a lot of ideas on what to do, and I want to engage the community to, so keep your eyes peeled for more information on SP SIN. You can follow the project on http://spsin.com/ where you can download the entire thing absolutely free. There’s the WSP solution you need, there’s the full source code, and there’s a couple of sample Visual Studio projects to show you how to extend SP SIN if you want.
Found this article valuable? Want to show your appreciation? Here are some options:
a) Click on the banners anywhere on the site to visit my blog's sponsors. They are all hand-picked and are selected based on providing great products and services to the SharePoint community.
b) Donate Bitcoins! I love Bitcoins, and you can donate if you'd like by clicking the button below.
c) Spread the word! Below, you should find links to sharing this article on your favorite social media sites. I'm an attention junkie, so sharing is caring in my book!