Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I'm working on a SharePoint 2010 publishing website where content authoring happens on an authoring site, e.g. http://authoring, and scheduled content deployment jobs deploy published content to a public site, e.g. http://public.

To simulate a staging environment, I would like users to be able to see checked in but not published content.

I know that members of the Visitors group can see published content. However, published content is also picked up by the next content deployment job.

Is there such a combination of permissions that allows people to view checked in but not published content, but not be able to edit it?

share|improve this question

2 Answers 2

up vote 0 down vote accepted

I do not believe that is possible. The normal path is Draft, Checked-in, published/approved. I don't see a way to let a group see the last one, but not the second one.

share|improve this answer
    
Mike, I just noticed something under Versioning Settings of Pages libraries. You can set "Who should see draft items in this document library?" to "Any user that can read items". This looks like it would do the trick, but I would have to programmatically set this for all my existing libraries, and modify my site definition to set it for new ones. –  George Durzi Aug 30 '11 at 13:27
    
The key here would be to save the drafts then in the source, and not have them checked in or approved. It is possible to set the properties on libraries in bulk using powershell. you can iterate through all of the libraries. –  Mike Oryszak Aug 30 '11 at 13:29
    
Thanks Mike, I'll look into setting that property on the site definition level. If not, probably an event receiver on Site Created. –  George Durzi Aug 30 '11 at 13:41

I ended up writing a script that set the appropriate draft visibility on every PublishingWeb in my site. Long term, I also need to add an event receiver that sets this property on each site as it is created.

Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction:SilentlyContinue

$rootUrl = "http://localhost"
function SetDraftVisibilitySettings($rootUrl)
{
    $site = Get-SPSite -Identity $rootUrl
    #Walk through each PublishingWeb 
    $site | Get-SPWeb -limit all | ForEach-Object {
        #Check to see if site is a publishing site
        if ([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($_))
        {
            write-host "Setting draft visibility in pages library in"$_.Title"site...."
            $publishingWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($_)
            $pagesListName = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPagesListName($publishingWeb.Web)
            #Set draft visibility to "Any users who can read items"
            $pagesList = $_.Lists[$pagesListName]
            $pagesList.DraftVersionVisibility = 0
            $pagesList.Update();
        }
    }
    $site.Dispose()
}
SetDraftVisibilitySettings($rootUrl)
share|improve this answer
    
There's a fatal flaw with this approach. End users on the site receiving the content deployment jobs will also see the draft items. The pages library settings are deployed along with content deployment... –  George Durzi Aug 30 '11 at 21:02

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.