Need guidance on development choices

I have what I thought was a simple extension for FF. When on a specific page for a popular CRM application it would provide a popup panel allowing you to select several coding fields. Mostly select elements two that use appendItem some checkboxes and two text fields. The user sets the appropriate values in the popup presses a button and they populate an input and text area on the webpage. When the panel pops up if the tags are already present in the fields it sets the panel selets to the value that was read. I wrote this some time ago and it is legacy style extension using XUL and javascript. My company recently went from ESR 38 to ESR 45 and now the extension no longer works. I tried the signing process on AMO but still nothing. I am not adverse to rewriting this for sdk or webExtensions but I can’t find any similar examples to guide me in development. As we are stuck with ESR 45 for some time I have spent most of my time with the SDK but I see that the select element does not work in a panel. I am looking for suggestions on what is the best course of action to recreate this extension. But to be honest I have no idea if I am using high level APIs or not. Most all of the code is javascript. I am really just looking for some guidance on what way to proceed.

Your addon should still work. You need to get it signed though. To do so, go to AMO, and click “Submit new addon”, then upload this as an “Unlisted” addon. Then, while you are logged in with the account that you uploaded the XPI with, download the XPI. Then distribute it via email or whatever means you want.

Now for future readiness though, either go with high level SDK, or WebExtensions. WebExtensions is the future, so if you can do this, it would be preferred. They are very simple. Here is one that attaches a script to any page that matches the github commits url page:

https://addons.mozilla.org/en-US/firefox/files/browse/430221/

Extremely simple. For your case you would modify the package.json of this addon to match the url of your CRM, and then you would modify expandify.js to execute the code you want to inject. That’s it, and it’s fully ESR 45 compatible.

Thanks for the response but unfortunately after signing and asking for a full review it does not work. It installs with no errors but the panel never comes up. Found a gentleman on my team that was able to install ESR 42 and it is working for him but for some reason not on 45. Converted my panel to html along with the CSS and modifed its js code to work with standard html elements not xul elements. I found them to be slightly different. example had to change all my appendItem statements to appendChild for my selectors. I am now trying to figure out how to get my messages between the panel and the page I want to modify. The biggest issue I have is the panel used to stay open until you hit a button. There was an error message or two if they did not set the tags properly. Now when that message pops up the panel goes away… Any thoughts on this?

The <select> element does work in a panel, popups do not. You could use notifications to alert users and use javascript and CSS to show or hide elements within your panel.

You could also use the PageMod to automatically run code to show or hide when you are on particular pages.

The above being said. If I were to write a new extension I would use webextensions as the SDK will eventually be deprecated, so to save yourself the hassle of another rewrite.

I have not yet wrote any webextensions based addons so I can’t offer much with that approach at this time.

As for your panel going away perhaps you could override the panel.hide method.

Thank you for the advice