Thursday, July 16, 2009

Remove the 'finish' button from quizmaker quiz endpage

*Updated*

There is a silly problem with Articulate quizzes in that they always have to have a finish button, and that button can ONLY close a window, or direct to another URL. Not very helpful if we want them to be in a linear course is it?

Anyways, I found a flash exploit to hack away the button, enjoy:

Solution Summary:

Because Articulate developers did not use "_lockroot" by inserting a custom swf on an end page, we can write custom code to turn the finish button invisible.

Solution:

1. Create a new flash movie
2. In the actions panel insert the following code:

_root.g_mcFrame.mcFinish.swapDepths(_root.getNextHighestDepth());
_root.g_mcFrame.mcFinish.removeMovieClip();


3. Publish

4. Using the slide view on your first slide in Quizmaker, choose to insert a swf, browse for your custom code and insert.

5. Publish your quiz.

Note: the object (_root.g_mcFrame.mcFinish._visible) was found by making a flash movie that simply loads a quizmaker quiz.swf to the root, then I used the flash debug options to list all objects.

Hope this helps, and also inspires some more exploration of the endless possibilities of this exploit!

7 comments:

  1. Hey JD,

    I love the blog, and dig what you have done here. I had always envisioned by blog being like this.

    One tip though...you will be much happier on Wordpress than Blogger :-) I made the switch last year and couldn't be happier with Wordpress. Blogger seems stale to me.

    ReplyDelete
  2. Great fix for a common issue. Thanks for sharing it with us.

    ReplyDelete
  3. Great tips for Quizmaker. Can you answer the following question, which I have posted in Articulate forums and received no reply?

    I would like to be able to insert a Flash object that generates a score into a Quizmaker slide, such as a custom drag and drop or something else. I would then like to be able to communicate this score to Quizmaker and have it add to the scores of the other Quizmaker questions, which are then tranmitted to an LMS through the standard Articulate SCORM files.

    Can this be done?

    ReplyDelete
  4. Do I think that can be done? Yes.

    Have I tried? Yes.

    Can I get it to work yet? Noooooo.

    I've had a lot of success replacing objects in Quizmaker, and overwriting functionality with my own, but trying to squuuuueeeze my own question in has been very difficult to do.

    For example, I recently worked on a quiz that involves a form fill in the blank question, with multiple fill in the blanks. Luckily this quiz did not need no be graded, no problem, get a blank slide and put my own flash fill in the blank form exercise in the middle of other questions.

    While doing this I toyed around with the grading, and although I could get some interesting things to happen, I just couldn't get that working :(

    My Tip to you?

    In the lms.js files that get published, there is a function called lms_DoFSCommand, what i've been considering doing is inserting my own javascript in there that basically gets called by my inserted question first to set the score of that question, then when the quiz calls it, I'd write some code to combine the scores...this would report the proper score to the LMS, however it would not show the proper score on the endpages. You could just have a generic Thank You endpage anyways and hide the score.

    You can always reach me by email: officeofirrelevance@gmail.com, but i'm horribly busy and terrible at replying and for that I apologize!

    ReplyDelete
  5. Thank you so much for your reply. I have also requested that Articulate add the ability to generate and score custom Flash interactions to Quizmaker through an API. This would make Quizmaker incredibly powerful IMHO.

    Just discovered your blog and I greatly appreciate it.

    ReplyDelete
  6. Thanks for this! Is there a way to replace "Finish" with "Next Slide"?

    ReplyDelete
  7. Sure Travis, I do this all the time. In the language options for the quiz template, look for finish and replace it with your custom text.

    ReplyDelete