Today I was debugging an error in InfoPath Form, in particular InfoPath 2010 installed in an typical SharePoint Farm. Error was more generic and could deviating you from actual solution.
One or more ActiveX Controls could not be displayed because either:
1) Your current security settings prohibit running ActiveX controls on this page, or
2) You have blocked a publisher of one of the controls.
As a result, the page might not display correctly.
With this when you start you will obvious end up in links that will suggest some registry changes. And few links suggest you add web URL as trusted Site etc. After all these you will see the issue still.
After few tries you may change the query to see “Ink Control not working” which will lead you to results of articles taking about Ink Control not supported in browser enabled InfoPath forms.
At this point I figured, that It was something related to missing ActiveX control, Usually when you have Custom ActiveX control you need to deploy it to the system that will fill InfoPath forms, refer this link for details.But Ink Control is out of the box control and it should be part of system that has InfoPath Installed.
That is when I figured out that Ink Control is not for regular PC but it is intended to be used by Tablet PC users. So in fact error is right InfoPath filler could not locate the Ink Control Active X dll. How do we fix it, easy Install the Ink Control, which is part of Microsoft Windows XP Tablet PC Edition Software Development Kit 1.7. Once you Install InfoPath with Ink Control will just work fine.
Couple of take away here.
- You cannot expect end user system to have this SDK installed nor it is a corrective measure.
- Reason I said it is not a corrective measure is because of the fact, Ink Control was to help user draw something , not to capture user signature (what most people think and use this for)
- Refer this to see an example of how it is used also Microsoft suggest that we use Digital signature not Ink Control for capturing Signature (because of security).
- If you have a pressing need then you can package the ActiveX control and deploy as part of the solution.
Let me know your thoughts.
Few weeks back I saw a question in the Stackoverflow. The question was How to start learning SharePoint. Well at first it seem simple, I couldn’t get an answer straight away. I did a Google but no luck all links I landed up was about some SharePoint books. The user who posted the question specifically mentioned that he doesn’t want go through books to get the hold of it. Well I am of the same kind I hate going through 500+ pages books. Finally I answer the question on how I learnt SharePoint. Below is my answer for the question.
First step is to get created with a SharePoint site, from your System admin.
If you are the one who need to kick start the SharePoint. Then follow the steps and for each of the steps you can find ample number of links using Google
- Install SharePoint and Configure it.
- Create a Site Collection
- Go to the Site and in the Right Corner you will find a Menu called Site Settings
- Select that and play around with each and every options out there.
- Most of the options can be understood by the Name
- If you struck up some where come to SO or Start over again.
- Make sure that you always ask the question why this behaves this way & why this implemented this way.
- Try creating pages Same Site Settings Menu has option to create page.
- There is some thing called Web Part which is actually a Pluggable component UI/ functionally which can be customized as per the user needs.
- Try using those web parts (Lost of Out of the Box)
- Later move in to Web Part development,create your own, deploy it
- Start using the Microsoft.SharePoint.dll to access the SharePoint site using you custom code.
To give you a brief description.
Microsoft Office SharePoint Server 2007 is an integrated suite of server capabilities that can help improve organizational effectiveness by providing comprehensive content management and enterprise search, accelerating shared business processes, and facilitating information-sharing across boundaries for better business insight. Additionally, this collaboration and content management server provides IT professionals and developers with the platform and tools they need for server administration, application extensibility, and interoperability.
- I call it as Application development platform
- For anything you wanted to do there will be a option directly / indirectly in SharePoint
- Basically it is a Web Application built on top of ASP.NET 2.0
- Main entry point to it is an Web Application (Central Administration Site) you get this once you install SharePoint.
- This is where you can Create Web Application (Nothing but a Site in the IIS & Content DB)
- Yes you read it right Database,SharePoint stores all its content in Database
- Web Application is directly not usable (Its like empty DB and Empty IIS site) you need to have some content to be display to the user.
- Then Site collection comes, it give content to the User.You need to at least create Site collection under Web Application (Through Central Admin).
- While Creating Site Collection you will be provided with a Site Template (Template is nothing but a Blue print sort of thing that will dictate what your site will look like and what it have) there are template For Project Management,Bug Tracking (has options to track Bug, kind of basic infrastructure that will be needed in any Bug Tracking system).
- Next level is Sub site, under site collection you can have Site( here too you have an option to select the template), and under that Site you can have another Sub Site so on.
- And there is another important thing in SharePoint called List, its a similar to Table in SQL server but not exactly same (because list content are internally stored in SQL Tables), and List contains Fields (Similar to Column in Table). You can use them to store your custom data. While creating the list also you will have Templates (Say for example to Represent a Announcement you have a template, this will have all the fields that are needed to represent announcement)
- And you have a Option to Create your own List Structure as well.
- There is a special kind of List in SharePoint called Document Library which can store documents.
- One final thing Security, managing Security is out of the Box. You can control who has access to you Site and what they can Access (Only Announcement , only Published documents) and what they can do with the item (Edit/Read-only/Delete) etc.
- You can create fine grained permission as you wish.
Welcome to THE SHAREPOINT WORLD
Yesterday I attended a Microsoft webcast on how they have implemented the IT Web (Microsoft’s Intranet) which was in SharePoint. I have captured few points that highlighted tips on the SharePoint Platform and the Data Storage (To List or not to List). Please find the Screen clip of the Presentation. One another nice thing is they have used Content Query Web Part also they have customized it and named it as Content Query Web Part Override I didn’t get the location for it.[May be I will update link once I get it] basically it had couple missing pieces in the out of the box CQWP, like add the view fields in the Toolpart etc,editing the CAML query etc.
First a little background. We all know that SharePoint by default comes with the some pre-defined permission levels. Represented by class RoleDefinitions in Object model. You can browse through the following URL http://Sitename/_layouts/role.aspx and find the set of permission level your site has.
In addition to the above permission level you have an option of creating a new Permission Level (RoleDefinition) as per your needs. This doesn’t stop there; we have an option to restrict the permissions that can be used in the Web Application. Well what it means is, Say for Example if you don’t want any user (ANY USER yes I mean it Site Collection Administrator as well) of site to delete or Manage Web, but wait how can I prevent Site Collection Administrator from deleting the site, s/he is a big guy he got all power to do all s/he wants in a Site Collection. That’s true but there is another real big guy Farm Administrator. If he decides not to allow Site Delete for a Web Application he can do so by just un-checking the to Manage Web Site permission in the User Permissions for Web Application page http://Central AdminSite/_admin/vsmask.aspx. With this background we can see what gets interesting.
Say you have a Code in your application that check to see if the user has Contributor right in a web, as below
Code Block # 1
using (SPSite oSite = new SPSite(http://xxx))
using (SPWeb oWeb = oSite.RootWeb)
Above code will work fine until our real big guy Farm Administrator comes in, now he decides to revoke the Delete Permission from the Web Application. Now above code will start to break, it will keep returning false as the Contributor Role definition was built with the Delete Permission with it, and as it has been removed by the Farm Administrator, your EffectivePermission will not match the RoleDefinition of Contributor. Below statement will not be true.
Code Block # 2
Okay how do I fix it, just go to your permission Level page, edit the Contribute permission level do nothing, just save it. Now the absence of the delete permission has been informed to RoleDefinition
Contribute and your code will start working.
But still I got more interesting information for you; in SPBasePermission enum out of 33 Permission we have a value called SPBasePermissions.UseClientIntegration, Which launch client applications. Without this permission, users will have to work on documents locally and upload their changes. Like any permission you can disable this at the User Permissions for Web Application page of central admin. But there is another place where you can disable this as well, yes that is at the Authentication Provider page. Select authentication provider and end of the page say no to Enable Client Integration? Well that was simple change but to find it we had real tough time. When you say no to Enable Client Integration?
What happens is that SPBasePermissions.UseClientIntegration will be removed from the permission but it will not get reflected in the UI both at the User Permissions for Web Application page and at the Permission Level page. With this state you will always get the Code Block # 1 executed to false. Because your EffectivePermission doesn’t include the SPBasePermissions.UseClientIntegration. So you need to manually remove this option from the RoleDefintion to make the code work.
Should I call it a bug, when it is really not there why should UI show that ????
Well you should have seen this message if you have a custom multiline column added to the SharePoint document library and try to add a text that is more than 255 Characters. And there is no way around to solve this issue in the SharePoint UI/ at least I didn’t find one so far.
Today I was trying to create a custom list template, and found an attribute called UnlimitedLengthInDocumentLibrary. This is the attribute that will solve your issue. And in case if you don’t want to create a custom List Template to solve this issue , there is a easier way around this.
Hope this helps!!!!
Today Microsoft has released the SP2 for Office Products which includes the SharePoint as well, Refer this link (I saw this announcement first ) for more details or refer the SharePoint team blog post Link
Items that attracted my Attention in SP2.
- FBA & Office Integration:…..provide a much smoother user experience and make client integration a viable option for forms-based authentication users…..
- InfoPath form: Performance enhancements in SP2 reduce both the memory requirements and the page load times for large browser-rendered forms
- Browser Support (IE8)
- Pre-Upgrade Check for Microsoft SharePoint 2010 – Big Wow
Have you lately tried to find list of DB’s used by SharePoint. Sure you would have at least one time. I used to go searching the Central Admin – Content DB option and take note of the SSP, Search db etc. Today I landed up here a smart way to do that :).
Trick is to navigate Central Admin -> Operations -> Perform a Backup. All at one place nice Isn’t ?