Here’s how I set up my workflow.
First I define member groups and note down id number of member groups I want to be able to see previews of entries.
Second I add a custom status of “Pending” to the default “Open” and Closed”.
Then I use this code to check whether the user is logged in and what group they are in. The appropriate content is served to the user based on their group and whether I want them to be able to see Pending articles. Here’s the code:
{!-- For logged in users with permission to view preview --}
{if logged_in && (group_id == '1' OR group_id == '2')}
{exp:weblog:entries weblog="{your_weblog}" status="Open|Pending"}
...Your output for logged in users with permission to see Pending here…
...Show Open and Pending articles…
{/exp:weblog:entries}
{!-- For logged in users with no permission to view preview --}
{if:elseif logged_in && group_id == '3'}
{exp:weblog:entries weblog="{your_weblog}" status="Open"}
...Your output for logged-in users without permission here…
...Show only Open articles…
{/exp:weblog:entries}
{!-- For non-logged in users --}
{if:else}
{exp:weblog:entries weblog="{your_weblog}" status="Open"}
...Your output for non-logged in users here…
...Show only Open articles…
{/exp:weblog:entries}
{/if}