I have 2 SharePoint 2010 document libraries with Require Content Approval and Create Major Versions enabled. I have a Public View of the libraries for general users to view documents. They have the OOB Read permissions to the site and that all works fine. I have Review Status calculated field setup on each library, this shows when documents are due for review. When a document is due for review a workflow (OOB Document Approval W/F) is initiated manually. When the workflow starts it sets the Approval Status field to Pending, this then removes the document from view to those with read access. If, instead of initiating the workflow I check the document out for editing using the Check out button in the ribbon the Approval Status field is still set to pending but the current version of the document is still available to those with Read permission. I don't understand why when the workflow set the document to Pending it no available to those with Read.
My understanding is that the current version of the document should alway be visible to everyone as the edited version doesn't become the curent version until it's been approved.
I think you are describing OOTB behavior. When you enable content approval SharePoint will ask you "who should see the pending versions" and the default answer is "only the author of the draft version and people with approve rights can see pending versions". Everyone else sees the most recent approved version, or no document at all if there is no approved version yet.
Please mark my response as an answer if appropriate.
So here what I get from your explanation is
- When the document is uploaded and the workflow is started manually the document is not visible to users with Read Only permissions. This is why because the document has not been approved yet and there is no previous version of the document is available and the default setting in the Library is "<label for="onetidMinorApprover">Only users who can approve items (and the author of the item)</label>". If you change it to "<label for="onetidMinorReader">Any user who can read items</label>" then it'll be visible to the users who have Read Only permission.
- When you are doing a check out you are editing the document which means there is some previous version available to show to the users having the Read Only permissions.
Check out the below setting which will make the documents available to the users having Read only permission.
The default setting is the third option: <label for="onetidMinorApprover">Only users who can approve items (and the author of the item)</label>
I understand that a new documents is not available to users until it's approved and as there is no major version yet and that's not a problem, the issue is when an existing document is due for review and the Approval workflow is initiated on this document the document dissappears from the public view until it's aproved again. Below is a shot of the library settings. Users should not be ablew to see draft copies and the current major version should always be available to users