Is there a way to register an interaction within a Adobe XD document?
For example if a user presses a button, can we send a response to an external server notifying that that event happened?
Reading the Adobe XD plugin documents it seems that most API's are used for read only.
Any help appreciated and maybe pointers on what's needed (websockets etc)
Yes you can the plugin API gives you several methods for interacting with objects in the scene and interface elements.
Read the docs for more info
[Disclaimer: I am new to Notes, and am picking up a project that was started by someone else, so I'm not sure if this is the best approach, and with that out of the way ....]
We have a Notes 9.0 frameset, which is being driven by a couple of databases. There are 4 parts to the frame set, with the primary one being the selection of a client. This populates the second frame with their information, and the third frame with any related clients - such as business partners, associates, etc. The fourth frame would be any and all correspondence listed with the related clients (either one or many) which has been placed into an XPage. We cannot, though, load the XPage inside the frame, having tried multiple instances of .urlopen(XPage location) and trying to open the notes:// source, http:// source, and setting the target frame in both the inline URL and as a .SetTargetFrame("frame") fashion.
Is it possible to open an XPage from with a Frameset, or is there a better approach to this?
Thanks
Integrating or embedding XPages into a traditional Domino web application is a common approach and straightforward because it's the same protocol with the same authentication. Integrating XPages into a standard Notes Client design element is challenging for a variety of reasons, not just the URL required but also because authentication to the client is via Notes ID stored on the PC, authentication to the XPage is via HTTP protocol.
If you're wishing to display a list of the correspondence in a standard Notes frameset in the Notes Client, the approach I'd take is just to point to a View or embedded view set to a single category based on the client selected. If it's a server within a decent connectivity range, view performance will be better. If it's just a list, the data should be available for a view. If it's to navigate into the documents and you want to open the correspondence in an XPage, that's achievable from a view by setting the property on the Form to open in a specific XPage.
I'm not certain, but it sounds like your choice to use the XPage was because someone had already developed an XPage of that information for web access, possibly for the external clients themselves. While re-using the previous code may seem a good approach, the challenges of integrating one technology into another (as you see) counter the benefits.
This isn't about XPages itself, it's about embedding technologies that are not really designed for that level of integration. Similarly if the correspondence was an Angular front end using REST services to pull the information from Domino, you would have similar issues integrating it into the Notes Client application (authentication, running code on the client to run code on the server to get data for the client to process - when Notes is already designed for good nrpc communication).
There may be benefits in time of migrating all of the frameset to an XPages application or a specific set of use cases that won't require users switching between browser client and Notes Client. But if that's not the approach for now, integrating the XPage into the frameset is likely to be a challenge, no least in terms of look and feel, that may not result in a good user experience.
You can integrate an XPage into a Notes client, but it will require to learn about a number of moving parts. Instead of a Frameset you would use a composite application (same idea, more possibilities) and show various composites: Views, Forms, Pages, XPages, Navigators etc.
However you might consider reversing the process. When the XPages application in the browser works well, you could use the XPiNC feature (XPages in Notes Client) to show the same UI in the Notes client (presuming you have a current Notes version).
You will find some articles here: https://www-10.lotus.com/ldd/ddwiki.nsf/xpSearch.xsp?searchValue=%20XPages%20in%20the%20Notes%20client
My thought: what possibly makes you problems opening XPage in frameset (either with http:// or notes:// protocols) is incompatible browser (that one in client).
You can workaround this problem if you do not need all the bells & whistles of standard XPage - Dojo, events, themes...
So, what about making that XPage as simple as possible: make it stateless, disable Dojo, do not use any events (buttons, actions), in other words just plain HTML/CSS with no JS. That should work inside frameset. All the backend stuff - SSJS, datasources and so on is OK, of course.
Edit: another hint to make it work inside frame/internal browser. Sometimes XPage fails in XPiNC mode because of wrong datasource definition. When viewed from http of Domino server, all local databases are the server ones. But in XPiNC all local databases are treated as local replicas (usually nonexistent) and therefore fail to open. Possible solution:
run XPages from server (https://superuser.com/a/586602/17277)
redefine datasource: include server name in database property (hint: remember server!!database.nsf convention)
That's just a hint, I am not sure it will work for you.
I am trying to create a Modalless dialog in my exsisting project. CDialog::Create cause debug assertion. I tried a new Dialog based application and followed the same steps, the dialog gets created without any error.
Also in my exsisiting project I am using MFC as static Library, can this affect the functionality?
really looking forward for any helpful replies
Best Regards
Well this is just a stab in the dark given the vagueness and lack of information in the question, but have you created the dialog as a WS_CHILD and not WS_POPUP?
I have a lot of SSJS codes on many NSF, most of the NSF use the same functions code.
So I tried to make a Library with all the common functions, I'm trying to use the Xpages Starter Kit, because it claims to have SSJS Library Provider and implicit global SSJS.
There theres a Server.jss file that says "//your SSJS library code goes here".
I put some simple code there just to test it, but I couldn't figure out how it works.
print("Hello World");
function hello(){
print("hello");
}
How it works?
I made and install the update site, put the <openntf:canvas/> on a xpage. The canvas tag is created, but nothing seems to happen with the SSJS. Nothing on server console, and if a try to call hello function an error is raised.
How can I access SSJS functions on the library?
The library id - org.openntf.xsp.starter - is defined various places in the Starter Kit. It's also there with "/" instead of "." for some contexts.
Also, double-check the library has been enabled in Xsp Properties for your application.
It's also worth looking at the Domino Debug Plugin on OpenNTF to debug your code directly in Eclipse. Also check the Help > Support > Trace and Help > Support > Log in Domino Designer for any errors for your class.
I have a plugin that i would like to show a pop up where a user can enter some text, which when completed the plugin can use. Is such a thing possible or are prompts only available using javascript?
Thanks
This isn't possible. You can pass a message from a plugin to a user by throwing an exception, the user will get the exception message but they wont be able to reply.
I would suggest a dialog using custom workflow activities.
Can't be done the way you think. That's because the plugin is run directly on the server. However, you've got two options.
If it's for debug, you can use a tracer and write to it. The downside is that you need to crash the plugin to deliver the message to the GUI. Hardly recommendable for a common user.
If you absolutely must (and I know you don't must that much), you could invoke a web service from the plugin. If the web service gets to communicate with the desktop somehow, you'll be able to start desktop-ish application and show the message box from there.
What would you like to achieve by the message box, by the way? Plugins are meant to handle the internal logic on the server so there might be a better approach to what you had in mind.