Skip to main content

How to Remove Workspace Link from a Calendar


First, we need to provision a new calendar with our custom Feature:

<?xml version="1.0" encoding="utf-8" ?>
<Feature
    Id="AF8444FE-65D9-4ae2-BAD7-C39917871474"
    Title="Calendar without Workspace Link"
    Description="Installs a new calendar without workspace link."
    Version="1.0.0.0"
    Scope="Web"
    Hidden="FALSE"
    ImageUrl="Meteoriitti/Feature.gif"
    ReceiverAssembly="..."
    ReceiverClass="CalendarFeatureReceiver"
    xmlns="http://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementManifest Location="Lists.xml"/>
    </ElementManifests>
</Feature>
Lists.xml:

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <ListInstance
        Title="Events"
        Description="Event calendar..."
        Url="Lists/Events"
        TemplateType="106"
        OnQuickLaunch="True"
        FeatureId="00BFEA71-EC85-4903-972D-EBE475780106">
    </ListInstance>
</Elements>
And the most important part of it, the Feature Receiver:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    var web = properties.Feature.Parent as SPWeb;
    if (web == null) return;
    using (web)
    {
        var list = web.Lists["Events"];
        var field = list.Fields[SPBuiltInFieldId.WorkspaceLink];
        field.Hidden = true;
        field.Update();
    }
}
You can use the code for example in a PowerShell too, if you need to modify existing calendar. It seems like you can edit sealed content types’ fields’ Hidden property without errors. I also tried deletion, but it didn’t work. ShowInNewForm property didn’t have any effect either. Finally the Hidden property worked just fine.


Having then done that I realised that you could edit the Event content type to make it hidden across the entire site collection
http://blog.salamandersoft.co.uk/index.php/2011/03/removing-the-use-a-meeting-workspace-option-from-all-existing-and-new-sharepoint-calendars-in-a-site-collection/

Comments

Popular posts from this blog

SharePoint Game Webpart

http://spgameoflifewebpart.codeplex.com/ Goal: The Game of Life web part was created for a talk I presented at SharePoint Saturday New York in 2009. At the time, SharePoint 2010 was still in Beta and most people hadn't see the Enterprise Metadata Management (taxonomy) features. I used the Game of Life web part as an introduction to the new taxonomy API. I offered to provide the code, so here it is. Requirements ----------------------- - SharePoint Server 2010 with Enterprise Features - Visual Studio 2010 (inc. SharePoint tools) Setup ----------------------- 1. Add your account as a Term Store Administrator. This right is independent to Site Collection Administrator or Farm Administrator status. To open the Term Store Management Tool go to Site Actions > Site Settings > Site Administartion > Term Store Management. You can also  open the same interface from Central Administration > Manage Service Applications > Managed Metadata Service. 2. Run the sol...

CAML Query Helper Class

http://sharepointcamlhelper.codeplex.com/ https://camldotnet.svn.codeplex.com/svn/JohnHolliday.Caml.Net/CAML.cs CAMLManager mgr = new CAMLManager(); mgr.QueryGroups.Add(new QueryGroup("Title", Types.FieldTypes.Text, Types.QueryTypes.Eq, "A Title")); mgr.QueryGroups.Add(new QueryGroup(Types.JoinTypes.Or, "Title", Types.FieldTypes.Text, Types.QueryTypes.Eq, "Another Title")); mgr.QueryGroups.Add(new QueryGroup(Types.JoinTypes.And, QueryGroup.MergeTypes.Contain, "Total", Types.FieldTypes.Number, Types.QueryTypes.Geq, "2")); string caml = mgr.GetCAML(); Will provide the following: <Where>   <And>     <Or>       <Eq>         <FieldRef Name="Title" /><Value Type="Text">A Title</Value>       </Eq>       <Eq>         <FieldRef Name="Title" /><Value Type="Text">Another Title</Value>     ...

Globally Reusable Workflow in SharePoint 2010

http://www.codeproject.com/KB/sharepoint/ReusableWFsSharePoint2010.aspx http://www.khamis.net/blog/Lists/Posts/Post.aspx?ID=18 Video: Publish globally reusable workflows in SharePoint Designer 2010