Is it possible to edit a previous version of a page?
Permalink
I can bring up previous versions of pages and can make any of them the currently active page. BUT, I cannot edit any of the prior pages. Is this how it should work? There is a previous version of my page that we spent a lot of time working on but did not make it active - we had a "coming soon" page that we made active and was planning on making the one we worked on active once it was finished. But now we cannot go back and edit it. I'd sure appreciate any helpful hints about how to edit a previous version of a page.
Wow, I'm shocked that there is such a great lapse in functionality of the ability to edit a previous version. Essentially, you can make a page the current, active page, but cannot make changes to that page. This is a huge deficiency in this software and one that anyone contemplating using it should consider prior to choosing it. I'm very surprised since I would have assumed we were working with some very talented programmers and this software is not just recently released. I wouldn't even grace it with calling it a bug. It's a major oversight. I would love to hear that this is the wrong conclusion and there is indeed some way to edit a prior version.
I'm embarrassed to tell my client that she cannot edit any prior versions but must recreate them from scratch. Ugh.
I'm embarrassed to tell my client that she cannot edit any prior versions but must recreate them from scratch. Ugh.
> I'm embarrassed to tell my client that she cannot edit any
> prior versions but must recreate them from scratch. Ugh.
It might not be that hard to implement. When a prior version is chosen for editing, perhaps the system could just duplicate that version and make it the one currently being edited.
I realize this doesn't help you right now, but you might want to consider submitting a feature request. Now if I could only remember how/where you submit feature requests... Maybe via the bug tracker? I don't recall.
:-/
-Steve
> prior versions but must recreate them from scratch. Ugh.
It might not be that hard to implement. When a prior version is chosen for editing, perhaps the system could just duplicate that version and make it the one currently being edited.
I realize this doesn't help you right now, but you might want to consider submitting a feature request. Now if I could only remember how/where you submit feature requests... Maybe via the bug tracker? I don't recall.
:-/
-Steve
OK, I found a simple way around this problem. I went directly into the database, found the table with the block settings for the various versions of a page. I found the rows for the page that had the desired old content, made note of the block settings for that page, and then edited the rows for the current editable version to make them identical to the old version. Hope this makes sense. I don't have the database open to remember the exact row names, but they are for block content.
Yes, of course you can hack the DB, but I certainly wouldn't call that a "simple" way around the problem. I still think the ability to edit prior versions would be a great feature to add to C5.
-Steve
-Steve
True, Steve. Hacking the database is not a recommended solution at all and no substitute for a function which should be present in this software a long time ago. But for me it was an easy fix, which I was grateful for. I think someone could get themselves in a bit of a jam if they tried to do this without understanding how it works.
Thank you for answering my posts.
Thank you for answering my posts.
This is a bit of a bodge, but, assuming you no longer want the new changes, you can remove the page at the top of the versions list and the editing reverts the version below. It is a pain though - I expect it's not been added because it would cause more confusion than the convenience it provides.
You're way overthinking this guys.
If you have an older version of the page you want to work from....
Goto versions.
click the check box next to the older version of the page.
click approve.
remove more recent versions of the page (click the check boxes, hit remove)
start making some changes (or dont)
hit exit edit mode.
Your older version of the page is now the live one.
It's not an oversight or a bug, thanks for thinking so highly of our talents as a whole though. Versions are moments in history. It's like a ledger. You can't change old data by design, but you can always add a new entry. Making it so you can have multiple approved versions or fork a page from any point to have two branches would get very complex very quickly.
If you have an older version of the page you want to work from....
Goto versions.
click the check box next to the older version of the page.
click approve.
remove more recent versions of the page (click the check boxes, hit remove)
start making some changes (or dont)
hit exit edit mode.
Your older version of the page is now the live one.
It's not an oversight or a bug, thanks for thinking so highly of our talents as a whole though. Versions are moments in history. It's like a ledger. You can't change old data by design, but you can always add a new entry. Making it so you can have multiple approved versions or fork a page from any point to have two branches would get very complex very quickly.
just to further clarify,
here's a video of me making a version of a page I like.
making a few more I don't.
then going back to the version I like and using it as a starting point to make more changes to the page:
http://www.youtube.com/watch?v=QdTBKyrxLnU...
very doable.
here's a video of me making a version of a page I like.
making a few more I don't.
then going back to the version I like and using it as a starting point to make more changes to the page:
http://www.youtube.com/watch?v=QdTBKyrxLnU...
very doable.
> just to further clarify,
> here's a video of me making a version of a page I like.
I appreciate the effort, but I found your hastily created, low res, narration-less screencast of no real value. It was just a difficult-to-read-and-follow rapid sequence of zipping mouse pointers and flashing dialogs.
> very doable.
Creating a website with Drupal is "very doable" as well. So like, what's your point?
;-)
-Steve
> here's a video of me making a version of a page I like.
I appreciate the effort, but I found your hastily created, low res, narration-less screencast of no real value. It was just a difficult-to-read-and-follow rapid sequence of zipping mouse pointers and flashing dialogs.
> very doable.
Creating a website with Drupal is "very doable" as well. So like, what's your point?
;-)
-Steve
> You're way overthinking this guys.
Or perhaps you're underthinking it. I'll attempt to make a couple points and offer a different perspective...
> If you have an older version of the page you want to work from....
> Goto versions.
> click the check box next to the older version of the page.
> click approve.
But clicking "approve" publishes that older version immediately. Chances are, you would want to keep the current version "live" and make modifications (even if they're just minor tweaks) to the old version BEFORE publishing it.
> remove more recent versions of the page (click the check boxes, hit remove)
Surely you're not suggesting that it's "intuitive" to go through 6 steps, including removing versions of a page from history, in order to use a past version as the starting point for a new version, are you? And what if someone had planned to use one of the more recent versions (that they were "forced" to delete) as the starting point for another version in the future?
To use your ledger analogy, you're basically saying that if you want to enter a new transaction that's very similar to an existing one (i.e. you wish to use a past transaction as a template for a new one), you must first delete all transactions SINCE that past transaction in order to proceed. That makes no sense to me. Not only is it unnecessary "hoop jumping", but it forces the user to discard data, which is a completely unexpected (and undesirable) requirement when the goal is simply to create a new version of a page.
> start making some changes (or dont)
> hit exit edit mode.
> Your older version of the page is now the live one.
Actually, the older version was "live" after step 3 when it was approved; and as already mentioned, you probably wouldn't want to publish an earlier (possibly outdated) version of a page that you are using as a template UNTIL you are finished modifying/updating it.
> It's not an oversight or a bug,
I recognize that it's by design, but the behavior obviously didn't match the OP's expectations (which don't seem unreasonable to me). I'm not defending the use of the term "bug" or "oversight", but I do think the OP points to an area where C5 could be improved.
> Making it so you can have multiple approved versions or fork a page from any
> point to have two branches would get very complex very quickly.
I agree, but I also think that neither of those would be necessary to address the issue. It seems that there might be another way to go about it...
My understanding of what happens "behind the scenes" when a page is edited is that you are basically editing a copy of the most recent version. In other words, the most recent version of the page is used as a template and duplicated to create the new version being edited. Clicking "publish" simply flags the version as the approved (live) version of the page. Clicking "preview" is the equivalent of "save this version and exit edit mode without publishing."
Given that, it seems ANY version of a page could potentially be duplicated and used as a template in like manner. It would not require forking or multiple approved versions as you suggest. There would still be only a single approved version of the page at any given time as well as a single "lineage" in terms of history.
So in addition to the existing functionality of...
* Create a new version of the page based upon the most recent version. (existing behavior)
...there could be the following NEW functionality...
* Create a new version of the page based upon a user-selected version. (new behavior)
If this new funtionality could be implemented and a suitable UI created, then not only would it address the issue raised in this thread, but it would also provide a solution to the issue I encountered here...
http://www.concrete5.org/community/forums/usage/edit-specific-page-...
Being able to use a past version as the starting point for a new version of a page would be useful indeed, in my opinion.
Anyone have any thoughts on this?
-Steve
Or perhaps you're underthinking it. I'll attempt to make a couple points and offer a different perspective...
> If you have an older version of the page you want to work from....
> Goto versions.
> click the check box next to the older version of the page.
> click approve.
But clicking "approve" publishes that older version immediately. Chances are, you would want to keep the current version "live" and make modifications (even if they're just minor tweaks) to the old version BEFORE publishing it.
> remove more recent versions of the page (click the check boxes, hit remove)
Surely you're not suggesting that it's "intuitive" to go through 6 steps, including removing versions of a page from history, in order to use a past version as the starting point for a new version, are you? And what if someone had planned to use one of the more recent versions (that they were "forced" to delete) as the starting point for another version in the future?
To use your ledger analogy, you're basically saying that if you want to enter a new transaction that's very similar to an existing one (i.e. you wish to use a past transaction as a template for a new one), you must first delete all transactions SINCE that past transaction in order to proceed. That makes no sense to me. Not only is it unnecessary "hoop jumping", but it forces the user to discard data, which is a completely unexpected (and undesirable) requirement when the goal is simply to create a new version of a page.
> start making some changes (or dont)
> hit exit edit mode.
> Your older version of the page is now the live one.
Actually, the older version was "live" after step 3 when it was approved; and as already mentioned, you probably wouldn't want to publish an earlier (possibly outdated) version of a page that you are using as a template UNTIL you are finished modifying/updating it.
> It's not an oversight or a bug,
I recognize that it's by design, but the behavior obviously didn't match the OP's expectations (which don't seem unreasonable to me). I'm not defending the use of the term "bug" or "oversight", but I do think the OP points to an area where C5 could be improved.
> Making it so you can have multiple approved versions or fork a page from any
> point to have two branches would get very complex very quickly.
I agree, but I also think that neither of those would be necessary to address the issue. It seems that there might be another way to go about it...
My understanding of what happens "behind the scenes" when a page is edited is that you are basically editing a copy of the most recent version. In other words, the most recent version of the page is used as a template and duplicated to create the new version being edited. Clicking "publish" simply flags the version as the approved (live) version of the page. Clicking "preview" is the equivalent of "save this version and exit edit mode without publishing."
Given that, it seems ANY version of a page could potentially be duplicated and used as a template in like manner. It would not require forking or multiple approved versions as you suggest. There would still be only a single approved version of the page at any given time as well as a single "lineage" in terms of history.
So in addition to the existing functionality of...
* Create a new version of the page based upon the most recent version. (existing behavior)
...there could be the following NEW functionality...
* Create a new version of the page based upon a user-selected version. (new behavior)
If this new funtionality could be implemented and a suitable UI created, then not only would it address the issue raised in this thread, but it would also provide a solution to the issue I encountered here...
http://www.concrete5.org/community/forums/usage/edit-specific-page-...
Being able to use a past version as the starting point for a new version of a page would be useful indeed, in my opinion.
Anyone have any thoughts on this?
-Steve
I personally don't see why not, but then again I don't have goggles with which I could see in the core team's head.
This could actually be achieved with one button in the version control view next to the existing ones (Compare, Approve, Remove):
EITHER
a) Copy (would copy the selected one to a new version)
OR
b) Edit (would pass the user to the editing view of that version and when user publishes/saves that page, it would be saved to a completely new version, I would guess that is the default behavior already there)
Doesn't seem that it would mess up that much of the versioning system...
Antti / Mainio
This could actually be achieved with one button in the version control view next to the existing ones (Compare, Approve, Remove):
EITHER
a) Copy (would copy the selected one to a new version)
OR
b) Edit (would pass the user to the editing view of that version and when user publishes/saves that page, it would be saved to a completely new version, I would guess that is the default behavior already there)
Doesn't seem that it would mess up that much of the versioning system...
Antti / Mainio
I can definitely see how Steve's suggestion would work and I think it's a very good solution to the problem. It does break the linearity of the edits which may or may not make the required alterations to the database a bit of a nightmare. If each version has its own copy of the blocks it contains then making a duplicate of those blocks for the current version ready for editing shouldn't be a problem. If the versions have some clever back-referencing method in place for blocks that haven't changed, this might make things more complicated because an edit to the new version might then change the content of intermediate versions as well, when it shouldn't do.
I don't think it's fair of Franz to say that we are wrong and he is right because it is the end users that decide whether the software meets their requirements or not and on this occasion and in this very small area it doesn't. Of course software isn't perfect and I very much doubt it ever will be, but if it's possible to add additional functionality like this without adding bloat, confusion in the user interface or additional bugs with other versions, then it should be done. I'm not saying it should have a high priority, but it would be nice to have the developers acknowledge that this would add to the system and schedule it to happen at some point, rather than be told that a work around with caveats is the only solution that will be considered.
Another partial solution that would be even easier to implement would be to allow us, the content editors, to view an old version without making it the approved version and for us to be able to copy blocks or content from that so that it can be used in a new version. This is clumsy as a solution, but would at least let us get back to old content without making the whole world able to see it.
I don't think it's fair of Franz to say that we are wrong and he is right because it is the end users that decide whether the software meets their requirements or not and on this occasion and in this very small area it doesn't. Of course software isn't perfect and I very much doubt it ever will be, but if it's possible to add additional functionality like this without adding bloat, confusion in the user interface or additional bugs with other versions, then it should be done. I'm not saying it should have a high priority, but it would be nice to have the developers acknowledge that this would add to the system and schedule it to happen at some point, rather than be told that a work around with caveats is the only solution that will be considered.
Another partial solution that would be even easier to implement would be to allow us, the content editors, to view an old version without making it the approved version and for us to be able to copy blocks or content from that so that it can be used in a new version. This is clumsy as a solution, but would at least let us get back to old content without making the whole world able to see it.
http://www.concrete5.org/community/forums/usage/edit-specific-page-...