Copy link to clipboard
Copied
Done some coarse Google search - and looks like there is nothing for tracking Object changes?
So I've got an idea - but it would require pitching in from JS gurus - at least @Peter Kahrel , @m1b , @rob day- I'm sorry if I missed someone - those are just few nicknames from the top of my head - in no particual order.
Here it goes:
It woulld require 3x scripts:
I'll of course add this and more - like live tracking of changes - to my ID-Tasker - but mentioned above limited functionallity could be added for Mac users as well - but that would require JS.
What do you think? Can we do this together?
Copy link to clipboard
Copied
> looks like there is nothing for tracking Object changes
Correct. 'Track changes' is text only.
As for your other idea, that could be made to work probably, but it won't be easy to capture changes in/on each and every object.
Copy link to clipboard
Copied
The JS version - woud probably only capture changes made "before" - scripts from step "1." - when document has been edited on a machine WITHOUT this set of scripts - or "after"- script from step "2." - when user is working on a machine WITH this set of scripts and before document is closed - current status of all objects needs to bee recorded.
About the "live" tracking - in JS it would probably require adding "on change" even to every object - in VB it's pretty easy, I can do live tracking and act accordingly "in the bacground" - that's one of the working modes of the ID-Tasker - live reaction to the current selection without interrupting user.
Copy link to clipboard
Copied
It is an intriguing project @Robert at ID-Tasker. What is an example use case? Comparing two documents?
Copy link to clipboard
Copied
Thanks. No comparison - just recording "after open" and "before close" status of each object.
As we can use InsertLabel for each object - we could add "records" of each stage. Not sure if it could be done in JS - probably only copying - but in ID-Tasker, I could ZIP/RAR current version of the linked object and keep it in an archive with a time stamp - to save space - if user would like to "go back in time". JS probably would need to just copy current version of the file and add time stamp at the end of the file name.
Unfortunately, JS is a bit limited - in terms of UI - so the full potential could be only achieved with ID-Tasker - but some functionality could be achieved in JS - so would be platform independent.
Copy link to clipboard
Copied
Instead of adding to the document file size, you could produce an external XML for the object hierarchy, including all their properties. Eventually subdivide into multiple XML files at major points. For space saving, I'd also suggest to compress everything into an archive file.
Copy link to clipboard
Copied
I'm not talking about Objects HIERARCHY - that's already done in ID-Tasker.
Dumping ALL Object's properties would be overkill and would require / involve external files AND could be problematic if someone without the knowledge of the process will work on the file... and I've already mentioned compression of linked files.
Changes tracked for Text are quite "limited" anyway so there is no need to do much more for Objects.
I'm not talking about KBs of information - just few bytes per object - and ONLY for things that has been changed and ONLY for selected properties - like GeometricBounds (will cover size and postition), Scale, Flipping, Rotation, Page name|index|ID, linked file's FullName+Size+Date, ObjectStyle, User - and maybe few more if necessary.
And of course purge can be done from time to time.
So yes, it would require script mentioned in point 3 - for JS users on a Mac and PC.
But is perfectly doable - at least through ID-Tasker ... maybe too much for JS ...
Copy link to clipboard
Copied
> looks like there is nothing for tracking Object changes
Here we go:
Model To Model Listeners are a low level mechanism to "listen to" (vs Subject/Observer) changes to persistent objects in a database. It was used internally in CS4 to revise the way TextWrap and TextFrames detect changes to the the myriad number of properties and objects they depend on.
…
Listeners can be attached to any persistent objects in the system and this attachment is determined by the M2MMessageManager on the first change to a persistent instance of a class by calling all the Listeners on their GetMessagesFor() method. A Listener which wishes to receive further notifcation of changes to any instance of the specified class must return a list of "messages" in the form of PMIIDs associated with the class.
sdk/docs/html/class_i_m2_m_message_listener.html
Copy link to clipboard
Copied
It seems to me that this could be accomplished by simply sending the appropriate action to Git before the file is opened and after it is closed. Is that a good substitute?
Copy link to clipboard
Copied
What is GIT?
Copy link to clipboard
Copied
Copy link to clipboard
Copied
That's what I've suspected - which is rather pointless and doesn't make any sense?
Copy link to clipboard
Copied
Git is software mainly used for version control of program code and related assets. It automatically detects changes made by the user, and allows the user to record them in the history or revert to a historical stage.
Since the main target is text files, InDesign binary files are not a specialty of Git, but it should be able to manage them.
Copy link to clipboard
Copied
Unfortunately - it won't, in any way.
Copy link to clipboard
Copied
I sometimes use git for version control of some indesign projects (and all programming projects). As @sttk3 mentioned, unless you have human-readable files, looking at the individual changes is useless (you can't compare each change between versions), but at least you can commit major changes under a descriptive comment—and this is often all you need.
Let's say, for the sake of example, that a high-level change required changing or creating new paragraph styles, maybe character styles, adding or subtracting pages, and some manual adjustments. On one hand, you could look through hundreds of changes in key/value pairs in a DOM vs. git's human-readable comment for the entire version: "moved footnotes to endnotes".
Because I don't really understand Robert's use case, I can't comment on whether git would be useful. Probably not, I'd guess. But I just wanted to try to explain a bit more about what @sttk3 was talking about.
- Mark
Copy link to clipboard
Copied
That is unfortunate.
I thought it might be useful to detect or highlight changes, for example, if the documents were exported to an idml or snippet file. That is because it is just text.
If you think it is not relevant, that’s fine.
Copy link to clipboard
Copied
Unfortunately, as mentioned by @m1b - github is good for "plain text" changes tracking - either if it's a code or human notes.
Tracking changes in INDD files - without direct integration from within InDesign via plugin - is impossible, it would be like trying to compare versions of EXE file on a binary level, without access to a source code...
Copy link to clipboard
Copied
I just want to record all changes made to a specific / selected properties of graphic objects - either after opening and before closing file or more "live".
Then display this info and let user "go back in time" if needed - kind of selective undo?
As we can't access undo history directly - this would be kind of a workaround.
Copy link to clipboard
Copied
Hi @Robert at ID-Tasker ,
please talk a bit more about a possible use case.
I'm not sure what you are aiming at exactly.
Is this for a collaboration workflow where everyone should know who did what and when in a particular document?
Regards,
Uwe Laubender
( Adobe Community Expert )
PS: Did not read your recent reply 20 min before I posted.
https://community.adobe.com/t5/indesign-discussions/track-object-changes/m-p/14059808#M540685
@Robert at ID-Tasker said: "…Then display this info and let user "go back in time" if needed - kind of selective undo?"
Copy link to clipboard
Copied
Like with tracking text changes - there is info which part of the text has been changed, when and by whom.
My idea is similar - but for graphic objects - to track their location, size, without going in to much details just ObjectStyle, linked info, then who changed and when.
And as we could save all those changes like a records in the database - but for convenience on an object level - we could go back in time more than one step.
Keeping copies of a whole documents is rather pointless - but knowing few tricks - would be still possible, but rather limited.