Apologies if this has been asked before, I could not find anything related in the issue queue.

I am seeking a method to schedule the publishing of specific revisions of nodes. Scheduler works very well for the nodes themselves, but for our use, where many people collaborate and schedule content for publication all the time, scheduling a specific revision of a node to go "active" is an important feature.

Is it viable to build this feature into the architecture of Scheduler? The UI would need thorough care, so as not to clutter and confuse a user with permissions to schedule revisions. One would also need to consider how many revisions could be scheduled, and how to avoid overlapping scheduling timeframes, and so on.

In short: has anyone considered this as an extension of Scheduler, or are there other more obvious choices that would work alongside?

Cheers,
Achton

Files: 
CommentFileSizeAuthor
#4 revision_scheduler.png8.24 KBachton

Comments

I think somebody needed something like this before, but that was a couple of years ago.

How do you publish revisions? The status of a node is the same for all revisions of that node. Do you want to switch between revisions? I don't think this would work at all as far as I understand revisions and your workflow. But maybe I am misunderstanding something. Could you explain your workflow more detailed. (What do you want to achieve and what is blocking you?)

Thanks for your reply, Eric.

I want to allow an editor to prepare a new revision of a node (e.g. an article) and schedule the updated article for publishing on a specific date and time. Ideally, the contents of CCK field could also be versioned in this manner.

With Scheduler, I would go for the simplest possible solution, which would be to add a vid column to the scheduler table. Its purpose would be to maintain information about which node revision to publish at the given time.
As far as I can tell, an immediate side effect would be that you could schedule CCK fields to be updated at specific times, since they are also controlled by the core revisioning system.

Even though that sounds simple, I can see many gotchas that need to be addressed for such an addition to work. A state diagram for the whole thing would probably be a good idea.

What do you think?

Can you "publish" a node revision? How would you do that?

StatusFileSize
new8.24 KB

You would set a publish date for a node revision (or several revisions), and a cron job would "publish" that revision of the node at the set time, thus replacing the current published revision.

I attached a (very crude) prototype of a UI to illustrate my point.

Version:6.x-1.x-dev» 7.x-1.x-dev

Let's fix this in the 7 version and port this back to the 6 version.
Instead of checking the node Id, we should check both node ID and revesion ID of the node.

In relation to Eric's questions in #1 and #3 I also do not understand how you can publish a revision. Scheduler currently changes the node status from unpublished to published, or vice versa. Can a node version be altered forwards and/or backwards and the content get changed accordingly?

@jonathan In drupal 7 a revision also has a status field. But nevertheless we need to change the revision id of the node to set this revision active.
I think it should be possible to achieve this. There are indeed some questions to ask, like what if 2 revisions are scheduled and they cross eachother. But these are things we could solve by providing settings I guess.

This would be very useful for my company site as well.
Our content creators currently clone nodes and then schedule the new node to publish and the old one to unpublish. This usually also means a manual step to update the URLs and makes node relationships difficult to work with.

Is there anyone working on a patch for this?

The publishing, people are talking about here, is actually replacing the published revision with the one scheduled to be published, in other words, change the vid of node table to point to the revision scheduled to be published.

This makes sense only if user is editing a node or a revision. So I think the UI for this should be in node/revision editing form.

Here is how I see this implement:

  1. Add settings for the content type form for enabling the scheduling of revisions publishing.
  2. Add a vid field to scheduler table. This field will only be used if scheduling of revisions publishing is enabled. Otherwise it will always be set to current vid.
  3. Make nid and vid primary keys, so we can have multiple scheduling dates per node/revision.
  4. Add code to handle the concurrent publishing/replacement of multiple node revisions.
  5. Add other options, like to only publish the latest revision if multiple revisions are scheduled to be published.

By doing this we cover several use cases, we can even handle edge cases where someone need old revisions to be published after newer ones.

What do you guys think about it? Am I missing something? If you are ok with the approach I've outlined here, and no one else is working on a patch for this, I'll take a crack at it.

@recidive I like this plan.

Just to clarify. If revision scheduling is enabled, then the scheduling options would be listed in the revision section of the node form. Can you please confirm this how you were planning to implement this.

Disclaimer: recidive is working on my team.

I don't like this idea at all. This feature is actually a module by its own. It would share almost no code with the current features of scheduler. Why not make it a separate module?

We just came across this sandbox project, and will evaluate it to see if it meets our requirements. Perfect timing BTW.

http://drupal.org/sandbox/merlinofchaos/1349690

We also wrote http://drupal.org/project/revision_scheduler and were only able to post it a couple days before merlinofchaos posted his sandbox. We're trying to coordinate on what's the best solution going forward for revision scheduling.

It appears there are 3 separate projects trying to tackle this problem...

scheduler_workbench and revision_scheduler have issues with scheduling revisions while having a published version. In fact, they will either prevent it from being scheduled (scheduler_workbench) or simply unpublish the current revision (revision_scheduler).

Entity Revision Scheduler is interesting and does combine the aspects of workbench moderation and revision scheduler such that you can schedule from a draft, but the UI needs some work because there are situations where workflow can come to a halt and there is no easy way to address/fix the situation.

With respect to Eric's question in #11. The issue is evolving content. We're seeing more client requests where they want the same node to change, but want to do it with moderation/approval and then schedule said change so they are not having to hit publish at midnight on a Sunday. So combining it all together, scheduling + drafts + moderation is becoming more important, but there isn't an easy way to do this yet using the available modules. And I'm not sure if it's a simple modification or if the changes would be more extensive.

My apologies for my comment in #14. I have further tested revision_scheduler and it does allow for the node to remain published while scheduling the draft.

FYI, there is one more module called revisioning_scheduler which is part of Revisioning module. I'm currently using it, but it has limitations - only one revision could be scheduled at a time. I'm looking for more flexible solution where several revisions could be published/unpublished at any time.

Status:Active» Closed (works as designed)

Closing this issue now. No activity for 6 months. As Rick said there are plenty of other projects tackling this issue, and I am fairly certain that we will not be implementing it in Scheduler.

Jonathan