Adding a long text entry box to Rise / Storyline
Oct 29, 2020
I am using Rise with Storyline being used to extend interaction where they are lacking. I require learners to enter long, (mostly reflective) journal-type entries into text boxes. These are typically 300-400 words. It is highly desirable to have them put in an entry before I release more content.
Rise has no such feature, and I've been using the embed activity type and relying on third-party forms to host a textarea where users can type in their content. This is fraught with problems: What if the form host goes offline / shuts down their service (yep, happened, more than once). What if they change their TOS and suddenly there's ads being shown (also happened). What if they do a product redesign and your content no longer fits (yes, happened as well). Or, am I happy to have a public-facing github repo I can serve from that anybody can just access from where-ever? Here's my favourite: Client has corporate desktops and their [forced] browser is still IE11 - but third party form host has dropped support for it. Ugh!
All this just to store a text box?
I've been trying to solve this by using Storyline 360, but it's not quite up to scratch either, because of scrolling and keyboard interaction problems in that product, and mobile/tablet support. The cool bit is that you can make the continue button only show up when the course is completed, such as saving the interaction. But there are lots of downsides. For instance, did you know a text entry box doesn't (won't) show a scrollbar, even if it needs one? And interactions such as using the scroll wheel or cursor keys won't cause the text entry box to scroll? The tablet / mobile experience is awful because of the need to click to open the interaction, then the text size scales relative to the stage so it can be all but unreadable (essay writing on a phone isn't something I have to solve, it's mostly tablets and desktops).
If I take out the scrolling panel and just have a text entry then it removes the problematic overflow issues, but there is no indication whatsoever that the panel is scrollable. Mouse wheel works; cursor keys work; tablet/mobile still is as unfriendly as ever; there's never a scrollbar even if it needs one, and my learners are the type who need such visual cues.
Thinking more outside the box, I've been tinkering with the idea of embedding a plain old textarea inside an iframe which then gets copied into the final scorm package. This has its up- and down-sides as well. An upside of this is that the textarea works everywhere, is easily responsive, text is readable and with some trickery the text can be persisted, and can inherit the background colour / font styling etc of the block it is hosted in, or grow in height to prevent scrollbars.
The big down-side is that to insert it you have to use an iframe, which has to be hosted on the internet somewhere at design time (I use github pages) but substituted with a local copy after publishing. It won't function properly at design time entirely as intended because of cross-site scripting protection in browsers. The process for patching in the content after its published is also pretty tricky if you aren't used to coding.
The biggest downside to this is that the Continue button is immediately available because the block isn't completable. My example above uses the same system that Storyline does when communicating completion data between the iframe and host, effectively this (minus the xapi verbs, etc):
var message = {
windowName: parent.document.querySelector("iframe[src='"+location.href+"']").closest('[data-block-id').dataset.blockId,
payload: {
result: {
completion: true,
score: { scaled: 1 },
success: true
}
},
type: "course:update"
}
window.parent.postMessage(message, '*');
but the problem remains that the embed block isn't completable in the first place and as such the player won't lock the Continue button (I'm making some in-roads into modifying the Runtime object as I initialise my textarea and triggering a reflow on the player to switch it back to a 'must-complete-above' button, but this is getting in to ridiculously unsupported territory now).
All this would be moot if there were plans to just support plain text entry as an interaction, or if Storyline showed scrollbars when it needed to and didn't scale the fonts relative to the stage, or if the embed interaction had conditional completion flags (wouldn't it be great to complete after you watched a Vimeo, for example? Their player supports the messaging events, but Rise doesn't listen to them).
Has anybody got a better way to enter long text that is consistent?
12 Replies
I've been needing a simple interaction similar to this, where I just want a textarea for the learner to type in their response. Click Continue, and then I can show them the correct answer for their own comparison. Sounds like a similar goal, only I don't need to save the textarea contents.
... some time later, I find myself on another project and needing to revisit the same again. I've attached a simple Storyline file which does some of what I need. To get to this basic interaction I've learned a lot along the way. I also want to show the user when they had already stored a value, as in my Rise course users move forward or backwards in the navigation quite a bit to pick up details here and there - so when they went back to previous pages and discovered that their answers didn't appear to have saved after all (and being text entries, it's a big deal when what you spent ages typing in suddenly isn't there anymore), things got more complicated.
The whole experience for just storing a text entry is a real problem for me. The need to be able to enter text and have it store is something I dearly miss in Rise; Storyline can do it (even with its silly scrolling bugs and at-times terrible user experience).
I hadn't done a lot of Storyline interactions and embedding them into Rise, so the discovery that Rise doesn't care about Storyline's outputted user data (which page they are on, what states slides are in) is a real downer for me. It's the exact stuff I need to be able to track and report on.
Rise just has this gaping hole that prevents any interaction data about the Storyline embed from ever being stored or persisted. It also seems that for every thousand "wouldn't it be good if Rise could ..." type request or comment only one or two slip through as new features every year. Rise has so much untapped potential.
If Rise persisted the storyline data out of the box, all this would magically become easy and I could throw away my complex javascript altogether.
Great explanations Tim.
My initial reaction was to say wouldn't it be better if Rise implemented a text entry tool that sent the data to the lMS and resumed (even better if it would allow the blocks to communicate with each other).
However, I also get what you mean with the storyline blocks if they could resume then it would be so useful for other interactions built using Storyline.
I think there is an argument for Rise to have variables, other tools such as Adapt, Evolve, Gomo have these would be even better if the variables could be easily passed between storyline and Rise. I love the tool for its simplicity but often there is a need for more.
I have created a solution for this.
The attached story-file, when exported and added as a block does a number of things:
Note that number 3 works in SCORM2004, as the codes are rather specific. I am sure the commands can be amended to fit other LMS-standards.
Thanks for sharing your work, Snorre!
Hi Snorre,
Can you please explain your point 3? Where does it save as user comments?
Even just adding a way for learners to type their own reflections into a box before the continue button appears would be wonderful (without passing the text to the LMS). A basic text entry box. Please?
I have again tried to attack this problem in a few different ways. I need to:
I tried taking Snorre's example (thanks!) and modifying it to work with whichever SCORM version you publish Rise to, but discovered there really isn't anywhere to store the responses - in Scorm 1.2 the user comment field is append only. So I implemented a bit of detection to see if SCORM 2004 is present and if not, to use sessionStorage (which persists in the browser until the user closes the tab). Not a fantastic solution, and leaves me wishing for something native in Rise. It *might* be compatible with AICC, but I have no harness to test it in.
I've attached two storyline files.
I had thought about implementing some other features but have run out of time/energy this round:
I hope this helps someone out in the future. I also hope that Articulate officially implement a Text question type to save these flimsy solutions.
Agree. Hope Articulate develops this in a future release of Articulate Rise. Having learners reflect on questions or statements and enter this into the course they are completing is great for knowledge retention.
I'd love to try out some of the workarounds that were shared, but the links seem to have expired. Snorre or Tim, would you be willing to reshare?
Since writing this post, I've tried several ideas out.
At the end of this thread - https://community.articulate.com/discussions/rise-360/learner-notes-input-boxes?page=3 - there's a demo of a note-taking feature I to Rise added using a storyline course.
I also have a demo course for playing with text entry load/store/pdf: https://360.articulate.com/review/content/bf97c5a3-b2d2-4cc1-9130-a998905da417/review ( from https://community.articulate.com/discussions/articulate-storyline/rise-storyline-reflections-journaling-issues)
And another crack at it in this thread - https://community.articulate.com/discussions/rise-360/adding-a-text-box-for-user-input-in-rise360
I think the latest storyline file containing the text entry and all the other bits would be the one in my repository (https://github.com/frumbert/local_blobstorebackend) - the storyline file is in the assets folder. This is a work in progress.
Thanks, Tim! This is really helpful. I appreciate you sharing it.