Learning Journal In Rise

Dec 05, 2018


Firstly, Articulate recently implemented a small update to Rise. As a result, all new exports from Rise will need to include the most recent version of LearningJournal.js which is found at the usual link.

Secondly, at any time Articulate could update their code and bring a breaking change to the Learning Journal. Over a year ago, I shared this functionality freely with the community and the code comes with no warranty or support either implied or expressed. If at any time you want or need to remove the Learning Journal from your modules, simple remove any STATEMENT-NOTE entries that refer to the Learning Journal.

* * * *


I built a cool Learning Journal feature for Rise that has been very well-received. I thought I'd share it in case anyone wanted to a. use it or b. improve on it.


The Learning Journal allows the learner to enter text responses to journal prompts throughout a Rise course. At the end of the course, the learner can print their learning journal of all their responses. The responses are saved to the browser so that they persist on future visits to the Rise course.


EDIT May 2019: At the request of a member of the forum, I created a HOW-TO video below that shows each step of the HOW-TO document in action.


Example Rise Course

HOW-TO Document

HOW-TO Video


Learningjournal.js file (right-click and save)


Learningjournal.css file (right-click and save)

Project github site

I would love any feedback and help to improve the functionality and code.

Mike Amelang

281 Replies
John Cooper

We have taken a slightly different approach to this problem, choosing to incorporate 'note-taking' Storyline blocks at various points throughout our RISE courses. The Storyline blocks capture the learner 'notes' and, like Mike's excellent solution, we store them in the browser's local storage.

At the end of the course we have a final Storyline block that provides a button executing a JavaScript routine to retrieve the notes from local storage, open a pre-formatted pdf form and insert the notes into this 'journal' or 'course handout'. The learner is then presented with the file for download.


This works well but, of course, since the variables are stored in 'local storage' the learner will lose their output if they pause the course and clear the browser cache, or try and resume using a different browser, or a different device.

Like Becca, we would also LOVE Articulate to provide just a small amount of storage we could access on the RISE server so we could store variables there.

Teresa Vanderpost

I am not sure if I ever shared this.  But I use Storyline blocks in RISE as well with some javascript code for the learner to print their notes. If this helps anyone here is an example.  I don't know javascript, I just taught myself via google how to do bullets and quotes.

John Cooper

Hi Teresa - I love your demo. I like the way you retrieve the variables, and construct a page view of the notes to Print or Download. Pretty impressive HTML and Javascript coding I would say.

Forgive me if I'm missing something, but I'm presuming this works just at one point in the RISE course? Or are you storing the three TextEntry variables somewhere?

This is the difficulty. Often you want to capture notes at different points in the RISE course but hold them all to the end of the course when the Learning Journal is printed, Hence Mike's use of local browser storage in his solution.

There is another option I haven't tried, but I'm sure others have, and that would be to write the variables out to an external file - like a Googledocs file - and then retrieve them from that file when you need them - or even output them to the LRS via an XAPi call and retrieve them from the LRS.... Anyone know if that is possible??

Teresa Vanderpost

You are right, this is one reflection block of perhaps three or four reflections I ask the learners to complete throughout the entire RISE course.  So they do print each set of reflections separately.  I do have a storyline module somewhere, which I think many have done, where I have several note sections throughout the module, and then one print option at the end of the module to grab all of the notes.  

Thanks for the comments re: the javascript, I just kept googling until I got it to do what I wanted LOL!

Catherine  Doubell

This is absolutely fantastic and finding it so helpful! (Hopefully) quick question: I am creating a learning journal with several prompts and then importing into our LMS as a SCORM package - is there a way to setup the completion settings so that all the individual responses to prompts are captured for site admins to see? Thanks!

John Cooper

Hi Catherine

There are actually three different approaches in this thread. There's Mike's original approach in which you create Blocks in RISE of type "Note" and then his code extracts these notes and stores them in local browser storage ready for printing at the end of the course

Then there's Teresa's example where she uses Storyline blocks and JavaScript to capture the notes within the block and then constructs a screen with the notes on for printing - but this approach doesn't store the notes beyond the Storyline block in which they are captured.

And then there's my approach which again uses Storyline blocks to capture notes at different points in the RISE course, then stores each note to local browser storage ready for a final Storyline block to read all the notes from the local storage and output them to a pdf for downloading and/or printing at the end of the course

I've never used Mike's solution so I don't know if anything is sent to the LMS if published to SCORM. Mine doesn't sent anything specific to the LMS, but I have implemented a solution where the pdf, including the learner's responses, was emailed to the course tutor.

Since my code retrieves all notes out of local storage at the end of the course, the notes are sitting there as JavaScript text variables and could easily be written to an LRS using xAPI - or even to some form of external file like a Google docs file - but I have never done that.

Emma Pawson

Hi all, I've been using this for some time now but I've just tried to publish a new course using the same CSS and JS files it's not working. The index.html will open and function correctly in my local folder structure but as soon as I upload it to Amazon S3 or zip it up and upload it to SCORM cloud it stops working, any tips/ideas?

Note: I went back and republished an old Rise course and it's behaving the same so I suspect its a Rise update that's caused this but I don't know why/how to fix it.

MajorClarity by Paper

Emma, have you found a solution to this problem yet? I'm having the exact same problem. 

We've created a number of courses using these JS and CSS files and they're worked well. But when I went to publish a new course using them today it didn't work. Index.html opens the course whether it's stored locally or on google cloud, but the journal prompts don't show up, you only get the "note" blocks.

Anyone else out there having this problem?

Emma Pawson

Hi both, no solution, unfortunately, Articulate wouldn't provide support as it's custom JS and suggested I try publishing to SCORM 2004 but I actually moved away from this and used a different solution, see this heroes page https://community.articulate.com/discussions/articulate-storyline/creating-downloadable-pdf-files-in-storyline-an-update-on-earlier-methods

John Cooper

Hi Emma

I'm glad the post on "creating downloadable pdf files in Storyline" was useful. The JavaScript library pdf-lib is pretty awesome - using a pre-formatted pdf template as the learning journal takes a lot of the hard work out of it.

As this thread is specific to RISE, I should just point out that, although the solution I proposed in the above article gives you the ability to create a single Storyline block which can then be built into your RISE course to capture and download notes at that point in your course, there is still the problem of capturing notes for your journal at multiple points in your RISE course and 'holding' them until the end of the course. As you know, RISE has no variables, and variables used in a Storyline block are lost as soon as you exit that block. This is where Mike's original solution was so good.

We have been able to solve this for one of our clients using "local" browser storage (similar to the 'cookies' websites use) - there is a discussion on how this works in the demo below:


I think there may be another solution where you write the first notes to create a pdf file and then pick the same file up and append more notes to it. This has only just occurred to me so I have no idea whether that would be possible. Anyone tried this using pdf-lib??

Nicola Fern

Hi Manon

You can do this with an easy CSS edit:

.journalprintbuttonaction {display: none!important;}

You will also need to alter the Javascript to assign this new class to the relevant button...the code should look like this:

var button2 = document.createElement("div");

button2.className = "journalprintbuttonaction";
button2.innerText = PrintTakeActionsOnly_Text;
button2.addEventListener("click", function() { printEntries(true)} );  container.appendChild(button2);

In my file, it's on line 429 - the section is commented as // Render buttons to DOM