• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
6

Track Object changes ...

Community Expert ,
Sep 03, 2023 Sep 03, 2023

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:

  1. Startup script - "after open" event - with a question if it should be executed - it would go through all objects, check their current location, size, linked file's data, size, etc. - list of options TBD - and compare with the last stored informmation in a "hidden" label - then add new "record" / line if necessary,
  2. "before close" event script - with a question if it should be executed - that would do what 1. does - record what user have done when working on the document,
  3. some sort of a panel that would show a list of objects and changes.

 

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?

 

TOPICS
Scripting , UXP Scripting

Views

583

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 03, 2023 Sep 03, 2023

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 03, 2023 Sep 03, 2023

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.

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 03, 2023 Sep 03, 2023

Copy link to clipboard

Copied

It is an intriguing project @Robert at ID-Tasker. What is an example use case? Comparing two documents?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 03, 2023 Sep 03, 2023

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.

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Sep 03, 2023 Sep 03, 2023

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 03, 2023 Sep 03, 2023

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 ...

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guide ,
Sep 03, 2023 Sep 03, 2023

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

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 03, 2023 Sep 03, 2023

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?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

Copy link to clipboard

Copied

What is GIT? 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

Copy link to clipboard

Copied

https://github.com/

 

How this would be useful in this case I've no idea, maybe @sttk3 can elaborate.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

Copy link to clipboard

Copied

That's what I've suspected - which is rather pointless and doesn't make any sense?

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

Copy link to clipboard

Copied

Unfortunately - it won't, in any way. 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

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...

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

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. 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

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?"

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 04, 2023 Sep 04, 2023

Copy link to clipboard

Copied

LATEST

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. 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines