diff --git a/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/controller/CommandLaunchNomadLink.as b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/controller/CommandLaunchNomadLink.as index 347d7aa..002131f 100644 --- a/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/controller/CommandLaunchNomadLink.as +++ b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/controller/CommandLaunchNomadLink.as @@ -2,14 +2,16 @@ package controller { import mediator.MediatorMainContentView; + import model.proxy.login.ProxyLogin; + import org.apache.royale.html.elements.Iframe; - import org.puremvc.as3.multicore.interfaces.INotification; - import org.puremvc.as3.multicore.patterns.command.SimpleCommand; import org.apache.royale.jewel.Snackbar; - import model.proxy.login.ProxyLogin; - import org.apache.royale.net.navigateToURL; import org.apache.royale.net.URLRequest; - import constants.ApplicationConstants; + import org.apache.royale.net.navigateToURL; + import org.puremvc.as3.multicore.interfaces.INotification; + import org.puremvc.as3.multicore.patterns.command.SimpleCommand; + + import view.controls.snackbarNomadHelperUrl.SnackbarNomadHelperUrl; /** * This is a workaround to open a Nomad link directly in an existing Nomad tab by using the Nomad service worker. @@ -50,8 +52,10 @@ package controller if (!loginProxy.isNomadHelperUrlExists() && nomadWarningLink == false) { window["Cookies"].set("SuperHumanPortalNomadHelperUrlLinkWarning", true, { sameSite: 'strict' }); - Snackbar.show("This link is currently configured to open in a separate HCL Nomad Web window. For the best user experience, please ensure that your administrator has configured the server to open *.nsf database links in non separate HCL Nomad Web windows.", - 0, "Close"); + + SnackbarNomadHelperUrl.show(loginProxy.config.config.domino_data_directory, + loginProxy.config.config.nomad_base_url, + loginProxy.config.config.configuration_link.nomadURL); } try diff --git a/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/SnackbarNomadHelperUrl.as b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/SnackbarNomadHelperUrl.as new file mode 100644 index 0000000..5ddafe9 --- /dev/null +++ b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/SnackbarNomadHelperUrl.as @@ -0,0 +1,59 @@ +package view.controls.snackbarNomadHelperUrl +{ + import org.apache.royale.jewel.Snackbar; + import view.controls.snackbarNomadHelperUrl.beads.SnackbarNomadHelperUrlModel; + + public class SnackbarNomadHelperUrl extends Snackbar + { + public function SnackbarNomadHelperUrl() + { + super(); + + this.typeNames = "jewel snackbar layout SnackbarNomadHelperUrl"; + } + + public static function show(dataDirectory:String, nomadBaseUrl:String, configurationNomadUrl:String, parent:Object = null):SnackbarNomadHelperUrl + { + var snackbar:SnackbarNomadHelperUrl = new SnackbarNomadHelperUrl(); + snackbar.message = ""; + snackbar.duration = 0; + snackbar.action = "Close"; + snackbar.dataDirectory = dataDirectory; + snackbar.nomadBaseUrl = nomadBaseUrl; + snackbar.configurationNomadUrl = configurationNomadUrl; + + snackbar.show(parent); + return snackbar; + } + + public function get dataDirectory():String + { + return SnackbarNomadHelperUrlModel(model).dataDirectory; + } + + public function set dataDirectory(value:String):void + { + SnackbarNomadHelperUrlModel(model).dataDirectory = value; + } + + public function get nomadBaseUrl():String + { + return SnackbarNomadHelperUrlModel(model).nomadBaseUrl; + } + + public function set nomadBaseUrl(value:String):void + { + SnackbarNomadHelperUrlModel(model).nomadBaseUrl = value; + } + + public function get configurationNomadUrl():String + { + return SnackbarNomadHelperUrlModel(model).configurationNomadUrl; + } + + public function set configurationNomadUrl(value:String):void + { + SnackbarNomadHelperUrlModel(model).configurationNomadUrl = value; + } + } +} \ No newline at end of file diff --git a/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/SnackbarNomadHelperUrlContent.mxml b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/SnackbarNomadHelperUrlContent.mxml new file mode 100644 index 0000000..7a45b26 --- /dev/null +++ b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/SnackbarNomadHelperUrlContent.mxml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/beads/SnackbarNomadHelperUrlModel.as b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/beads/SnackbarNomadHelperUrlModel.as new file mode 100644 index 0000000..80fee5f --- /dev/null +++ b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/beads/SnackbarNomadHelperUrlModel.as @@ -0,0 +1,16 @@ +package view.controls.snackbarNomadHelperUrl.beads +{ + import org.apache.royale.jewel.beads.models.SnackbarModel; + + public class SnackbarNomadHelperUrlModel extends SnackbarModel + { + public function SnackbarNomadHelperUrlModel() + { + super(); + } + + public var dataDirectory:String; + public var nomadBaseUrl:String; + public var configurationNomadUrl:String; + } +} \ No newline at end of file diff --git a/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/beads/SnackbarNomadHelperUrlView.as b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/beads/SnackbarNomadHelperUrlView.as new file mode 100644 index 0000000..2509cd7 --- /dev/null +++ b/Super.Human.Portal_Royale/src/net/apacheRoyaleTemplatedApp/view/controls/snackbarNomadHelperUrl/beads/SnackbarNomadHelperUrlView.as @@ -0,0 +1,88 @@ +package view.controls.snackbarNomadHelperUrl.beads +{ + import org.apache.royale.jewel.beads.views.SnackbarView; + import org.apache.royale.core.IStrand; + import org.apache.royale.html.elements.Div; + import org.apache.royale.jewel.beads.models.SnackbarModel; + import org.apache.royale.jewel.Snackbar; + import view.controls.snackbarNomadHelperUrl.SnackbarNomadHelperUrlContent; + + public class SnackbarNomadHelperUrlView extends SnackbarView + { + public function SnackbarNomadHelperUrlView() + { + super(); + } + + override public function set strand(value:IStrand):void + { + super.strand = value; + + var model:SnackbarNomadHelperUrlModel = host.model as SnackbarNomadHelperUrlModel; + model.addEventListener("messageChange", messageChangeHandler); + model.addEventListener("actionChange", actionChangeHandler); + + var content:NodeList = host.element.getElementsByClassName("snackbar-content"); + host.element.removeChild(content.item(0)); + + var snackbarMessage:SnackbarNomadHelperUrlContent = new SnackbarNomadHelperUrlContent(); + snackbarMessage.className = "jewel snackbar-message"; + snackbarMessage.nomadBaseUrl = model.nomadBaseUrl; + snackbarMessage.dataDirectory = model.dataDirectory; + snackbarMessage.configurationNomadUrl = model.configurationNomadUrl; + + var snackbarContent:Div = new Div(); + snackbarContent.className = "jewel snackbar-content"; + snackbarContent.addElement(snackbarMessage); + host.addElement(snackbarContent); + + this.actionElement = null; + if (model.action) + { + actionChangeHandler(null); + } + } + + /** + * Update the text when message changed. + */ + protected function messageChangeHandler(event:Event):void { + COMPILE::JS + { + // HTMLElement(host.element.firstChild.firstChild).innerHTML = SnackbarModel(host.model).message; + } + } + + /** + * Show the action element or remove it, based on action text. + */ + protected function actionChangeHandler(event:Event):void { + var model:SnackbarModel = host.model as SnackbarModel; + + if (model.action) { + if (!actionElement) { + actionElement = document.createElement("div"); + actionElement.className = "jewel snackbar-action"; + actionElement.addEventListener("click", actionClickHandler); + host.element.firstChild.appendChild(actionElement); + } + actionElement.innerText = model.action; + } else { + if (actionElement) { + actionElement.removeEventListener("click", actionClickHandler); + host.element.firstChild.removeChild(actionElement); + actionElement = null; + } + } + } + + /** + * Trigger event and dismiss the host when action clicked. + */ + protected function actionClickHandler(event:Event):void { + actionElement.removeEventListener("click", actionClickHandler); + host.dispatchEvent(new Event(Snackbar.ACTION)); + SnackbarModel(host.model).duration = -1; // set -1 to dismiss + } + } +} \ No newline at end of file diff --git a/Super.Human.Portal_Royale/src/resources/app-styles.css b/Super.Human.Portal_Royale/src/resources/app-styles.css index dde9b03..50918f9 100644 --- a/Super.Human.Portal_Royale/src/resources/app-styles.css +++ b/Super.Human.Portal_Royale/src/resources/app-styles.css @@ -1,5 +1,6 @@ @namespace "http://www.w3.org/1999/xhtml"; @namespace j "library://ns.apache.org/royale/jewel"; +@namespace controlsSnackbarNomad "view.controls.snackbarNomadHelperUrl.*"; global { IStatesImpl: ClassReference("org.apache.royale.core.SimpleStatesImpl"); @@ -254,6 +255,12 @@ a:hover { zIndex: auto; } +controlsSnackbarNomad|SnackbarNomadHelperUrl { + IBeadModel: ClassReference("view.controls.snackbarNomadHelperUrl.beads.SnackbarNomadHelperUrlModel"); + IBeadController: ClassReference("org.apache.royale.jewel.beads.controllers.SnackbarController"); + IBeadView: ClassReference("view.controls.snackbarNomadHelperUrl.beads.SnackbarNomadHelperUrlView"); +} + .jewel.slider.noSliderInput input { visibility: hidden; margin: 0px !important;