AICC / CMI-5_Spec_Current

cmi5
http://adlnet.gov
Apache License 2.0
181 stars 91 forks source link

What is the best practice for returnURL and launchMethod? #709

Closed thomasturrell closed 2 years ago

thomasturrell commented 3 years ago

If the launchMethod is AnyWindow and the LMS uses Frameset or New Window I believe it would be strange for the AU to use a returnURL.

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?

brianjmiller commented 3 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.

cawerkenthin commented 3 years ago

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.

thomasturrell commented 3 years ago

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.

cawerkenthin commented 3 years ago

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.

brianjmiller commented 3 years ago

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.

thomasturrell commented 3 years ago

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.

MrBillMcDonald commented 2 years ago

(Review per June 3, 2022 meeting)

This feature is widely used and would be difficult to deprecate