Beenden
  • Globale Community
    • Sprache:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티

Event Listeners

Enthusiast ,
Sep 23, 2017 Sep 23, 2017

Hello, there..

I'm starting to work with eventListeners.

But, as you can imagine, I'm having problems.

Reading a lot of posts here I figured out how to run the afterOpen just one time.

But, now, I'm trying to run an beforeClose eventListener but it doesn't runs.

The afterOpen sets all stories to trackChanges = true.

On close, I want to turn off the trackChanges to all stories.

As I understood, the event runs AFTER the doc is closed, instead of BEFORE.

What am I doing wrong?

Thanks a lot!

THEMEN
Skripterstellung
2.4K
Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Populärer Benutzer ,
Sep 24, 2017 Sep 24, 2017

If you want a event listener to be keep on listening you need to use a persistent script engine.

That's made by using a specific directive:

#targetengine "session"

Actually "session" could be anything. It's the name you give to the script engine

That will make the script being executed all session long unless yours or someone else 's script will disable it.

beforeClose event may be listened but as the closing processiong cannot be stopped, you would need to store teh doc url, reopen it in invisible mode (app.open (someFile, false)) then do the edits and close.

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Enthusiast ,
Sep 24, 2017 Sep 24, 2017

I tried, but I'm failing on some point.

Take a look, please, and help me to find the right way to do this.

#targetengine "askRevisao"

app.addEventListener("afterOpen", askRevisao, false);

app.addEventListener("beforeClose", beforeCloseRev, false);

function askRevisao(myEvent) {

    if (myEvent.target.constructor.name !== "Document") return;

    var askRev = confirm("Deseja ativar a revisão?");

    if (askRev == true) {

        app.documents[0].stories.everyItem().trackChanges = true;

        }

    }

function beforeCloseRev(myEvent) {

    var myDocName = app.documents[0].fullName;

    app.open(myDocName, false);

    app.documents[0].stories.everyItem().trackChanges = false;

    app.documents[0].close(SaveOptions.YES);

    }

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Populärer Benutzer ,
Sep 25, 2017 Sep 25, 2017

You may try this syntax instead…

app.eventListeners.add

#targetengine "askRevisao" 

 

app.eventListeners.add("afterOpen", askRevisao, false); 

app.eventListeners.add("beforeClose", beforeCloseRev, false); 

 

function askRevisao(myEvent) { 

    if (myEvent.target.constructor.name !== "Document") return; 

    var askRev = confirm("Deseja ativar a revisão?"); 

    if (askRev == true) { 

        app.documents[0].stories.everyItem().trackChanges = true; 

        } 

    } 

 

function beforeCloseRev(myEvent) { 

    var myDocName = app.documents[0].fullName; 

    app.open(myDocName, false); 

    app.documents[0].stories.everyItem().trackChanges = false; 

    app.documents[0].close(SaveOptions.YES); 

    } 

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Enthusiast ,
Sep 25, 2017 Sep 25, 2017

When I close the document...

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Populärer Benutzer ,
Sep 26, 2017 Sep 26, 2017

Dealing with handlers imply to have a good understanding of the underlaying mechanisms. One of those is to ensure that the objects you are after actually exist or are in a state you can deal with :

//Making script persistent

#targetengine "listeningEvents"

//Main routine

var main = function() {

///VARIABLES DEFINITIONS

var

closedDocPath,

addCloseHandlers,

onAfterOpenHandler,

onBeforeCloseHandler,

onAfterCloseHandler,

onAfterOpenEventListener,

onBeforeCloseEventListener,

onAfterCloseEventListener;

//function to add close related listeners

addCloseHandlers = function() {

//adding a before close listener if not found

if ( !onBeforeCloseEventListener.isValid  ) {

onBeforeCloseEventListener = app.eventListeners.add ( "beforeClose", onBeforeCloseHandler );

onBeforeCloseEventListener.name = "onBeforeClose";

}

//adding an after close listener if not found

if ( !onAfterCloseEventListener.isValid  ) {

onAfterCloseEventListener = app.eventListeners.add ( "afterClose", onAfterCloseHandler );

onAfterCloseEventListener.name = "onAfterClose";

}

}

//Handler for after open events

onAfterOpenHandler  = function ( evt ) {

var doc = evt.parent;

if ( !(doc instanceof Document ) ) return;

doc.stories.everyItem().trackChanges = confirm ( "Deseja ativar a revisão?" );

}

//Handler for before close events

onBeforeCloseHandler = function ( evt ) {

var doc = evt.parent;

if ( !(doc instanceof Document ) ) return;

closedDocPath = File ( doc.properties.fullName );

}

//Handler for after close events

onAfterCloseHandler = function( evt ) {

var doc;

if ( closedDocPath && closedDocPath.exists ) {

//Removing close related events handlers so the reopening/closing of the doc doesn't fire them

onBeforeCloseHandler.remove();

onAfterCloseHandler.remove();

//Reopening doc in invisible mode

doc = app.open ( closedDocPath, false );

doc.stories.everyItem().trackChanges = false;

doc.close( SaveOptions.YES );

//Readding close related events handlers

addCloseHandlers();

}

}

//Referencing possibly existing listeners

onAfterOpenEventListener = app.eventListeners.itemByName ( "onAfterOpen" );

onBeforeCloseEventListener = app.eventListeners.itemByName ( "onBeforeClose" );

onAfterCloseEventListener = app.eventListeners.itemByName ( "onAfterClose" );

//adding after open listener if not found

if ( !onAfterOpenEventListener.isValid  ) {

onAfterOpenEventListener = app.eventListeners.add ( "afterOpen", onAfterOpenHandler );

onAfterOpenEventListener.name = "onAfterOpen";

}

//adding close related events listener

addCloseHandlers();

}

//Go tigers

main();

HTH

Loic

Ozalto | Productivity Oriented - Loïc Aigon

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines
Enthusiast ,
Sep 26, 2017 Sep 26, 2017
AKTUELL

Thank you so much for the class!

I'll try (to learn more about)...

Übersetzen
Melden
Community-Richtlinien
Seien Sie freundlich und respektvoll, geben Sie die ursprüngliche Quelle der Inhalte an und suchen Sie vor dem Absenden Ihres Beitrags nach Duplikaten. Weitere Informationen
community guidelines