rauhryan
10/22/2011 - 12:10 AM

Boiler plate code to delete a record + row

Boiler plate code to delete a record + row

(function($){
    $.addAjaxItemDeleteHandler = function(options) {
        var defaults = {
                url: 'delete',
                data: function(id) { return { Id: id }; },
                deleteElementClass: 'item-delete',
                deleteElementIdAttribute: 'data-id',
                deleteElementDescriptionAttribute: 'data-description',
                deleteRowClass: 'item-row',
                deleteRowIdAttribute: 'data-id',
                confirmHandler: function(id, description) { return confirm('Are you sure you want to delete ' + description + '?'); },
                actionSuccess: function(data) { return true; },
                actionErrorMessage: function(data) { return 'An unknow error has occured.'; },
                responseHandler: function(id, description, data) { alert('Successfully deleted ' + description + '.'); },
                errorHandler: function(id, description, message) { alert('An error has occured deleting ' + description + ': ' + message); },
                communicationErrorMessage: 'We are unable to talk to the server at this time.'
            };
        
        options = $.extend(defaults, options);
        
        this('.' + options.deleteElementClass).click(function() { 
                var id = $(this).attr(options.deleteElementIdAttribute);
                var description = $(this).attr(options.deleteElementDescriptionAttribute);
                if (options.confirmHandler(id, description)) {
                    $.post(options.url, options.data(id), function(data) { 
                        if (options.actionSuccess(data))
                        $("." + options.deleteRowClass + "[" + options.deleteRowIdAttribute + "='" + id + "']").remove();
                        else options.errorHandler(id, description, options.actionErrorMessage(data));
                    }).error(function() { options.errorHandler(id, description, options.communicationErrorMessage) });
                }
                return false;
            });
        
        return this;
    };
})(jQuery);