Closed thomasturrell closed 2 years ago
Frameset and returnURL used together could (would?) create a LMS within a LMS (assuming that the returnURL was the LMS).
I think this assumption is the fundamental flaw. The LMS (or cmi5 launching system) is what determines how the launchMethod values will be handled and the returnURL
value, so it needs to take care to make sure it is providing returnURL values such that they make sense in the context of how it implements those launchMethods. IOW if it knows that AnyWindow will be via frameset then it needs to provide a returnURL that makes sense within the context of that frameset. (Both the Rustici Engine implementation and the Catapult implementation work in that manner, and I have to assume the RISC Inc. implementation does as well.)
Perhaps it would be best practice for the LMS not to set the returnURL if launches the course in a Frameset or New Window.
This is actually counter to the accepted best practice (see 2 here http://aicc.github.io/CMI-5_Spec_Current/best_practices/) that a returnURL should always be provided. And generally it is recommended that AUs consider the issues around being in a standalone window (like having to be popped up, particularly on mobile devices) and only specify OwnWindow
when it is absolutely necessary.
In our LMS, we always launch content in the window in which the LMS was running. The LMS goes away and the AU takes its place. The returnURL allows the AU to return to the LMS by simply redirecting its window to the returnURL.
In our LMS, we always launch content in the window in which the LMS was running. The LMS goes away and the AU takes its place. The returnURL allows the AU to return to the LMS by simply redirecting its window to the returnURL.
This sounds like a sensible approach. It makes me question the need for any other launch methods.
If you do it this way, you do not need to pay any attention to the launchMethod, and you eliminate pop-up windows for content launching.
I'd have to check with our support staff, but I suspect the majority of our customers (LMSs) are launching into a frameset and really don't want their window to not be present. Either way I suspect it is a moot point at this juncture since we have both values, so either change becomes a major version bump, and I suspect most systems wouldn't want to be required to always replace the existing window. In some cases (think mobile app launch) replacing the current window isn't even possible because the launch itself may not be happening within the browser.
I agree it would have to be a major version change and that's not the working groups focus right now.
In some cases (think mobile app launch) replacing the current window isn't even possible because the launch itself may not be happening within the browser.
Do any of the existing launch method make sense for a native app?
So the best practice for an LMS that uses frameset for a launch method would be to set the return URL to a page that allows itself to be viewed in a frameset but doesn't use a frameset itself or have the possibility allowing the user to navigate to a page that uses a frameset. This would prohibit the LMS for using the return URL for returning the user to the LMS because it contains a page that uses framesets and the users in already in the LMS.
In the next version I would definitely vote for dropping launchMethod on the grounds that no LMS should be using frameset or new window.
(Review per June 3, 2022 meeting)
This feature is widely used and would be difficult to deprecate
If the launchMethod is
AnyWindow
and the LMS uses Frameset or New Window I believe it would be strange for the AU to use areturnURL
.Frameset and returnURL used together could (would?) create a LMS within a LMS (assuming that the returnURL was the LMS).
New Window and returnURL used together would endlessly spawn new LMS windows/tabs. New Window has the additional problem of being potentially blocked by pop up blockers.
Perhaps it would be best practice for the LMS not to set the returnURL if launches the course in a Frameset or New Window.
Or maybe best practice should be don't use Frameset or New Window. Perhaps best practice is that the LMS redirects the current window to the AU?