lfzawacki/musical-artifacts

View on GitHub
app/views/application/comments_script.html.erb

Summary

Maintainability
Test Coverage
<%- url = @setting.juvia_server_url %>
<%- key = @setting.juvia_site_key %>
<%- order = @setting.juvia_comment_order %>
<%- css = @setting.juvia_include_css %>

<script type="text/javascript" class="juvia">
(function() {
    var options = {
        container    : '#comments',
        site_key     : '<%= key %>',
        topic_key    : location.pathname,
        topic_url    : location.href,
        topic_title  : document.title || location.href,
        include_base : !window.Juvia,
        include_css  : <%= css %>,
        comment_order: '<%= order %>'
    };

    function makeQueryString(options) {
        var key, params = [];
        for (key in options) {
            params.push(
                encodeURIComponent(key) +
                '=' +
                encodeURIComponent(options[key]));
        }
        return params.join('&');
    }

    function makeApiUrl(options) {
        // Makes sure that each call generates a unique URL, otherwise
        // the browser may not actually perform the request.
        if (!('_juviaRequestCounter' in window)) {
            window._juviaRequestCounter = 0;
        }

        var result =
            '<%= url %>/api/show_topic.js' +
            '?_c=' + window._juviaRequestCounter +
            '&' + makeQueryString(options);
        window._juviaRequestCounter++;
        return result;
    }

    var s       = document.createElement('script');
    s.async     = true;
    s.type      = 'text/javascript';
    s.className = 'juvia';
    s.src       = makeApiUrl(options);
    (document.getElementsByTagName('head')[0] ||
     document.getElementsByTagName('body')[0]).appendChild(s);
})();
</script>