Monday, October 24, 2011

Share a SharePoint Blog Post/Discussion Board to many Social Networking

Once the discussion board and blog has been published on the internet, the Administrator wish always sharing the interesting thing to everyone through Social Networking such as Facebook, Twitter,... There are many people  know your site if the post was shared to many ways, many sites...

Look at the picture:

Step by step:

1) Regist an account on http://sharethis.com

2) Login by this account, create an Get a button, then customize the number of networking, size, template,...

3) Get a code.

4) Open file thread.xsl in 14/Hive location LAYOUTS/XSL folder. Point to line at: 650 and paste this code:

<xsl:if test="(@BaseViewID='1' or @BaseViewID='2')">
// THE CODE FROM sharethis.com
</xsl:if>

THE CODE FROM sharethis.com as picture below:



5) Save and reset IIS.

Thursday, October 20, 2011

Fix Blog Comment bug for SharePoint 2010

SharePoint Bug:

Scenarios: Turn on anonymous access to the comment list with full functioning such as Delete/Add/Edit and View item.

Work As Design and Problem: If you logged into site by Anonymous,  of course, you can post the comment, edit and delete the comment. However, these comments which has created by Anonymous, all anonymous can view these comments although they are not approved. Especially, anonymous can be edit/delete the comment which posted by another anonymous. And then, if you logged into by authenticated account, you will not see these comment because they are not approved yet. That's so funny.

Resolve: If user log-in the site by anonymous and post the comment, item needs to be approved before showing on the page. So, after user click post comment button, they will see nothing change on the page. It's a little confuse but it should be.

More thing, although edit permission is turned on for anonymous but it should not be use in this scenarios, because no one knows who is edited and editing/deleting to be complicated. So, we must check if anonymous access and the comment has been approved, just show as normal.


Just change a little thing. Go go 14/hive and open folder Layouts/xsl, open the file blog.xsl and go to line at 418, insert the line:

<xsl:if test="($Userid &lt; 0 and $thisNode/@_ModerationStatus = 'Approved') or ($Userid &gt; 0)">
//SharePoint Code

and insert the line at 448 a close tag

</xsl:if>

See attach:

Warning: if follow this instruction, the WAD of SharePoint default will not keep correctly, this is also new view for end user and I think it should be change like this and make sense for all cases.

Friday, October 14, 2011

Access denied for Anonymous users with custom xslt

SharePoint Bug

Sometime I had a stress with SharePoint customization, especially on XSLT data transform.
My scenarios is:
- Create a custom view for any list.
- Customize XSLT to render UI for my stituation.
My Problem is:
- With authenticated users, it works fine and smoothly
- Got a notice: Access denied. You do not have permission to perform this action or access this resource for Anonymous users.



I am a "SharePointism", so the first thing I looked into the SharePoint log file. it's very lucky, I got the message: "Error while executing web part: System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))     at Microsoft.SharePoint.Library.SPRequest.UpdateWebPartCache(String bstrWebUrl, Boolean bAllUsers, String bstrID, Byte[]& ppsaData, Boolean fOMCall)     at Microsoft.SharePoint.WebPartPages.SPWebPartManager.CacheWriteInternal(Guid storageKey, Byte[] cacheData, Storage storage, Boolean omCall)     at Microsoft.SharePoint.WebPartPages.BaseXsltListWebPart.get_CustomizedXsl()     at Microsoft.SharePoint.WebPartPages.BaseXsltListWebPart.LoadXslCompiledTransform(WSSXmlUrlResolver someXmlResolver)     at Microsoft.SharePoint.WebPartPages.DataFormWebPart.GetXslCompiledTransform()     at Microsoft.SharePoint.WebPartPages.DataFormWebPart.PrepareAndPerformTra..."

Just guess that because I turned on the "Data Web Part Caching" and it seems turned on automatically. So, I disable (remove the checked) for this button. And....oh la la... it still doesn't work. However, we should not do like that because the message from SharePoint is not able to update "Cache". So, I tried to change the value CacheXslStorage="false" and ViewFlag="8", but it still end up with "Access denied".

However, i will work fine if there is an authenticated user view the blog detail first, then everybody can view this post without error. Maybe it's WAD or Bug of SharePoint 2010.

Update: We should not apply the cusomize xslt to ListXsltViewWebPart by UI in toolpane. We should open site by SPD, then change the property named "GhostedXslLink" is our customized xsl. This xsl is in layout/xsl folder of 14/hive. The content of this xsl file has reference to customized xslt.

Hope this help

Monday, October 10, 2011

Something in SharePoint (2007 & 2010)

There is a funny thing in SharePoint (in all versions)

1) List

With normal list the URL like http://server_name/site_name/Lists/List_Name
With documents list the URL like http://server_name/site_name/List_Name

2) Site

With normal site, all lists have the full controls on the list such as deleting, saving template,...
With blog site, the Posts list does not have permission to delete or save as the template and after save the blog site as template, we cannot restore the site correctly. All views of Posts list are generated as a list with the same name.