artirix/browsercms

View on GitHub
app/assets/javascripts/cms/ajax.js

Summary

Maintainability
B
4 hrs
Test Coverage
//= require 'cms/core_library'

// CMS library for invoking ajax functions.
// A layer on top of jQuery .ajax that adds some Rails and CMS logic
jQuery(function ($) {
    $.cms_ajax = {

        // Sets the message Accepts to javascript.
        // Pass to beforeSend: when calling AJAX.
        asJS:function () {
            return function (xhr) {
                xhr.setRequestHeader('X-CSRF-Token', $.cms.csrfToken());
                xhr.setRequestHeader("Accept", "text/javascript, */*, q=0.1");
            }
        },
        asJSON:function () {
            return function (xhr) {
                xhr.setRequestHeader('X-CSRF-Token', $.cms.csrfToken());
                xhr.setRequestHeader("Accept", "application/json, */*, q=0.1");
            }
        },
        // Invoke a Rails aware (w/ CSRF token) PUT request.
        // @param [Hash] message A json message without the type.
        // See http://api.jquery.com/jQuery.ajax/ for acceptable format.
        put:function (message) {
            message['type'] = 'POST';
            message['data'] = message['data'] || {}
            message['data']['_method'] = 'PUT';

            $.ajax(message);

        },
        // Invoke a Rails aware (w/ CSRF token) DELETE request.
        // @param [Hash] message A json message without the type.
        // See http://api.jquery.com/jQuery.ajax/ for acceptable format.
        //      ex.
        //      $.cms_ajax.delete({
        //          url:'/event/1',
        //          success:function (result) {
        //             console.log("Got back " + result);
        //          }
        //      });
        //
        delete:function (message) {
            message['type'] = 'POST';
            message['data'] = message['data'] || {}
            message['data']['_method'] = 'DELETE';
            $.ajax(message);

        }
    };

    // Defaults for AJAX requests
    $.ajaxSetup({
        beforeSend: $.cms_ajax.asJSON()
    });
    $(document).ajaxError(function (x, status, error) {
        alert("A " + x.status + " error occurred: " + error);
    });
});