To setup workflow in my Drupal 7.8 installation I use Workflow 7.x-1.x-dev with "Workflow access" enabled and Revisioning v.7.x-1.2.
My workflow has 3 simple states (draft -> review -> live) and 2 roles: editors and publishers. I've 2 requirements:

(a) Anonymous users should not be able to see the "Basic Pages" till they've been published (my workflow status: "live").
(b) Public should be able to see the published revision while latest revision is being worked on (in either "draft" or "review" state).

My Question: What permissions should I set under "Access Control" block of my workflow?

I've tried 2 different scenarios:

Scenario 1. Under "Access Control" block of my workflow I did the following for all 3 states:

Roles who can view posts in this state:
[x]  anonymous user

With this setting if an editor creates a new post and sets workflow status to "Draft" it is automatically available for public. That's not what I want to achieve. My (a) requirement failed and (b) works as expected.

Scenario 2: Under "Access Control" block of my workflow I did the following for "draft" and "review" states:

Roles who can view posts in this state:
[ ]  anonymous user

and for "live" state:

Roles who can view posts in this state:
[x]  anonymous user

But with this permissions public is not able to view the latest published revision when workflow status changes to either "Draft" or "Review".
(a) requirement works as expected, (b) - failed.

Am I missing something here? Looks like "published/unpublished" states are per revision and workflow states are per node. Please let me know how I solve my problem.

Comments

Bastlynn’s picture

Status: Active » Needs review

"published/unpublished" and workflow states are two completely separate systems that don't directly interact.
The published/unpublished system is part of Drupal core, and provides a *very* basic control over visibility within Drupal core's displays. The front page for example filters by published views. Workflow then overrides the default access with it's own access. (Recall that permissions in drupal are additive, if any one system says access is allowed - it's allowed.) This is complicated by the fact that workflow simply doesn't have awareness of revision states. Which all boils down to: I'm not sure what you're trying to achieve can be done with workflow access alone.

I'm not aware of any way to allow access to a specific version of a node without allowing / disallowing access to the whole thing. Access is generally determined by the node as a whole. So the closest to matching your needs that I'm aware of is your configurations for Scenario 2.

Unfortunately, you may need to look for another module to handle your (b) requirement in that scenario.

Bastlynn’s picture

Status: Needs review » Closed (works as designed)

I haven't heard back from you on this, so I'm going to assume you've got it worked out.