Skip Ribbon Commands
Skip to main content

Robin | zevenseas | SharePoint Blog

:

The zevenseas Community > Blogs > Robin | zevenseas | SharePoint Blog
March 23
Careers at Zevenseas India: SharePoint, MVC and Web Testing

Post by Daniel McPherson

We have a great team at Zevenseas India (Pune), we have been super careful about making sure that we have only grown with team members that make our team as a whole better. I’m really enjoying heading to the office each day knowing that its going to be filled with tough technical challenges, tech talk, and of course, Chai and Pakora.

We are lucky enough to have some fantastic customers, and with them some fantastic projects, and when you combine that with the fantastic people we have, well, it means we keep…ummm…..fantastically busy, you get the idea. For that reason, we are always on the look out for people like us. People who put a working environment that provides them with challenge, responsibility and freedom, first, and where they are surrounded by positivity, smarts and people we enjoy working with. This is what I mean: http://www.zevenseas.com/go.aspx?India=Info

Right now we are looking for the best in India at SharePoint Development, .NET MVC, and Web Testing.

While enthusiasm is important to us, please only send your resume if:

Developer

  1. You have more than 2 years experience with SharePoint Technologies.
  2. You are a C-Sharper
  3. You are in Information Technology because you love it and can prove it!
  4. You are a great communicator, and a team player.
  5. You love SharePoint.

http://www.linkedin.com/jobs?viewJob=&jobId=1493232

Web Tester (Microsoft Platform)

  1. You like automation, having experience with both creating scripts and running tests
  2. You have spent 2 years of more testing websites and web services
  3. You know what “the cloud” is all about and the unique challenges that environment presents
  4. You have worked in an Agile environment, and created and executed test cases from user stories using a test plan template
  5. You like getting your hands dirty with manual functional testing and regression testing in a variety of web browsers

Email us at career@zevenseas.com

MVC Guru (MVC.NET and C#)

  1. You have significant experience building solutions according to MVC pattern
  2. You have more than 2 years experience with .NET technology
  3. You are a C-Sharper
  4. You are in Information Technology because you love it and can prove it!
  5. You are a great communicator, and a team player.

http://www.linkedin.com/jobs?viewJob=&jobId=1493312

If this is you, then please send your resume to daniel@zevenseas.com or skype: danielmcpherson or twitter @danmc we’d be happy to buy you a coffee, a chai or host you at our office where you can meet the team.

December 30
Don’t panic!

Today is my last working day as a technical SharePoint consultant for zevenseas.. What am I going to do? I will be joining Microsoft as a SharePoint PFE. Why? Well, there are a couple of reasons.. Daniel summed it up rather well actually..

If you love SharePoint, love to travel, love the challenge of troubleshooting hard problems, love delivering specialised workshops AND want to work in a way cool, growing team… @ Want to be a Rapid Response Engineer

I was sold then.. but due to some weird circumstances things didn’t fall through and Daniel and I ended up working together at zevenseas (how weird is that eh?). Now after three awesome years, I’m still curious about that role and decided to go for it before it's too late (and by that, I mean having kids and scary stuff like that ;)

So there you have it..  wish me luck and see you in the new year!

October 08
zevenseas is speaking at TechEd Berlin 2010!

My mate Daniel and I have the privilege of speaking at one of the biggest Microsoft events in Europe of the year. And, we are not alone! Wouter van Vugt is joining the party as well :)

Here are the topics we’re going to talk about :

  • Build Compelling Intranets and Extranets with SharePoint 2010:
    • overview of the SharePoint for Internet Sites components, including FAST Search for SharePoint, WCM, BI, and Forms, and how they can be assembled together to make great internet sites.
  • SharePoint 2010 Governance:
    • this session will provide a practical overview of the close relationship between your information management requirements and SharePoint’s manageability controls, and the demands that it places on your design and infrastructure. This session is focused on architecting a logical design of SharePoint that supports your information management requirements and governance plan effectively.

Hopefully during one of the five days a SharePint will be organized.. otherwise, we intend to organize one (or more, we are in Germany after all ;)

See you there!

September 30
Yet Another SharePoint Gem : ForwardLinks and BackwardLinks

I always wondered what the properties ForwardLinks and BackwardLinks were meant for when I browsed through the properties of a SPListItem and SPFile.. and now I finally know! It’s another gem that SharePoint has.. let me show you how the product team has exposed this in the Manage Content & Structure page :

image

If look closely, there are two types of links.. ‘uses’ and ‘used by’(hence the Forward- and BackwardLinks). But let’s take a step back.. it seems that SharePoint knows that links are being used in content! Let’s test this using a very simple example, a blank site, using a Content Editor WebPart and an image stored in a document library.

image

image

image

image

So we have this.. now let’s take a look in code what the backward and forwardlinks are in the default.aspx and in the image..

image

image

And now for the magic part.. let’s move the picture to another library and be amazed..

image

And the source of the Content Editor WebPart looks like this :

image

Sweet eh? And I’ve never known this until now (and that’s the thing I really like about SharePoint..  the ability that is has to amaze you, even after so many years ;) .. now the good thing is that this functionality works for every SharePoint content control.. but (and here it comes) it doesn’t work for third party content controls like the Telerik Editor. And what are we recommending most of the time when it comes around rich HTML editing in SharePoint.. yes.. “get rid of the out of the box control and replace it with Telerik’s one”.  Question is then, how we do enable this awesome link functionality then?

Now instead of trying to manipulate the BackwardLinks and ForwardLinks collection (which we can’t because they are read-only) by some awesome complex code, why not let SharePoint handle this.. how?

Let me show you!

First..  let’s agree on the following fact, the Telerik field controls/webparts are used on (publishing) pages. Meaning that we columns (fields) at our disposal to (ab)use, remember that out of the box content controls do work with the linking? What if we could store the data from the webpart into a RichHTML field that the user doesn’t know of.. All we need now is an event to kick off when the user saves the page, so we just look no further than the eventreceivers like the ItemUpdated one on the Pages library..  To sum it up in some steps :

  1. User adds an image to the Telerik WebPart
  2. User saves the page
  3. EventReceiver kicks in..
    1. EventReceiver checks if an RichHtmlField exists, if not it will create it and makes it hidden, otherwise it does nothing
    2. EventReceiver get’s the actual page from the ListItem, opens it up and loops through the WebParts, checks if it is a Telerik one and gets the content and places this in the RichHTML field.
    3. EventReceivers updates the ListItem
  4. User checks the Content & Structure page and is amazed!

Here’s the eventreceiver looks like in code

public class PageReceiver : SPItemEventReceiver
{
    private const string LinksFieldName = "_Links";
    private string actualHtml;

    public override void ItemUpdated(SPItemEventProperties properties)
    {
        base.ItemUpdated(properties);
        this.DisableEventFiring();
        
        SPWeb web = properties.OpenWeb();
        SPList list = web.Lists[properties.ListId];

        if (!list.Fields.ContainsField(LinksFieldName))
        { 
            list.AddField("_Links", "_Links", SPFieldType.Note, false);
            SPFieldMultiLineText linksField = (SPFieldMultiLineText)list.Fields[LinksFieldName];
            linksField.RichText = true;
            linksField.RichTextMode = SPRichTextMode.FullHtml;
            linksField.RestrictedMode = false;
            linksField.Hidden = true;
            linksField.Update();
        }

        SPListItem listItem = list.GetItemById(properties.ListItemId);

        SPFile actualPage = listItem.File;


        using (SPLimitedWebPartManager limitedWebPartManager = 
            web.GetLimitedWebPartManager(actualPage.ServerRelativeUrl, 
            System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
        {
            for (int x = 0; x <= limitedWebPartManager.WebParts.Count - 1; x++)
            {
                if (limitedWebPartManager.WebParts[x] is CustomTelerikWebPart)
                {
                    CustomTelerikWebPart telerikWebPart = 
                        (CustomTelerikWebPart)limitedWebPartManager.WebParts[x];                        
                    actualHtml 
                        += "||" 
                        + telerikWebPart.StorageKey.ToString() 
                        + telerikWebPart.Text;
                }
            }
        }

        listItem[LinksFieldName] = actualHtml;
        listItem.SystemUpdate();

        this.EnableEventFiring();
    }
}

As you’ve probably have noticed is that I’m referring to a custom Telerik WebPart.. the reason why is that it’s quite nice to keep the stored HTML in sync (if the image is moved to another location within the sitecollection, it would be quite nice that the link is also replaced in the editor). To keep it really short, I’ve opened up Reflector looked at the webpart that Telerik has created and created my own version of it and only modified the Text property with this piece of code : 

[Browsable(false), DefaultValue(""), FriendlyName("Text"), Description("Text Property"), WebPartStorage(Storage.Personal)]
public virtual string Text
{
    get
    {
        if (Page == null)
            return (this._text ?? "");
        if (Page.IsPostBack)
            return (this._text ?? "");

        if (SPContext.Current == null)
            return (this._text ?? "");
        
        if (SPContext.Current.Item == null)
             return (this._text ?? "");
            
        SPListItem item = SPContext.Current.ListItem;
        if (!item.Fields.ContainsField("_Links"))
              return (this._text ?? "");

        string[] textValues = item["_Links"].ToString().Split(new String[] { "||" }, StringSplitOptions.None);
        foreach(string textValue in textValues)
        {
            if (string.IsNullOrEmpty(textValue))
                continue;

            string[] webpartTextValue = textValue.Split(new String[] { this.StorageKey.ToString() }, StringSplitOptions.None);
            if (webpartTextValue.Length > 1)
                return webpartTextValue[1];                        
        }
        
         return (this._text ?? "");
    }
    set
    {
        this._text = value;
    }
}

There you have it… hope you learned something.. because I sure did! :)

September 23
Experiences with URL Rewriting and SharePoint

With IIS7 comes the URL rewrite module.. and the beauty of this is, that you can write your own provider to do the magic... And that’s just the thing that we did in our current project!

Why? Well.. because, instead of rewriting ‘dirty’ urls to ‘friendly’ urls, we do it the other way around. We take ‘friendly’ urls and make them ‘dirty’ again so that our solution can do it’s thing..  We can do this, because we also wrote our own navigation provider, meaning that we have complete control of the urls that are being rendered (they are either friendly or dirty) on the page.

Let me give you an example of such an url translation:

(on the summary.aspx page, we have two webparts that, based on the querystring, either shows an overview of all the products within a category or shows detailed information about the selected product)

This is how the web.config section looks of the url rewrite module

<rewrite>
  <rules>
    <rule name="ContosoUrlRewrite" enabled="true" patternSyntax="Wildcard" stopProcessing="false">
      <match url="*" />
      <action type="Rewrite" url="{ReplaceProvider:{REQUEST_URI}}" appendQueryString="false" />
    </rule>
  </rules>
  <outboundRules>
    <preConditions>
      <preCondition name="ResponseIsHtml1">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
      </preCondition>
    </preConditions>
  </outboundRules>
  <providers>
    <provider name="ReplaceProvider" type="Contoso.Web.Common.RewriterProvider, Contoso.Web.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f582335141651861">
      <settings />
    </provider>
  </providers>
</rewrite>

As you can see, we apply the rewrite action on the REQUEST_URI on every url that is handled by IIS by using our own provider.  So, how does the provider look like then eh?

First the REQUEST_URI is passed to the Rewrite method, based on what the value contains we are going to parse the value and thus rewriting the url OR we do nothing at all  if the url is valid (for example, when a dirty url is being used we just pass the dirty url through and don’t do anything with it).
Next, if the url contains the world “onlineshop” it means that it was a friendly url, so we need to rewrite it and determine what kind of url we need to pass back (either a category url or category plus productid url).

You can also notice the ‘Avoid302’ method, what SharePoint does when you navigate to the root of a site/web (like http://www.contoso.com) it redirects you to the /pages/default.aspx or /default.aspx with a 302 status. SEO wise, a 302 wise is not ‘friendly’ and it should be a ‘301’ instead. But, none of them is even more perfect! In our project, we only use the /pages/default.aspx for our homepages so we can ‘redirect’ the user straight away instead of SharePoint having to do this for us thereby avoiding a 302 or 301..

/// <summary>
/// This is where the magic happens.. from IIS we get every request passed through,
/// by only filtering where the url contains 'onlineshop' we rewrite only the urls that
/// are used in the product and category pages.
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public string Rewrite(string value)
{      
    //If the url contains a ~ symbol it means that requested 
    //url comes from the layouts or another virtual directory, 
    //therefore splitting it and only returning the server relative url
    if (value != null && value.Contains("~"))
    {
        var parts = value.Split(new[] { '~' });
        if (parts.Length > 1)
        {
            return parts[1];
        }
    }

    //Rewriting category and product urls
    if (value.Contains("/onlineshop"))
        return ParseUrl(value);

    if (value.EndsWith("/"))
        return Avoid302(value);

    //If nothing is corresponding then we leave the url as it is..
    return value;
}
 
/// <summary>
/// This parser is responsible for figuring out 
/// what kind of url is requested and thus 
/// determined what the return Url is going to be so that
/// our code can handle properly.
/// </summary>
/// <param name="incoming"></param>
/// <returns></returns>
private string ParseUrl(string incoming)
{
    string url = String.Empty;           

    //Check if we got a product
    url = GetProductUrl(incoming);
    if (url != null)
        return url;

    //Cehck if we got a category.
    url = GetCategoryUrl(incoming);
    if (url != null)
        return url;

    return null;
}

/// <summary>
/// The awesome RegEx comes from no other than 
/// Emile Bosch (http://nl.linkedin.com/in/ebosch)
/// </summary>
/// <param name="incoming"></param>
/// <returns></returns>
private string GetCategoryUrl(string incoming)
{
    var r = new Regex("onlineshop/(.*)");
    var m = r.Match(incoming);
    if (m.Success)
    {
        var category = m.Groups[1].Value;
        return BuildUrl(category, string.Empty);
    }
    return null;
}

/// <summary>
/// The awesome RegEx comes from no other than 
/// Emile Bosch (http://nl.linkedin.com/in/ebosch)
/// </summary>
/// <param name="incoming"></param>
/// <returns></returns>
private string GetProductUrl(string incoming)
{
    var productRegex = new Regex("(onlineshop/(.*?)/([aA-zZ_0-9-]+-([0-9]+)))",
        RegexOptions.Multiline | RegexOptions.Compiled);

    var x = productRegex.Match(incoming);
    if (x.Success)
    {
        var category = x.Groups[2].Value;
        var prodid = x.Groups[4].Value;
        return BuildUrl(category, prodid);
    }
    return null;
}

/// <summary>
/// This method builds the Url so that our logic doesn't even know that url was 'clean'
/// </summary>
/// <param name="categoryId"></param>
/// <param name="productId"></param>
/// <returns></returns>
private string BuildUrl(string categoryId, string productId)
{
    categoryId = categoryId.Replace("/", "_");
   
    if (!string.IsNullOrEmpty(productId))
    {
        return "/onlineshop/pages/summary.aspx?category=" + categoryId + "&productid=" + productId;
    }

    return "/onlineshop/pages/summary.aspx?category=" + categoryId;
}
 
/// <summary>
/// This is to avoid the 302 that SharePoint likes to give when landing on the "/"
/// of a SharePoint site/web and redirects you to default.aspx. 
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
private string Avoid302(string value)
{
    return value + "pages/default.aspx";
}
 

This is how we solved the url rewriting bit. Some things for your consideration, there is not HttpContenxt (and thus no SPContext) at the time that the Url Rewriting takes place. Therefore, no logic can be used to do even more fancy stuff.. yet it also means that it’s very light weight and has less performance impact. Also, when a Url has been rewritten, the rewrite is being cached (makes it very difficult to debug sometimes because the urls are cached.. so a lots of IISRESETS are meant to be done for debugging (but we aren’t new to that now are we? ;))
Also, if look around and do your homework, you wil find out that URL Rewrite + SharePoint = No Support, so make sure your client/customer knows about this. On the other side, the beauty of this technique is that you can turn it on and off relatively easily in IIS plus everything will remain working if you pass the ‘dirty’ urls, since we are only rewriting the friendly ones.

In short, by taking this approach, we are not rewriting SharePoint urls to be friendly.. we are ‘just’ handling friendly urls that are coming from a custom navigation provider that we have to make ‘SharePoint’-ish again.

Some helpful links:

August 25
Announcing : zevenseas Classic Theme

Who is a fan of the way how themes were being used in SharePoint 2003 and 2007? I know, I am! In my opinion the theming support in SharePoint 2010 is ok but it lacks the the level of customization which could be achieved by the previous implementation of themes in SharePoint. What exactly, you might wonder. Well, first and foremost you had the ability of creating your own .css file. Next, while adding the theme to your SharePoint farm, you could apply the theme to every site in your farm (the question there is, do you want that in the first place, but that’s a whole other topic ;).

You could have the option of using the AlternateCSS, but that option is only available in publishing environments which means that it’s not available in a SharePoint foundation environment. Plus, maybe you don’t want to enable the publishing features on a collaboration site. You might wonder.. ok Robin.. now what? Well, luckily the good ‘ol theme engine of 2003/2007 is still available (on the filesystem, in the API) we only need a way of exposing this in the UI. So that’s why I developed the Classic Theme solution! Great Scott! (http://www.imdb.com/title/tt0088763/quotes)

So what does it do then..

  1. Gives you the ability to apply a theme to your site
  2. Gives you the ability to administer which themes are available in which webapplication
  3. Gives you the ability to deploy your custom theme in a supported way (by not overriding the spthemes.xml file)

If you are one of those to read my blog regularly, then you maybe recall that I created a solution already to support bullet no2 and 3 (http://community.zevenseas.com/Blogs/Robin/archive/2009/08/03/adding-themes-the-supported-way.aspx) so it was just a matter of blowing the dust off that solution, make it ready for SharePoint 2010 and add the functionality to apply an ‘old’ theme to your site. The rest of this post will about how I achieved bullet no 1..

Let me show you how it looks right now..  given the following awesomely written theme.css

.s4-title
{
    background-image:none;
    background-color:yellow;
}

1. First we have to activate the sitecollection feature

image

2. Once that is done, we have the following new option available in the Customization section of the SiteSettings screen

image

3. Then we have a selection of the currently installed themes (plus our new blank one)

image

4. When clicked on Apply, this is the result (awesome yellow!)

image

When we open up SPD, we can see that the theme actually is copied from the THEMES folder into the _themes folder of the selected site:

image

Pretty cool eh? ;)

Let me show you I have achieved this..

public void ApplyThemeBtn_Click(object sender, EventArgs e)
{
    SPWeb currentWeb = SPContext.Current.Web;
            
    //If the theme was already applied to the site, 
    //SharePoint raises an error that the theme was already applied.
    try{currentWeb.ApplyTheme(ThemesDropDown.SelectedValue);}
    catch (SPException exception){}

    SPLongOperation addThemeOperation = new SPLongOperation(this.Page);
    addThemeOperation.Begin();
    addThemeOperation.LeadingHTML = (ApplyAllWebs.Checked) ? 
        "Applying the theme to the current web and it's subsites" : "Applying the theme to the current web";
    string cssUrl = ApplyAlternateCSS(currentWeb.Url);
    if (ApplyAllWebs.Checked)
    {
        foreach (SPWeb subweb in currentWeb.Webs)
        {
            subweb.AlternateCssUrl = cssUrl;
            subweb.Update();
        }
    }
    currentWeb.AlternateCssUrl = cssUrl;
    currentWeb.Update();
    addThemeOperation.End("/_layouts/settings.aspx");
}
private string ApplyAlternateCSS(string webUrl)
{
    string cssUrl = string.Empty;

    //When Applying a theme, some copy action takes place behind the scenes.
    //To be sure that everything is populated we get a new instance of the site and web
    //And to be extra, extra safe, we are going to a lot of 'Exists' queries on the folders ;)
    using (SPSite site = new SPSite(webUrl))
    {
        using (SPWeb themeWeb = site.OpenWeb())
        {
            SPFolder themesFolder = themeWeb.Folders["_themes"];
            if (!themesFolder.Exists)
            {
                themesFolder = themeWeb.Folders["_themes"];
            }

            SPFolder themeFolder = themesFolder.SubFolders[ThemesDropDown.SelectedValue];
            if (themeFolder.Exists)
            {
                cssUrl = themeFolder.Url + "/theme.css";
            }
        }
    }

    return cssUrl;
}
 

So some background information, when you click on Apply, I’m applying the theme to the site. This ensures that the theme.css and all the other files are copied from the filesystem to the site. Next, in another function, I’m trying to see whether that action has been done by getting an instance to the SPFile of Theme.css. By having this object, I also have the URL of it. With this URL I’m able to set the alternate CSS Url property of the current SPWeb (and if checked, all it’s subwebs).. and that’s it!

With the solution I also added a ‘blank’ theme solution to create your own theme. Just keep in mind the rules when creating a theme, just like you did for SharePoint 2007 (foldername must exactly match TemplateID in the .xml file)

Now it’s only up to us to create some fancy themes to use with SharePoint 2010..! Grab the solution here from CodePlex and let me know what you think of it and also if you want to collaborate on creating themes don’t hesitate in pinging me ;)

July 28
Do you (still) live in India.. and do you love SharePoint?

To give you an idea on what we are looking for, see the following three profiles. If this is you, then please send your resume to daniel@zevenseas.com or skype: danielmcpherson or twitter @danmc we’d be happy to buy you a coffee, a chai or host you at our office where you can meet the team..

Developer

  1. You have more than 2 years experience with SharePoint Technologies.
  2. You are a C-Sharper
  3. You are in Information Technology because you love it and can prove it!
  4. You are a great communicator, and a team player.

Designer

  1. You have significant experience applying creative designs to SharePoint Sites
  2. You love the possibilities presented by Javascript
  3. You are a designer because you love it and can prove it!
  4. You are a great communicator, and a team player!

MVC Guru

  1. You have significant experience building solutions according to MVC patterm
  2. You have more than 2 years experience with .NET technology
  3. You are a C-Sharper
  4. You are in Information Technology because you love it and can prove it!
  5. You are a great communicator, and a team player.
July 27
Want to upgrade features using the UI instead of PSConfig or STSADM?

One of the biggest opportunities that Microsoft has given the ISV/Community with SharePoint 2010 was to give the end user the ability to upgrade Features using the UI instead of relying on IT to upgrade it for them (since the only way you can upgrade features OTB in 2010 is by using the command line or using custom code). When Chris O’Brien did his talk about Upgrading Features during the SPEvolutions conference that was held in march he teased us with a beta version of the SPFeature Upgrade kit.. and now he released it on CodePlex!

Here are some screenshots of the tool, just to give you an idea on how it looks and what it actually does ;)

CentralAdmin_CompletedUpgradeWebAppFeatures_thumb[6]

CentralAdmin_UpgradeSiteFeatures_thumb[4]

CentralAdmin_UpgradeWebAppFeatures_thumb[13]

 

If you want to know more about upgrading features, head over to Chris’s blog and read the following posts:

Great job buddy! Think a lot of people owe you a beer in the next couple of years! ;)
July 26
SharePoint Patterns & Practices Guidance now available for 2010

It doesn’t matter if you are new to SharePoint development or a guru, you should check out the SharePoint Patterns & Practices Guidance that is available at http://msdn.microsoft.com/en-us/library/ff770300.aspx. Why should you check it out? Well, because when developing your awesomely SharePoint project, it’s always good to know how others solved all those common issues like logging exceptions, storing configurations, create data layers, etc so you don’t have to worry about that and just implement the business logic that your project needs.

The guidance documentation is divided into four core sections.

  • Application Foundations for SharePoint 2010. This section describes approaches you can use to address the challenges of testability, flexibility, configuration, logging and exception handling, and maintainability; it also explains how to use the SharePoint Guidance Library components in these areas.
  • Execution Models in SharePoint 2010. This section provides deep technical insights into the mechanics of the full-trust execution environment, the sandbox execution environment, and various hybrid approaches to executing code in SharePoint applications.
  • Data Models in SharePoint 2010. This section explains new list and external data functionality, key design decision points that can help you to choose between standard SharePoint lists and external lists, and techniques and patterns to address large lists and list aggregation.
  • Client Application Models in SharePoint 2010. This section provides guidance on how best to use the new client-side functionality to access data and build richer client experiences with Silverlight and Ajax.

Each section also contains a set of how-to topics. These explain how to perform specific tasks that the team found challenging to discover.

And you are probably wondering who were involved in writing these patterns and practices, well it features almost every big name that is our there in SharePoint world so you can bet that the quality is more than awesome! :)

July 07
So you want an AppStore for SharePoint eh

Well, look no further because actually we already got one.. for quite some time actually.. want to know more? ;) Then read this post Everybody’s talking about an AppStore for SharePoint by my mate Daniel where he goes into detail about it and even shares that our AppStore is working for SharePoint 2007 already, making it ideal for the current BPOS users.

1 - 10Next
 

 Most Discussed

 
zevenseas AD ChangePassword WebPart released 29
This form was customized not working with attachment – Solved! 16
zevenseas Feature Blocker 14
Want to prevent users from activating certain features? 14
Site Life Cycle Management V2 .. Why V2? 10
zevenseas LCM.. it’s finally here! 9
Want to configure Timer Jobs ? ;) 8
SPList has no Url property? 8
InfoPath attachment workflow activity 8
Re-using SharePoint controls 7
New MOSS SP2 bug? 7
Nintex Workflow 2007 7
QuickTask WebPart 7
Can you guess what happened today? 7
Using the PeoplePicker in your custom webpart 7
I’m a SharePoint Services MVP! 6
Extending CQWP by doing a bottom-up aggregation 6
Want to blog about SharePoint using SharePoint? 6
SP.UI.Notify is awesome 5
Little blackbox called WebConfigModifications 5
Using the PageViewerWebPart to show a list or document library as a ListViewWebPart 5
Updated : FeatureBlocker 4
Do you live in India.. and do you love SharePoint? 4
Building a custom Nintex Workflow Activity : using the CredentialPicker 4
Why I love twitter 4
Application Pages and choosing the right master page 4
operation is not valid due to the current state of the object 4
ContentIterator 3
Adding Themes the supported way! 3
New MOSS SP2 bug .. continued and problem solved! 3
UpdateListItems vs ProcessBatchData to create Folders 3
Assembly free Twitter-like solution for SharePoint 3
About custom Timer Jobs and SPJobLockTypes 3
SPApplicationPool 3
Creating and configuring sites programmatically.. I love it! 3
Aargh I'm tagged by Bart Wessels! 3
SPC 2008 : How Microsoft Product Support Troubleshoots SharePoint 3
SPC 2008 : From chaos to governance 3
IGNITE recap 2
OperationsPage & ApplicationsManagementPage 2
zevenseas FeatureBlocker updated 2
Anonymous Application Pages 2
Using the SchedulePicker 2
Updated SharePoint Hard Limits and recommended practices 2
Fields hidden from the NewForm should have defaultValues set otherwise.. 2
I’d wish I knew about the SPPersistedObject a bit earlier.. 2
The zevenseas Choice Column Filter Web Part 2
Seattle! 2
Want to write MOSS Search queries ? 2
Want to know why SharePoint loads up very slowly during the first request? 2
Tagged Links beta now available! 2
Password reminder v3! 2
Useful references for building custom field controls 2
Enumerating through SSP's 2
SPC 2008 : Best practices for SharePoint Solution Deployment 2
SharePoint file encoding and uploading the CustomQuickAccess.xml 1
Where is the Save button? 1
Troubleshooting : An unexpected error occurred while connecting to the report server. Verify that the report server is available and configured for SharePoint integrated mode. 1
Item-level permissions for Document Libraries 1
Why are PortalSiteMapProvider properties defined in the web.config? 1
LCM updated 1
Did you know.. 1
About the SPPersistedObject and primitive types 1
SPC 2008 : Keynote announcements 1
Upgradeable features and/or WebApplication ContentTypes 1
Displaying workflow's that are waiting on approval 1
SyncUpgradeTimerJob: sleeping for 10 seconds 1
For those of you who don't read Dutch newspapers.. 1
Time for a change! 1
LCM : Creating custom application page and using the propertybag 1
Write error on file "wssxxx.tmp" 1
Careers at Zevenseas India: SharePoint, MVC and Web Testing 0
Don’t panic! 0
zevenseas is speaking at TechEd Berlin 2010! 0
Yet Another SharePoint Gem : ForwardLinks and BackwardLinks 0
Experiences with URL Rewriting and SharePoint 0
Announcing : zevenseas Classic Theme 0
Do you (still) live in India.. and do you love SharePoint? 0
Want to upgrade features using the UI instead of PSConfig or STSADM? 0
SharePoint Patterns & Practices Guidance now available for 2010 0
So you want an AppStore for SharePoint eh 0
Catching up on some good blog posts about our beloved SharePoint 0
SP2010 : Adding local accounts as managed accounts 0
ContentIterator .. part deux 0
FeaturePushdownJob 0
Social Computing Overview and a short status update 0
Current Navigation, SPNavigationNodes and the AreaNavigationSettings page 0
Discussions *BETA* Central 0
Quick update! ;) 0
Building a custom Nintex Workflow Activity : using the SitePicker 0
Building a custom Nintex Workflow Activity 0
zsThemes explained! 0
Publishing Page creation bug 0
Speaking at the SDN Event on 26th of June 0
TunnelPoint and ProduShare 0
DEVDAYS09 : SharePoint Application Pages.. what good are they and why should you use them? 0
A dutch SharePint this upcoming friday.. 0
Taking Assembly Free Solutions to the Next Level 0
Seminar Invitation: Meet International and Local SharePoint Experts in Amsterdam 0
Love Fridays AND Mondays at zevenseas. Time for a change? 0
 

 Most Recent

 
Careers at Zevenseas India: SharePoint, MVC and Web Testing 1226 Days Ago
Don’t panic! 1309 Days Ago
zevenseas is speaking at TechEd Berlin 2010! 1392 Days Ago
Yet Another SharePoint Gem : ForwardLinks and BackwardLinks 1400 Days Ago
Experiences with URL Rewriting and SharePoint 1407 Days Ago
Announcing : zevenseas Classic Theme 1436 Days Ago
Do you (still) live in India.. and do you love SharePoint? 1464 Days Ago
Want to upgrade features using the UI instead of PSConfig or STSADM? 1465 Days Ago
SharePoint Patterns & Practices Guidance now available for 2010 1466 Days Ago
So you want an AppStore for SharePoint eh 1485 Days Ago
SharePoint file encoding and uploading the CustomQuickAccess.xml 1515 Days Ago
Catching up on some good blog posts about our beloved SharePoint 1532 Days Ago
SP2010 : Adding local accounts as managed accounts 1560 Days Ago
ContentIterator .. part deux 1576 Days Ago
ContentIterator 1577 Days Ago
FeaturePushdownJob 1581 Days Ago
I’m a SharePoint Services MVP! 1581 Days Ago
SP.UI.Notify is awesome 1590 Days Ago
Social Computing Overview and a short status update 1640 Days Ago
Updated : FeatureBlocker 1644 Days Ago
Where is the Save button? 1647 Days Ago
Do you live in India.. and do you love SharePoint? 1653 Days Ago
Current Navigation, SPNavigationNodes and the AreaNavigationSettings page 1667 Days Ago
Discussions *BETA* Central 1700 Days Ago
IGNITE recap 1728 Days Ago
Quick update! ;) 1763 Days Ago
Building a custom Nintex Workflow Activity : using the SitePicker 1770 Days Ago
Building a custom Nintex Workflow Activity : using the CredentialPicker 1770 Days Ago
Building a custom Nintex Workflow Activity 1779 Days Ago
Little blackbox called WebConfigModifications 1793 Days Ago
zsThemes explained! 1802 Days Ago
Using the PageViewerWebPart to show a list or document library as a ListViewWebPart 1802 Days Ago
Troubleshooting : An unexpected error occurred while connecting to the report server. Verify that the report server is available and configured for SharePoint integrated mode. 1819 Days Ago
Adding Themes the supported way! 1823 Days Ago
Publishing Page creation bug 1827 Days Ago
OperationsPage & ApplicationsManagementPage 1830 Days Ago
Want to configure Timer Jobs ? ;) 1833 Days Ago
New MOSS SP2 bug .. continued and problem solved! 1840 Days Ago
Item-level permissions for Document Libraries 1844 Days Ago
Re-using SharePoint controls 1854 Days Ago
Why are PortalSiteMapProvider properties defined in the web.config? 1883 Days Ago
Speaking at the SDN Event on 26th of June 1886 Days Ago
New MOSS SP2 bug? 1889 Days Ago
TunnelPoint and ProduShare 1890 Days Ago
UpdateListItems vs ProcessBatchData to create Folders 1907 Days Ago
zevenseas FeatureBlocker updated 1910 Days Ago
Why I love twitter 1914 Days Ago
Assembly free Twitter-like solution for SharePoint 1919 Days Ago
About custom Timer Jobs and SPJobLockTypes 1924 Days Ago
DEVDAYS09 : SharePoint Application Pages.. what good are they and why should you use them? 1928 Days Ago
This form was customized not working with attachment – Solved! 1948 Days Ago
A dutch SharePint this upcoming friday.. 1948 Days Ago
Application Pages and choosing the right master page 1949 Days Ago
LCM updated 1952 Days Ago
Extending CQWP by doing a bottom-up aggregation 1954 Days Ago
Taking Assembly Free Solutions to the Next Level 1954 Days Ago
Anonymous Application Pages 1959 Days Ago
Seminar Invitation: Meet International and Local SharePoint Experts in Amsterdam 1970 Days Ago
SPApplicationPool 1975 Days Ago
Did you know.. 1977 Days Ago
Love Fridays AND Mondays at zevenseas. Time for a change? 1987 Days Ago
LCM Questions answered 1987 Days Ago
Some background about the development of LCM 1990 Days Ago
zevenseas LCM.. it’s finally here! 2001 Days Ago
About the SPPersistedObject and primitive types 2001 Days Ago
SPList has no Url property? 2006 Days Ago
zevenseas Feature Blocker 2017 Days Ago
Using the SchedulePicker 2020 Days Ago
Want to prevent users from activating certain features? 2025 Days Ago
LockIssue and LastContentModifiedDate 2033 Days Ago
SharePoint classes documented by MVPs’s 2045 Days Ago
SharePoint Best Practices UK Announced! 2061 Days Ago
The Link Conductor 2066 Days Ago
Isolator for SharePoint 2074 Days Ago
Charts for SharePoint using .NET3.5 SP1 ;) 2075 Days Ago
Tagged Links available for free 2075 Days Ago
QuickTask WebPart 2090 Days Ago
Nintex Workflow 2007 2097 Days Ago
Office14 for the Web 2101 Days Ago
Fields hidden from the NewForm should have defaultValues set otherwise.. 2109 Days Ago
Updated SharePoint Hard Limits and recommended practices 2110 Days Ago
Upgradeable features and/or WebApplication ContentTypes 2118 Days Ago
SharePoint dirty? Then Undirty()! 2122 Days Ago
I’d wish I knew about the SPPersistedObject a bit earlier.. 2150 Days Ago
Patrick Tisseghem 2155 Days Ago
operation is not valid due to the current state of the object 2157 Days Ago
zevenseas AD ChangePassword WebPart released 2187 Days Ago
Creating and configuring sites programmatically.. I love it! 2205 Days Ago
Can you guess what happened today? 2206 Days Ago
We are looking, for people who are looking, for the right change 2208 Days Ago
The zevenseas Choice Column Filter Web Part 2212 Days Ago
Lessons learned with Windows Workflow Foundation 2215 Days Ago
Displaying workflow's that are waiting on approval 2216 Days Ago
Catching up on some good blogposts.. 2216 Days Ago
Using the PeoplePicker in your custom webpart 2235 Days Ago
Want to know why SharePoint loads up very slowly during the first request? 2247 Days Ago
Want to write MOSS Search queries ? 2248 Days Ago
Lovely SharePoint issues shared by PFE 2256 Days Ago
Useful references for building custom field controls 2257 Days Ago
WSS Content PlaceHolders Reference Picture 2262 Days Ago
 

 Information

 
Owners
Wilco Turnhout

Views: 627764
Posts: 132
Comments: 316
 

 Tag Cloud

 
No Items Found