Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.

Should this be a function?

Avatar

Level 2

Hi all, I have the code below attached to about 3000 small boxes that insert a text when clicked, it works very well, but I can't help thinking that it's not very efficient!

I've tried fragments, but each box needs to be referenced and I assume that if you change one fragment you change them all.

I also looked at functions and script objects, but I'm lost as it seems to me that you can't use (if - then) etc. within a function.

Would someone be kind enough to tell me if it's possible to convert this to a function and roughly how, please.

Many thanks..Sean

var deleted = substr(Header.currnturl[0].rawValue,64,150)

if (Header.currnturl[0].rawValue == null and $.rawValue == null) then

xfa.host.messageBox("Please paste a valid URL link into the first page", "No URL Link?", 0, 0)

elseif

($.rawValue == null) then

$.rawValue = deleted

$.access = "readOnly"

Rectangle10.assist.toolTip = deleted

else

var urljoin = concat((Header.urlstart[0].rawValue),

($.rawValue))

xfa.host.gotoURL(urljoin)

endif

1 Reply

Avatar

Level 10

Hi,

It can be a function, which will make it easier to maintain. Script objects only accept javascript, so you would need to change your script to suit.

The click event would look something like:

yourScriptObject.urlScript(this.rawValue);

Then the script object (yourScriptObject) would contain a function (called urlScript):

function urlScript(fldValue) {

     var vDeleted = Header.currnturl[0].rawValue.substring(64,150) // the second parameter is one greater than the last character you want from the string

     if (Header.currnturl[0].rawValue == null && fldValue == null)

     {

          xfa.host.messageBox("Please paste a valid URL link into the first page", "No URL Link?", 0, 0);

     }

     else if (fldValue == null)

     {

          this.rawValue = vDeleted;

          this.access = "readOnly";

          Rectangle10.assist.toolTip = vDeleted;

     }

     else

     {

          var urljoin = Header.urlstart[0].rawValue.toString() + fldValue;

          xfa.host.gotoURL(urljoin);

     }

} // this is the closing bracket in the function         

You will probably need to adapt / change / test...

Good luck,

N.