by

SharePoint Resources

SharePoint 2010
  • FAST Search Server 2010 trial - Microsoft FAST Search Server 2010 for SharePoint is a new search solution that delivers the power of FAST with the simplicity and TCO of Microsoft. It provides the best general productivity search on the market AND makes it easy and economical to build high-value search applications.
  • SharePoint 2010 Virtual Machine - This download contains a two Virtual Machine set for evaluating and demonstrating Office 2010 and SharePoint 2010. Additional training material can be found here and here. Here are resources for VS2010
  • SPG2010 Guidance – SharePoint Guidance drop notes
  • Technical Diagrams (posters) - these resources are visual representations of recommended solutions. include poster-sized documents available in formats including Microsoft Office Visio 2007 files (.vsd), PDF files, and XPS files
  • Evaluation Guide SP 2010 - This evaluation guide is designed to help IT pros gain sufficient knowledge and understanding to evaluate Microsoft SharePoint Server 2010
  • Broadcast PowerPoint on SharePoint 2010 - Guide to installing and configuring a solution for broadcasting Microsoft PowerPoint slide shows
  • Professional Developer Evaluation Guide - The SharePoint 2010 developer evaluation guide describes the SharePoint 2010 developer platform, including walkthroughs of some of the new capabilities for developers
  • SharePoint Developer Platform Wall Poster - The SharePoint 2010 Developer Platform wall poster shows a view of the SharePoint 2010 developer tools, community ecosystem, execution environment, Sharepoint Server 2010 workloads, and target application types. The poster is intended to be printed at 24 inches x 36 inches (61 centimeters x 91 centimeters)
  • Developer and IT Professional Learning Plan - A guide to learning about SharePoint 2010 for Developers and IT Pros
  • Getting Started with Development on SharePoint 2010 handson labs - Use these 10 hands-on lab manuals for SharePoint 2010 to get started learning SharePoint 2010 development
 
WSS
 
SharePoint 2007
  • Technical Diagrams (posters) - poster-sized documents with visual representations of recommended solutions
  • Sharepoint Server 2007 Virtual Disk - This download comes as a pre-configured VHD. This download enables you evaluate Microsoft Office SharePoint Server 2007. Virtual Server 2005 R2 is required to run this VHD.
  • Sharepoint 2007 SKD - The Microsoft Office SharePoint Server 2007 SDK contains conceptual overviews, “How Do I…?” programming tasks, developer tools, code samples, references, and an Enterprise Content Management (ECM) starter kit to guide you in developing solutions based on Microsoft Office SharePoint Server 2007
  • MOSS Virtual Disk - This download comes as a pre-configured VHD. This download enables you evaluate Microsoft Office SharePoint Server 2007
  • VisualStudio 2008 Extensions 1.3 (VSeWSS) - SharePoint project and item templates for Visual Studio 2008 - VSeWSS 1.3 (Feb 2009 CTP)
  • Accessibility Kit For Sharepoint - free downloadable kit that helps you to quickly implement WCAG 1.0 compliant sites
  • Sharepoint Guidance Kit - This guidance helps architects and developers design, build, test, deploy, and upgrade SharePoint intranet applications. A reference implementation demonstrates solutions to common architectural, development, and application lifecycle management challenges.
  • WSP Builder - A SharePoint Solution Package (WSP) creation tool for WSS 3.0 & MOSS 2007
  • STSDEV - A SharePoint developer's utility designed to quickly transform your ideas into real-world components that you can deploy into a staging or production Web farm with confidence.
  • Ten Themes for Sharepoint in VWeWSS - This is a set of ten Visual Studio 2008 extensions for SharePoint projects containing designed themes for SharePoint
  • Microsoft Web Platform Installer – One-click setup your whole development environment
  • Governance Check List for Sharepoint – A collection of hand-selected checklists and tips to provide comprehensive governance when implementing Sharepoint
  • Windows Sharepoint Services 3.0 SKD - The Windows SharePoint Services 3.0 software development kit (SDK) contains conceptual overviews, programming tasks, samples, and references to guide you in developing solutions based on Windows SharePoint Services 3.0
  • Managed Stack Explorer - if you want to troubleshoot hangs/performance issues in a process but don’t want to go through the hassle of getting and analyzing a dump.   What it will do is basically attach, snap the .net call stack and detach so you can see what all the .net threads are doing without using a debugger.
  • SharePoint Productivity Hub – The Productivity Hub is a Microsoft SharePoint Server 2007 site collection that offers training materials for end-users.

By

by

Disabling workspace meeting creation from SharePoint Calendar

In many big implementations for SharePoint, TeamSites is a great tool for collaboration and for user-driven participation.
There is also another functionality in SharePoint called Workspaces, which is a small cut-down version of what a TeamSite can offer. Workspaces normally can be used to track meeting minutes, small task forces and general gatherings and its automatically creation is found inside the calendar items, which makes the creation so easy by the users. All they have to do is to flick the checkbox and click OK.
For the big enterprises, it does not make much sense to implement TeamSites and still have to manage Workspaces due to the similarities it had to Team Sites, and specially when it is so easy to create on a uncontrolled manner.
So what how to disable workspaces creation and avoid the meeting workspaces proliferation?
you can achieve this in many ways. I can tell you the most common use found on the Internet: the JavaScript solution.
It is very simple to implement. Basically you drop JavaScript in the page and the JavaScript will look for the html row that contains the workspace checkbox creation, then once found make it invisible. In fact the option is still there, the users just cant see it anymore.
From an implementation point of view, that's straight forward and many users of many levels can actually do this. From a governance and architectural point of view, that's not the best recommended:
  1. it will introduce new code into SharePoint ecosystem, and potentially a new debug variable.
  2. it does not scale well.
  3. it is vulnerable to malicious code.
  4. an advanced enough user can in fact bypass that barrier by cross-scripting himself that option to be visible again
The other approach would be to understand SharePoint and how it works internally. Always have in mind that SharePoint was not meant to be modified, but extended or configured. If you research enough might find that this setting can be controlled.
sharepoint-disable-workspaces
To remove the option to create workspaces in SharePoint, you need to go to:
...12 hive folder\TEMPLATE\FEATURES\EventsList\Events
Edit the file called schema.xml (I would recommend to make a backup copy, as well) and edit the field to be like that:
59 <Field ID="{08fc65f9-48eb-4e99-bd61-5946c439e691}"
60 Type="CrossProjectLink" Name="WorkspaceLink"
61 Format="EventList" DisplayName="$Resources:core,Workspace;"
62 DisplayImage="mtgicon.gif" HeaderImage="mtgicnhd.gif"
63 ClassInfo="Icon" Title="$Resources:core,Meeting_Workspace;"
64 Filterable="TRUE" Sealed="TRUE"
65 SourceID="http://schemas.microsoft.com/sharepoint/v3"
66 StaticName="WorkspaceLink"
67 ShowInEditForm="FALSE" ShowInNewForm="FALSE">
the 2 new attributes ShowInEditForm and ShowInNewForm will control the workspace checkbox visibility.
Did you like that? :)
Update: Aapo from SharePoint Blues just mentioned another way to perform this operation. You should check that out.

By

by

How to programmatically configure RSS feed for a list in SharePoint

Here's another interesting story. SharePoint will overwrite all the RSS columns you might have setup for a list.
One of the tasks I was working was to process across all the list in all the sites of a specific site collection, then enable RSS settings for each list and set a predefined group of columns as the RSS output. Once that's done, one could easily go to the list settings and verify them like the figure below:
1
The whole process executed with no problems. No error messages and no warnings.
However, when I went to take a look at my modified RSS settings that's the screen I saw:
11
It means, nothing was setup the way I planned. Apparently nothing happened when the code executed.
So I went to debug and inspected the line one by one. No error and when I went to see the screen, that's what I've got:
 1
Yep. Everything was there and working.
How come it fails in first place and worked well on my second try?
This behavior continued on and on and and on, with many other libraries. Fails the first time, succeed in the second. So I went to look at the data definition using SharePoint Explorer. For a brand new library, that's what I saw:
4
And that's how it looks like once I execute my code to create a new RSS feed:
 5
All right. It means the RSS is actually there. So I went to see the RSS settings in the page and guess what...That's what I see:
11
The RSS is blank again!!!
Then I came back to see using the explorer and...
6
Voila... something is kick-starting the creation of a brand new RSS setting and overwriting my one for usage.
I had a guess but it was just too weird to believe: SharePoint creates automatically a RSS feed for the first time and only during the first time an user visits the settings page.
I decided to debug the page and try to understand what SharePoint calls are made via UI. I've got my hands on the _layouts/listsyndication.aspx page from SharePoint
2
and I attached a debugger to it. I chose a brand new document library to test my theory and during the first page load I got this breakpoint:
 3
During the page load there is javascript call to the server triggering SPList.EnsureRssSettings()
Then using .NET Reflector I opened the Microsoft.Sharepoint.Dll version 12 and found the method signature:
8
Looking inside the method I noticed:
  1. SharePoint does use a hardcoded string ("RssView") to control the RSS name and which view is a RSS type.
  2. EnsureRssSettings in fact creates a brand new Rss feed for you, without your request.
7 
So, debriefing the case. When you open up the settings page, the listsyndication.aspx page automatically performs a call to SPList.EnsureRssSettings() which automatically creates a RSS feed (if syndication is enabled) and makes it invisible (see property Hidden=true). When my code ran, it created another view with the same name RssView, but actually the web address was different. The next time the code executed, I was not working anymore with my view but with the previously automatically created Rss from SharePoint.
Closing up the case: Next time you need to create a Rss feed, you don't have to create a view. You just have to make sure you call in your code SPList.EnableRssSettings() and then go ahead and modify the SPList.View called "RssView"
Now, the code:
c0
and then to save the Rss feed...
 c1
See you later,

By

by

Versioning Settings and Picture Libraries Issues


Can you imagine a news website without any sort of control for the pictures being uploaded to the front page?
Content types (CT) are a big part of any well-planned content management system. In our enterprise we have a dedicated content team who is in control of the CTs for the CMS. They are extremely good at what they do and they really have a good grasp about the business, its processes, documents and metadata. Unfortunately, to deal with legacy systems is the issue and our legacy issue is to unify all the websites and its lists with its correct content types.
Early this week I had to find a way to setup and modify the versioning settings for the lists of our sites. As we can see, this can easily be done via Site Settings option. The issue here is that we have hundreds of sites, not to mention all the Team Sites, across all the enterprise. And possibly thousands of libraries. Meaning: It is impracticable to do this via UI. So, programmatically was the choice.
splist-versioning-control 
And honestly, this choice did not look so hard… at first at least.
The SPList object model exposes to us all the properties necessary do control these options enumerated in the page (as we will see in our code later) but make no mistake, the solution is not as trivial as one might think. The biggest problem is here: Enable Content approval.
Let’s do a short parenthesis here and reflect about this matter, from the business point of view.
And that’s a vital piece of functionality. Imagine a news website, like www.CNN.com or www.BBC.co.uk, possibly with hundreds of employees/contractors  working on the website content. They write news stories, upload pictures etc. As an editor, would you give them any level of access they want?  Of course not. In the ideal model, we must have a group of people responsible to approve the content being displayed to the public (i.e. using the Content Approver role). The last thing an editor wants to see is some crazy text flaming around everyone and displaying unacceptable behaviour (i.e. a text with racist remarks), or a picture that does not reflect the news report, or even worse, a picture that can potentially harm the viewers for being shown in the public.
To make short a long story: A content-based enterprise needs someone to be responsible for content approval.
Now, coming back to our technical venue.
 
splist-versioning-control-2
 
Of course we want to enable content approval. So we go ahead and call:
SPList.EnableModeration = true
And out of the blue during some point of the execution an exception is thrown every time this line is called. That was a surprise for me.
So I went on to MSDN to read about the property and the object and…no clues or answer to be found. I went to see what happened with the other libraries using the same code. In the vast majority of the libraries where I ran that code, they let me update this property, but a few did not. so, what went wrong?
Then after some research and no clear answer, I decided to debug the SharePoint DLL via code reflection. I went to see on MSDN which of the SharePoint DLLs contains the SPList object and as indicated it is the Microsoft.SharePoint.DLL.
 microsoft-sharepoint-assembly
I’ve got the DLL and then compared the signature of my reflected copy against the copy installed in the GAC. Just to make sure we all were talking about the same “story”.
    splist-enable-moderation-2
Note the member signature. There is nothing unusual here. It is a get / set, but let’s take a closed look at the SET method:
splist-enable-moderation-1
Interesting. “if the base template is a picture library then ERROR”.
Regardless of any test or comment. If we are dealing with a picture library, it seems to me that you can not enable content approval for it in SharePoint and immediately an exception is thrown.
IMO, I find this quite odd because in other instances, similar to this case, it is common place to expose another member to validate this test. For example, I would look for something like along the lines SPList.CanEnableContentApproval.
Anyway, moving on, problem found. I am not sure why content approval is not available for picture libraries. Indeed, if you go to the versioning settings for a picture library you won’t even see these options listed.
The solution : As of today, for me the way out of this is to use document libraries to handle the approval process for images. (if you have any other strategies for this matter, please let me know)
Now let’s take a look at the code to handle the full versioning control. Enjoy.
 
    1         /// <summary>
    2         /// Applies the versioning settings to the list.
    3         /// </summary>
    4         /// <param name="selectedList">The selected list.</param>
    5         public void ApplyVersioningSettings(Microsoft.SharePoint.SPList selectedList)
    6         {
    7             // enable content approval for this list
    8             // moderation is not supported for picture library types
    9             if (selectedList.BaseTemplate != SPListTemplateType.PictureLibrary)
   10                 selectedList.EnableModeration = true;
   11 
   12             // enable versioning for this list
   13             selectedList.EnableVersioning = true;
   14 
   15             // set security to only users who can approve and the actual content author
   16             selectedList.DraftVersionVisibility = DraftVisibilityType.Approver;
   17 
   18             //enable minor versions for this list
   19             selectedList.EnableMinorVersions = true;
   20 
   21             //set YES to forced checkin/checkout required
   22             selectedList.ForceCheckout = true;
   23         }
 
See you later

By

by

How to Modify SharePoint List RSS Settings Programmatically

RSS is a great thing. It streamlines easily the communication between a content provider and its readers. RSS nowadays are everywhere. News sites, blogs, content driven sites. By subscribing to a RSS feed you can reach a broader audience by eliminating the need of a computer, just have a mobile with RSS reader capabilities and you are good to go. As a powerful content management tool, of course SharePoint enables RSS syndication for its contents.
Let’s take a look at the UI page where we can configure the RSS feed of a document library:
sharepoint-configure-rss-setting
So, can we customize the RSS features exposed by a SharePoint library programmatically ? The answer is yes, but unfortunately this task is not as straight forward as one might think.
If you look the SPList properties, you will not find anything related to them. If you look at the SPListItems, you will not find anything related to them.
So where are these properties? They are in fact in the RootFolder property of the list. The RootFolder is an object of type SPFolder and sets various properties for the files and contents associated with the list as a collection of items.
And guess where these RSS feeds settings are specified? Yes, in that same collection, exposed as a key-value pair. But even if you try to inspect that with your preferred tool, you won't be able to see it clearly. Not even with SharePoint Manager sometimes. For example, take a look at these 2 RootFolders properties, from 2 different SPLists, being visualized with SharePoint Manager.
spm-sharepoint-manager-splist-rss-2
spm-sharepoint-manager-splist-rss-1
So…You see, the first one does not expose any RSS related property values, but the other one does. That's because the later has  SPListTemplateType.DocumentLibrary as its base type.
Since the SharePoint operations and behaviours rely extremely on the exposed APIs, we would assume these are the kind of stuff you would have access via an API call. I for one was not expecting to modify straight into the property values of a key-value par exposed by a SharePoint collection itself. Yeah, pretty tricky. SharePoint does its own things by its own ways. 
Anyway, these are the things you can modify from our RSS settings screen:

sharepoint-configure-rss-setting2
1) EnableSyndication : internal property, refer to the code below
2) vti_rss_LimitDescriptionLength : Controls if the item content will be exposed complete in the feed of just the first 256 characters.
3) vti_rss_ChannelTitle : name the RSS feed
4) vti_rss_ChannelDescription : Short text to describe the feed
5) vti_rss_ChannelImageUrl : Specifies which image will be displayed when a RSS reader consumes the feed
6) vti_rss_DocumentAsEnclosure : Indicates if will any documents associated with the feed are included as enclosure. ( I assume, becaue I have not tested that to explain better )
7) vti_rss_DocumentAsLink : Indicates if you can expose the documents included in the feed as link direct to the file. Very common for podcast RSS feeds, for example.
8) vti_rss_ItemLimit : Limits how many items are going to be exposed in the feed
9) vti_rss_DayLimit : Limits how many days will the feed content display. This will work combined with the vti_rss_DayLimit; the most restrictive one, wins.







Also there are some more fields that are not exposed by the UI, but still exists in property collection:
vti_rss_DisplayRssIcon : Indicates if the image in the vti_rss_ChannelImageUrl is an icon file. It will be displayed in the navigation bar of web browsers, for example.
vti_rss_DisplayOnQuickLaunch : I did not test that, but I imagine it will add the feed to the quick launch links in the homepage.
After all the settings were done, there is one more catch: Call the Update() method not from the list, but from the RootFolder object.

Now, the code to set them:

    1         public void ApplyRSSSettings(Microsoft.SharePoint.SPList selectedList)
    2         {
    3             // display RSS for this list
    4             selectedList.EnableSyndication = true;
    5 
    6             // set NO to truncate RSS multiline text to 256 chars
    7             selectedList.RootFolder.Properties["vti_rss_LimitDescriptionLength"] = 0;
    8 
    9             // set NO to include file enclosures
   10             selectedList.RootFolder.Properties["vti_rss_DocumentAsEnclosure"] = 0;
   11 
   12             // set YES to link rss to files
   13             selectedList.RootFolder.Properties["vti_rss_DocumentAsLink"] = 1;
   14 
   15            
   16 
   17             // set RSS maximum items to 25
   18             selectedList.RootFolder.Properties["vti_rss_ItemLimit "] = 25;
   19 
   20             // set RSS maximum days to 7
   21             selectedList.RootFolder.Properties["vti_rss_DayLimit"] = 7;
   22 
   23             // commit the changes to the list
   24             selectedList.RootFolder.Update();
   25         }

See you later

By

by

How to apply custom permissions to a list in SharePoint

In Windows SharePoint Services, all the lists are assigned inherited permissions from the container site by default. So how can we programmatically change these permissions to our own?
First we must understand how WSS controls access to its objects.
sharepoint-splist-Untitled
The access model for websites, lists, document libraries, picture libraries, task lists, workflows etc follows a role-based membership model. One might even say that's quite expected since WSS extends the capabilities of the ASP.NET as an application itself and .NET has a very flexible role-membership model framework. 
In this role-membership system, SharePoint users are assigned to specific roles, specifying what kind of access he/she will have (full access, read-only, write-access etc).
You can do this just like SQL Server, where groups are created and then users are included in these groups. The next step is to go to the Sharepoint object (a list, for example) and assign permissions to that group; but SharePoint extends this model one step further by creating role assignments.
sharepoint-splist-Untitled5   sharepoint-splist-Untitled4
A Role assignment is an object that binds roles and groups/users. This role assignment object can then be grouped in collections and that's where sharepoint do the trick: All the list objects in WSS implement a collection os role assignments which makes this approach the best and most scalable way to set permissions. Such a model can even be extended to apply to specific permissions to specific list items within the list. Even websites implement a collection of role assignments.
sharepoint-splist-Untitled3
Can you create a role assignment for a specific user without specifying the role?
Yes, we can. The user will be listed in the collection for the object but he won't have access to the object. So it's really pointless doing this.
Can we cascade permissions across lists?
Yes, we can. Not only across lists but all the objects. By default SharePoint will let you inherit the object's parent permissions. This behaviour, by the way, can also be modified programmatically as we will see later.
Can we assign specific permissions for just a group of items within a list?
Yes. And the process is very similar to the one we are going to demonstrate here.
What is the highest group on a SharePoint site collection? Is there such a super group?
yes, it is called cross-site group. It is an OTB functionality and by default has 3 sub-groups: Owners, members and visitors. Owners are the site administrators, members are the people who can have write-access to the site, visitors are the guests and can only read information.
sharepoint-splist-custom-permissions-1
So, any given user only becomes an effective SharePoint user once it is assigned to a role. You can take a look at the base permissions querying Microsoft.SharePoint.SPBasePermissions.
Now...In our case, we will remove all the predefined permissions for a given task list and set our own permissions. Only the people who are site administrators will have access to it.
sharepoint-splist-Untitled2
First thing is to break the inheritance to the list. That will untie the link between the list and its parent's permissions. The immediate effect you will notice on this command is that the UI will change accordingly.
sharepoint-splist-custom-permissions-0
NOtice how the menu in the UI get updated. You won’t see the tab refferring to the parent’s permissions anymore, instead you will be presented with an option to edit the permissions by user and a new option to revert the operation, which is to inherit again the permissions of parent.
 sharepoint-splist-custom-permissions-00.jpg
Returning to our case. Once we break the relationship to the parent,  we will need remove all the permissions in the list. If we could take a look at the UI during the code execution we would see a list like this.
sharepoint-splist-custom-permissions-2
with absolutely no users with permission to access the list. Note how dangerous this operation can be. If for some reason we left the code at this stage of execution we would compromise the SharePoint's health status and the implications can be very upsetting specially if the list is touched by many users or displayed in other sites.
So the next step is to setup the user we want to give the permission. In our case we want to give access to this list only to people in the administrators group.
Take a minute to see how we perform this.
Remember when we talked about the Roles and the Groups. Well, these are represented by the classes SPRole and SPGroup. So we will at some point need to have that information at hand. We extract the desired role R out of our website roles collection and our group G out of the website group collection.
sharepoint-sprole                 sharepoint-spgroup
There is a special trick here. In order for the group G useful in anyway, we need give a live identity to it. We will use the SPPrincipal object for that. SPPrincipal comes from the SharePoint super-class SPMember and it is the object that represents an user or a group within a website in SharePoint. Any user and any group attached to a site in SharePoint is automatically a SPPrincipal object and he will provide all the role-membership mechanisms for integration with the system.
sharepoint-Untitled
In older versions of Windows SharePoint Services SPRole and SPGroups were used combined and straight to configure the permissions. These objects are now obsolete for that function and the recommended approach is to instantiate a SPRoleAssignment. The SPRoleAssignment will be produced by associating the selected group plus the principal identity. Once you have your SPRoleAssignment setup based on the group, you then add the SPRole to the exposed collection.
The next steps are very direct. We bind the SPRole to the SPRoleAssignment…
sharepoint-sproleassignment 
And we add the SPRoleAssignment to the RoleAssignmentCollection exposed by the SPList.
sharepoint-sproleassignment-collection
We create a SPGroup and SPRoleDefinition objects based upon the existing site groups and roles in our site. The reference to the site can be accessed via the SPList object itself. Since we have that information now in our hands, we can then combine them with a SPRoleAssignment object and then add this assignment to the collection of assignments that belongs to the list. Our method is pretty atomic, and at some point a SPList.Update() call must be made in order to persist the changes we’ve done.
If everything went according to our plan, we should now see a list like this in our UI:
sharepoint-splist-custom-permissions-3

If you want to apply specific permissions to the items of this list, the only additional piece of code you must add is a loop around the SPList items and set the properties in the chosen SPLIstItem object.
Now the code:

   11         private void SetPermissionsForTheList(SPList selectedList)
   12         {
   13             // breaks the inheritance from the parent
   14             selectedList.BreakRoleInheritance(true);
   15 
   16             //removes all the permissions from the list, except for 'site - admins'
   17             while (selectedList.RoleAssignments.Count > 0)
   18                 selectedList.RoleAssignments.Remove(0);
   19 
   20             if (selectedList.RoleAssignments.Count == 0)
   21             {
   22                 // get the defined site admins group
   23                 SPGroupCollection groupCollection = selectedList.ParentWeb.SiteGroups;
   24                 SPGroup group = groupCollection["Site - Admins"];
   25 
   26                 // get the full access role definition
   27                 SPRoleDefinitionCollection roleDefCollection = selectedList.ParentWeb.RoleDefinitions;
   28                 SPRoleDefinition roleDefinition = roleDefCollection [0];
   29 
   30                 // create a role assignment based on the site admin group
   31                 // and bind to the full access role definition
   32                 SPRoleAssignment roleAssignment = new SPRoleAssignment((SPPrincipal)group);
   33 
   34                 roleAssignment.RoleDefinitionBindings.Add(roleDefinition);
   35 
   36                 selectedList.RoleAssignments.Add(roleAssignment);
   37             }
 
As a final note, remember that all this can be accomplished via the interface and by doing this SharePoint will verify and test if any rule isn't being broken during the process. By doing this programmatically you are easily introducing a new level of complexity in the SharePoint ecosystem. Via code, you can set any kind of permissions you want to any given user. PLAN AHEAD. Make sure you are not overwriting permissions that can be conflicting with other areas in the site collection.
See you later.

By

by

Funny Error Messages in SharePoint Designer

That’s a very curious one. I have setup a custom authentication provider for my project. I replaced the Windows Authentication and used my own which is based on the .NET custom membership provider. So I tried to open the site using SharePoint Designer and do a little master page update.
ScreenShot001
When I’ve received this “neat” error message which, by the way, does not help in anything:
ScreenShot002
That sounds pretty much like one of those debug messages used during COBOL times, when a programmer had to write something on the screen in order to verify if some criteria in the application logic was met.
Anyway…I just clicked the OK and then another error:
ScreenShot004
Surely that’s a more “understandable” error message. Or at least it sounds like a decent error message. Then I said myself: “ok, now maybe the next one can explain all this mess”
So I clicked ok and I’ve got this amazing one
 
ScreenShot003
“Found. Object moved. Object moved on here.” That’s awesome. By then my colleagues were all having a laugh at it. That’s almost like an urban legend coming to life. The case of the programmer who left debugging error messages in the application, forgot to remove the code and the application went to market with these messages.
Yeah, it smells like one of those programmer messages left in the application during test that ended up in production. Hopefully Microsoft will revamp the SharePoint Designer so we can have a decent environment up to the level required by WSS.

By

by

How To Recycle IIS Application Pool Manually via DOS Command ?

As a .NET programmer and an avid user of the Global Assembly Cache when dealing with SharePoint one of the things that I have to use most to test my solutions is to recycle the application pool, so that I can put my newly created DLLs and test them.
I use a lot WSPBuilder for this task, but I always wondered : How can I recycle the application pool via command prompt ?
In case you ever wonder the same and still don’t know how to do it, here’s how:
restart-application-pool-script-2
the cscript command is pretty neat. And mostly the Microsoft Platform applications have a .vbs file assigned to them, so give it a try and try some other cool stuff in other apps.
restart-application-pool-script-1
See you later,

By

by

Sharepoint Tips and How Tos

by

How to do Site Branding in SharePoint?

One of the main selling points for implementing SharePoint are its content management capabilities.
This week I went to a client demonstration of our new site and I noticed that a MOSS enabled website is really appealing to them (end users) but not so much because the underline features or that cool RSS integration you demonstrated but mainly because the ability to manage and roll out content on the web itself.
 
sharepoint-sections
 
As a topic of later discussion amongst us something was obvious: people do not really understand what’s the concept of Site Branding, and for that I believe it is paramount for us consultants to deliver this message for them very clear so they can have a better grasp of their brand new SharePoint site they will be maintaining themselves when we finish the project.
sharepoint-webpart
So what is site branding from SharePoint's point of view?
It is called Web Content Management, WCM, and it’s function is to make a clear cut between what’s site branding and site content.
Site Branding is created by a marketing team, normally a group of designers and sometimes for developers. It responds to questions such as site navigation, look and feel, style etc. In other words, it is about HTML, CSS classes, icons, master pages, page layouts etc.
Site Content is created by site managers, contributors, editors etc. They have the task to choose the layout, choose the icons and images to be displayed in the site sections, they add videos to the pages, they populate the text with links to other relevant sites and contents etc.
So, now that we have this picture well defined we can infer that developing a SharePoint website is also to determine the underline appearance of the site itself.
sharepoint-master-page
Normally the task to develop the branding is handled over to a 3rd party company. Someone specialised in websites, and better matching colours and with experience to create a visual identity. As a matter of fact, Microsoft has made available to the general public all the CSS classes used by a typical Windows SharePoint Services application (WSS), they can be seen here
Honestly that’s a concept one has to capture and, like most things in life, it takes practice.
If you are a power user, a site editor, a tester, business analyst, project manager or any other role involved in a SharePoint site that doesn’t need to know how the things works under the hood (workflows, code, architectural designs, service contracts etc) and you are interested in learn more about site customization using SharePoint I suggest to read this 3 part series from MSDN, specifically targeting the Web Content Management features of SharePoint.
You see, handling the client’s expectations with the project its not only meeting the deadlines and delivering the project but also empowering them on the tools they can within SharePoint itself so next time they come talk to you asking for a new variation they will be more aware of the things he can or can’t do.
If you need any more information about how to do branding in SharePoint feel free to email of leave a comment.
See you later

By