/* Name: AUM RatingManager Widget Author: Adriano Version: 1.0 Description: Generates rating and feedback forms Requires: jQuery, jQuery UI, Twitter Bootstrap, Mustache */ if (typeof console.log == 'function') { if (typeof jQuery == 'undefined') { console.log('aum.menubar: jQuery is required'); } if (typeof $.fn.dropdown == 'undefined') { console.log('aum.menubar: Twitter Bootstrap is required'); } if (typeof Mustache == 'undefined') { console.log('aum.menubar: Mustache is required'); } } (function($){ "use strict" $.widget('aum.ratingManager', { // Default options options: { resourceType : null, resourceId : null, ratingRequestId : null, save : function(){}, }, save: function(){ }, // Initialize _create: function() { var rating = this; if(this.options.resourceType == null || this.options.resourceId == null || this.options.ratingRequestId == null){ $.error("resourceType, resourceID and ratingRequestId are requierd"); return; } this._load(); this.element .on("focus", ".rating-feedback", function(e){ e.preventDefault(); $(this).addClass("big"); rating.element.find(".ratings").removeClass("hide"); rating.element.find(".rating-submit").removeClass("hide"); rating.element.find(".rating-feedback-close").removeClass("hide"); }) .on("click", ".rating-feedback-close", function(e){ e.preventDefault(); $(this).addClass("hide"); rating.element.find(".rating-feedback").removeClass("big"); rating.element.find(".ratings").addClass("hide"); rating.element.find(".rating-submit").addClass("hide"); }) .on("click", ".rating-submit", function(e){ e.preventDefault(); rating._submitData(rating.element); rating.element.find(".rating-feedback-close").click(); }); }, // Handle option changes after initialization _setOption: function(key, value) { $.Widget.prototype._setOption.apply(this, arguments); }, // Load menu _load: function() { var rating = this; $.when() .then(function(){ rating._render(rating.element); }) .fail(function(){ rating._render(rating.element); }); }, _submitData: function(elem) { var rating = this; $.ajax({ url: "http://elipsa-it.com/natarajaapps/testfeedback/request.php", data: $(elem).find(".rating-form").serialize(), type: "POST", dataType: "script", success: function(response){ console.log(response); rating._updateUI(elem, response); } }); }, _updateUI: function(elem, response){ var rating = this; $(elem) /* .find(".rating-feedback").removeClass("big").prop("disabled", true).end() */ .find(".rating-comments").append(Mustache.render(rating._tmplComment, response)); }, // Get current user data _getUser: function() { return null;//todo }, // Render mustache templates for products and user menu _render: function(elem) { elem.html(Mustache.render(this._tmpl, {})); }, // Main menu wrapper _tmpl: [ '
', ].join(''), _tmplComment: [ ' ' ].join("") }); })(jQuery);