LTI Launch Test- Student - dev1

Whenever a launch is triggered, the configuration parameters are applied, new nonce and timestamp values are obtained, and a new OAuth signature is calculated. The "Refresh" button does the same, without triggering a launch. Current support is for LTI 1.0/1.1 Adapted from Lance's implementation and customized for testing dashboards

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/hmac-sha1.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/enc-base64.js"></script>
<p><em>Remember to click on "Refresh" at the bottom of the form before launching!!</em>
</p>

<h2>LTI configuration parameters</h2>

<form id="ltiConfigurationForm" onsubmit="updateLtiLaunchForm(); return false;">
    <ul>http://jsfiddle.net/prakgarnly/sd20tL6b/56/#run
        <li>
            <label>Launch URL:
                <!-- <input id="launchUrl" value="" type="text" /> -->
                <select id="launchUrl" name="launchUrl">
                  <option value="https://master.dev.intellify.io/ltilaunch/">MDev</option>
                  <option value="https://hmh2.intellifylearning.com/ltilaunch/">HMH2</option>
                  <option value="https://dev1.intellifylearning.com/ltilaunch/">Dev1</option>
                  <option value="https://hmhprod1.intellifylearning.com/ltilaunch/">HMHProd1</option>
                </select>
            </label>
        </li>
        <li>
            <label>View ID:
                <!-- input id="viewId" value="" type="text" / -->
                <select id="viewId" name="viewId">
                  <option value="5661b62d0cf2c1c8405734a5">SRI Prod</option>
                  <option value="56c1481d0cf2d0dccad5dd42">SRI WC</option>
                  <option value="561dc1ba0cf2bffa8004ff4a">SPI Prod</option>
                  <option value="56b39afd0cf269f960a8f692">SPI WC</option>
                  <option value="561dc1310cf29cf10bd93079">R180U Prod</option>
                </select>            
            </label>
        </li>
        <li>
            <label>Key:
                <input id="key" value="" type="text" size="80" />
            </label>
        </li>
        <li>
            <label>Secret:
                <input id="secret" value="" type="text" size="80" />
            </label>
        </li>
    </ul>
    <button...

CSS

input:read-only {
    background-color: #D6D6D6;
}
em {
    background-color: #FFD666;
}
label.sri {
    background-color: #FFD666;
}
input#launchUrl {
    width: 90%
}
input{
    width: 60%;
}

JavaScript

(function () {
    window.onload = function () {
        
        // Local testing (Instructor Only Dashbaord)
        // spi student        
$('#launchUrl').val('https://dev1.intellifylearning.com/ltilaunch/');
$('#viewId').val('561dc1ba0cf2bffa8004ff4a');
$('#key').val('yScTs-BpQVaSg0PIlDlfzw');
$('#secret').val('22ab106d-52c7-418f-a35a-1b1adb3c43bc');
$('#custom_siteId').val('h900000031');
$('#custom_classId').val('1bu96flg6jj9ul1103967vhk_v8q9qq0');
$('#custom_studentId').val('oic7nalqmamjl8ghs7ctmsfu_v8q9qq0');
        
   updateLtiLaunchForm();
 };

    this.updateLtiLaunchForm = function () {
        var launchUrl = $('#launchUrl').val() + $('#viewId').val();
        var encodedSecret = encodeURIComponent($('#secret').val()) + '&';
        var $ltiLaunchForm = $('#ltiLaunchForm');

        $ltiLaunchForm.attr('action', launchUrl);
        $('#oauth_consumer_key').val($('#key').val());
        $('#oauth_timestamp').val(Math.floor(new Date().getTime() / 1000));
        $('#oauth_nonce').val(uniqid('', true));

        var fields = [];
        $('input[type="text"]', $ltiLaunchForm).not('[name="oauth_signature"]').not('[name="custom_param_1_label"]').each(function () {
            var input = $(this);
            fields.push(input.attr('name') + '=' + rawurlencode(input.val()));
        });
        $('select', $ltiLaunchForm).not('[name="oauth_signature"]').not('[name="custom_param_1_label"]').each(function () {
            var input = $(this);
            fields.push(input.attr('name') + '=' + rawurlencode(input.val()));
        });
        
        
        console.log(fields)

        var message = 'POST&' + encodeURIComponent(launchUrl) + '&' + rawurlencode(fields.sort().join('&'));

        console.log(message);
        
        var oauthSignature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(message, encodedSecret));
        $('#oauth_signature').val(oauthSignature);
        };

        this.rawurlencode = function (str) {
            str = (str +...