From: Tomas Frydrych (tomas@frydrych.uklinux.net)
Date: Sat May 18 2002 - 06:59:07 EDT
After thinking some more about what David said, I suggest we
introduce a single new attribute called revision which would look
something like
<[token, e.g., c] revision="-1;+2;-5;">some text</c>
This would mean that this particular segment of text was marked
for deleting in revision 1, put back in revision 2, untouched in
revisions 3 and 4, and removed again in revision 5. This is how we
would handle the display for a particular revision level cases:
case A: user chooses revision explicitly mentioned in the attribute
a) revision 1: hide this segment of text
b) revision 2: display this segment of text
case B: user chooses revision not mentioned in the attribute, e.g.
revision 4
We find the highest revision id lower than the id requested, in
this case 2, and use it instead; we display the text. If the
smallest revision id found is > 2, we will use implicit revision
0, with a sign opposite of that of the smalles id we found (see
an example below).
To answer David's concern about changing a single letter within a
continuous <c> ... </> span: this does not pose a problem, since
by changing the attributes of a single letter, the letter will
automatically be enclosed in its own <c> </> container on export.
To our list of view types (Normal, Print, Web), we will add a new
view Revision. In the non-Revision views the text of all revisions will
be displayed (using different colours, etc.), and the user will be
able to use commands Tools->Revisions->Accept Change and
Tools->Revisions->Reject Change, which will deal with revisions on
individual basis or within current selection.
In the special Revision view, the user will be able to see how the
document as a whole looks after a particular revision, plus will have
commands Tools->Revisions->Accept Current State of Document,
which will allow him/her to accept all the changes that resulted in
the document as s/he is viewing it, and Tools->Revisions->Accept
Current Revision, which would allow him/her to accept all the
changes made by the present revision. The former command will
be very useful for document management, from experience I can
say that document that contains several layers of revisions is very
unreadable; Accept Current State of Document will make it
possible to remove old revisions that are no more needed.
These two commands should probably request an explicit
confirmation before proceeding, because utlimately in the Revision
view the user will not see what changes were made, only what the
final result looks like.
The Accept Current State of Document command would work like
this, say this is a segment of our document:
< revision="-1;+2;-5">text1</>
< revision="+1;-2">text2></>
< revision="+5">text3</>
< revision="+2">text4</>
< revision="-1;+5">text5</>
and the user is viewing revision 2:
Any text in which 2 is the highest revision id present will be treated
according to that revision, i.e., text2 will be hidden, text4 will be
shown. Upon Accept Current State of Document, the fragment
text2 will be deleted from the PT, while fragment text4 will have the
revision attribute removed, i.e., it will become an ordinary text.
Any text in which 2 is present but is not the highest id would also
be shown using the id 2 attribute, i.e., text1 would be shown, but
on Accept Current State of Document the fragment would not be
deleted, instead all the id's <=2 would be removed from its
attribute, i.e, we would get in the PT for text1:
< revision="-5">text1</>
Any text in which revision 2 is absent will be treated according to
the highest id < 2 present, i.e., text5 will be hidden and text 3, with
an implicit revision -0, will also be hidden. Upon Accept Current
State of Document all revision ids smaller than 2 will be removed
from the fragment, so that we will get in PT
< revision="+5">text3</>
< revision="+5">text5</>
Consequently the document above in revision 2 will look
text1 text4
and the PT after the Accept Current State of Document command
would contain
< revision="-5">text1</>
< revision="+5">text3</>
text4
< revision="+5">text5</>
The Accept Current Revision command would work anologously to
the Accept Current State of Document, except it would only
remove the specific revision id, in our case 2, and delete only
fragments that have no other revision than -2. So the PT after
Accept Current Revision would look like
< revision="-1;-5">text1</>
< revision="+1">text2></>
< revision="+5">text3</>
text4
< revision="-1;+5">text5</>
As David suggested, we will add a new preference to issue warning
when saving a document that contains revisions and annotations.
We will also need an extra document attribute indicating which
view should be used to display the document when first loaded, we
should have this in any case so that if the document is saved in
normal view it opens in normal view the next time (same goes for
zoom factor). If the document is to be shown in Revision view, the
attribute will also carry with it the particular revision id to use. There
should be some very clear indication to the user what view is
currently selected, and if appropriate, which revision ID.
Tomas
This archive was generated by hypermail 2.1.4 : Sat May 18 2002 - 07:07:59 EDT