Netsuite: How do you edit the email preferences page? - netsuite

I am using Site Builder, and there is currently a less than ideal looking email preferences page.
The url of the page is: https://forms.netsuite.com/app/crm/marketing/campaignlistener.nl?...
Is there a way to edit it somewhere?

There is no way to edit this directly.
Your best option is to inspect the classes and markup used and inject css and scripts (via a tab level tag override) to fix the page.
The other option is to replace the page entirely with a page of your own creation. The problem with that is once you do that you should only allow soft-opt-out because while you can set a hard opt-out with a script you cannot change from a hard opt-out with script.

This is a pain. I think what I may have done in the past was to insert some code on the My Account page that creates an iframe. Then you grab the Subscription Center link and replace it with a Suitelet URL that has the escaped Subscription Center url as a parameter and change its target to the iframe(same domain - forms.netsuite.com))
When the Suitelet opens it uses a postMessage to make the My Account let it take over and then creates another iFrame and makes the source of that iFrame the original Subscription Center iFrame. the Suitelet detects (on open) that the center is open an then because you are in the same domain you can inject CSS. When the subscription center goes away (a new onOpen function sourced from the Suitelet page) you can again use postMessage to "return" to my account.
I think this breaks in Safari but it's such a hack that I have steered away from this sort of thing and these days would tend to roll my own and manage hard opt-outs with the email from the Netsuite GUI.

Related

Chrome Extension overwrite existing webpage

I will try to make this as short as possible. I am making a Chrome extension and I wanted to have an integrated settings tab so users can customize their experience. Now, I want this settings tab to be somewhat of an "extension" to an existing settings tab in a website. Let me explain.
The website I am talking about is Roblox.com, a popular gaming platform. When logged in, you have the ability to visit your settings, which look something like this:
Now, in order to navigate the different setting "tabs," you simply click on a button and it takes you to another change. The URL corresponding to each page is https://www.roblox.com/my/account#!/TAB_NAME, with TAB_NAME being the name of the tab. What I want to do is make my own "tab" where once the player clicks, it will bring them to a settings tab where they can tweak the extension's settings. This would look something like this:
I am fully aware on how to this (inject a button into the list and customize said button), but what I don't know what to do is make it so that once the button is clicked, it will not redirect you to another website, but will simply "switch tabs" like it would with any other setting. There is an extension that already does that called "Roblox+", where it adds a button to the list, and once clicked, it takes you to a similar-looking page with the URL https://www.roblox.com/my/account?tab=rplus#!/info. From my understanding, since the tab name isn't a header, the URL does not change, which allows for a custom webpage. Now, if you were to paste that URL in a browser without the extension, then it would simply redirect you to the "Account Info" tab (although the URL remains). Here is how the Roblox+ extension settings page looks like:
Now, from what I can assume, what happens is that right after the normal account information page is loaded, it removes all the HTML elements that are related to the account information tab and re-creates the entire page using custom HTML elements. That is something similar to what I want to do. Regardless of this, I do have one question. Is it possible to somehow "overwrite" a certain domain so that, let's say, the URL https://www.roblox.com/my/account#!/my_plugin_settings led to my custom page (even if that means that the page is made from an HTML file) instead of where it was supposed to lead? If that isn't possible, would it be better to create a custom settings page outside of the Roblox website or somehow inject my own into the current settings?
This is the question that I have. Hopefully I explained it well. If someone could assist me on this, then that would be amazing. Thank you for your time and help, I truly appreciate it.

SSO SignIn page rendering with Email input element at top of page

When attempting to the load the default SSO SignIn page in Azure, the Email Address element is selected by default and in focus as follows;
When the page is zoomed the Email Address input is rendered at the top of the page on load, this causes tablets and smaller devices to be presented with a page that is already scrolled.
I have attempted to add a new input on a custom page and given it a tabindex of 0 (as a hack) as the default for all element contained inside the "api" div is 1.
I have also given the input element the autofocus attribute but it seems to strip both on render.
https://www.realmadrid.com/en/login is using a similar SignIn page and appear to have this function turned off, having gone through all the source that I could find it isn't directly apparent how they are achieving this.
Obviously this would be easy if it were possible to use JavaScript on custom pages in Azure B2C SSO but as this is not yet possible, does anyone know of a possible workaround or fix for this issue?
Update:
It's a little hard to illustrate using a screenshot, but if you select 'run now' on a new default 'SIGN-UP OR SIGN-IN POLICY' policy, set responsive as per screenshot, scroll to the top of the page and press F5, you'll be able to see the stated behavior.
We are using heavily custom policies, I'm aware of how to do this, I'm using a default example for ease of replication.
This is no longer an issue due to MS allowing front end JS https://learn.microsoft.com/en-us/azure/active-directory-b2c/javascript-samples

Can Chrome Extension’s new options_ui trigger a page action?

I’ve been placing a page action on the options page of my Chrome extension. options.js calls chrome.runtime.connect({"name":"someName"}), and background.js has
chrome.runtime.onConnect.addListener(function(port) {
chrome.pageAction.show(port.sender.tab.id);
});
Unfortunately, in the new options_ui with the recommended default (and someday mandatory) "open_in_tab":false, the Sender's tab won't be set. Is there a way to get the tab id in order to show the page action?
I could use tabs.query to get the chrome://extensions/ tab, but that requires the tabs permission, which I currently don’t need. Active tab seems like it would work, but it doesn’t provide the tab id and isn’t enabled by opening an option dialog (source).
(Why do I want the page action on my options page? The extension works with a website that is only available ~7-10 weeks per year. I’d like my users to be able to interact with the extension the rest of the time, so that they can get used to the process. But I don’t want to adjust the displayed extension permissions just to do so. I can accomplish this by having the options page pretend to be the website in question.)

Prevent direct access to some page in JSF

I want to restrict direct access to certain page in my application. Those pages can only be accessible if the user is redirected to those pages by the application.
All the redirections are done via ExternalContext#redirect(url) method.
User can use back and forward button, also can refresh the page by pressing F5 or via browser's refresh button. What I want is user cannot save, or bookmark URLs of some page, also cannot copy those redistricted URL and paste and go via address bar of the browser.
Followings are the cases:
Say, I have Page-A and Page-B.
Redirection is done to Page-B from Page-A.
User can go back to Page-A and can come again to Page-B by using browser's back and forward button.
User can refresh Page-B and he/she will stay in Page-B.
User CANNOT copy the URL of Page-B and access it later time (in new tab or by bookmarking).
Is it feasible? Any pointer would be very helpful to me.
I don't think you can do all that from JSF.
Your obvious alternative is to use Javascript.
I never herd a concept of disabling Bookmark option in Browser using Javascript. However you can always disable the address field if you open the page in new Window.
You can solve it with
JSF Navigation Handler - set a session attribute from some previous page and expire the value after some time with a timer. From the Handler impl check the value of the attribute and restrict access e.g. redirect to some other page in case the value is not present.
You can achieve similar behaviour with web frameworks. Enforcing controlled navigation is a basic feature in most WEB FXs e.g. JBoss Seam conversations or Spring Web Flow controlled navigation implementations.

tabs permission or content script?

I'm writing an extension that needs to show a page action on amazon.com pages.
Would it be better to request the "tabs" permission or to inject a content script into amazon.com pages?
The tabs permission strikes me as using less resources (because it just checks the URL against a regex in the background script) but I think it's a scarier permission message ("access your tabs and browsing activity")?
Injecting a content script into amazon.com pages seems like it would take more resources it but would only need permission to amazon.com...
It is a generic question and answer depends on Client to Client. You have pointed out the + and - of each.
I suggest you to go for content scripts if your clients are particular about security and privacy, in this you are adding an extra load to pages(with content scripts and message passing) which may slow down the normal execution process.
I suggest you to go for tab permission, if you are all about performance. It is a native API, and executes in background page no extra load on tabs. Many extensions on web store does use tabs API, i dont think this would scare them as this is not new.
However, it is all about your target section of users.

Resources