123
-=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- (c) WidthPadding Industries 1987 0|319|0 -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=-
Socoder -> Web Development -> Multi-user CMS - conflicting writes?

Sun, 07 Aug 2011, 12:27
HoboBen
What do you do in a CMS when two (or more) people edit an article at the same time?

When the last user saves, just have a message saying "This article has been modified since you started. Do you still want to save your changes?"

That way, if a user is only changing a typo, they can decide not to overwrite the first user's major edit.

The entire page history will be saved, so things can be reverted if necessary.

Is that enough? How would you handle it?

I think a wikipedia-style diff is probably overkill for something that is going to happen fairly uncommonly (also my users aren't that great with the computer. We're talking IE6 and Windows XP with Service Pack 1 here).

I was thinking about allowing a user to lock an article while they're working on it (so nobody else can work on it) but the issue is how do you time them out after they close their browser without timing them out if they're just taking a long time? That would probably require an over-engineered ajax solution that probably won't work with IE6 (and yes I have to support IE6).

-=-=-
blog | work | code | more code
Sun, 07 Aug 2011, 16:00
CodersRule
Is it okay to use Flash/Java? It would do the same thing as ajax, but would work with IE6.
Sun, 07 Aug 2011, 20:52
Scherererer
You can always do a lock or semaphore type of mechanism; basically when one user opens the article for editing then the other users are not allowed to until the original user releases (or perhaps times out).

I like your idea though as well, you could just have a time stamp for when the user opened the file, and compare that against the last write time on the server side so that you know if changes were made in between, and then a warning message could be displayed or an error or something. It's simple and works whether users disconnect/timeout in between or not.

-=-=-
YouTube Twitter
Computer Science Series: Logic (pt1) (part 2) (part 3) 2's Complement Mathematics: Basic Differential Calculus
Mon, 08 Aug 2011, 01:20
Jayenkai
Yeah, that seems the better option to me, too.
As complex as you could make it, just keeping a set of previous versions seems like it would work out fine.
If the users want to quibble over which is the more complete revision, let them fix it themselves

-=-=-
''Load, Next List!''
Mon, 08 Aug 2011, 08:14
HoboBen
Thanks for the input, folks!