0

SEE COMMENTS AT BOTTOM OF POST - I've come up with a partial solution

I'm attempting to write a simple JS script to force users to spell check their indesign documents before certain actions (Specifically Save, SaveAs, and Export).

Essentially, my issue is that the script is working, but it is running AFTER the event. For example, on SaveAs, the event runs, saves the document, and then triggers the function.

I'm thinking I need some sort of before.Invoke, but I can't figure it out.

Here is my code so far:

#target indesign

#targetengine "session"

main();
function main(){
    alert('Hello 8');

    var myBeforeSaveEvList = app.addEventListener("beforeSave", checkSpelling, false);

    var myBeforeSaveAsEvList = app.addEventListener("beforeSaveAs", checkSpelling, false);

    var myBeforeExportEvList = app.addEventListener("beforeExport", checkSpelling, false);

    //var myAfterSaveEvList = app.addEventListener("afterSave", myAfterSaveHandler, false);

    function checkSpelling(myEvent){
        alert('Before Save...');
        app.menuActions.item("Check Spelling...").invoke();
    }
}
Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
blancast
  • 1
  • 2

1 Answers1

0

I managed to come up with a partial solution, but now I'm running into another issue.

I called the actions by name and added a 'beforeInvoke' event listener. This allows the CheckSpelling function to run before the event run.

The issue is that the save/export dialog box pops up immediately after the check spelling popup, never allowing the user to actually check spelling before saving/exporting.

I imagine I need to write some code to prevent the dialog box from popping until the spell checking is done, but I'm not sure where to start.

New code:

main();  
      
    function main(){  
      
         alert('Hello 12');  
      
     //app.addEventListener( "beforeExport", chSpelling );  
     //app.addEventListener( "beforeSave", chSpelling );  
     //app.addEventListener( "beforeSaveAs", chSpelling );  
       
      var
     //beforeSave = app.menuActions.itemByID ( 260 ).addEventListener ( "beforeInvoke", checkSpelling );
     //beforeSaveAs = app.menuActions.itemByID ( 261 ).addEventListener ( "beforeInvoke", checkSpelling );
     //beforeSaveAsCopy = app.menuActions.itemByID ( 262 ).addEventListener ( "beforeInvoke", checkSpelling );
     //beforeExport = app.menuActions.itemByID ( 113411 ).addEventListener ( "beforeInvoke", checkSpelling );
     
     beforeSave = app.menuActions.itemByName ( "$ID/Save" ).addEventListener ( "beforeInvoke", checkSpelling );
     beforeSaveAs = app.menuActions.itemByName ( "$ID/Save As..." ).addEventListener ( "beforeInvoke", checkSpelling );
     beforeSaveACopy = app.menuActions.itemByName ( "$ID/Save a Copy..." ).addEventListener ( "beforeInvoke", checkSpelling );
     beforeExport = app.menuActions.itemByName ( "$ID/Export..." ).addEventListener ( "beforeInvoke", checkSpelling );
       
         function checkSpelling(myEvent){  
      alert('Check Spelling...'); 
      app.menuActions.item("Check Spelling...").invoke();  
      }
      
      

  }  
blancast
  • 1
  • 2