%PDF- %PDF-
Direktori : /var/www/html/higroup/wp-content/plugins/user-registration/assets/js/admin/ |
Current File : /var/www/html/higroup/wp-content/plugins/user-registration/assets/js/admin/backbone-modal.js |
/*global jQuery, Backbone, _ */ (function ($, Backbone, _) { "use strict"; /** * UserRegistration Backbone Modal plugin * * @param {object} options */ $.fn.URBackboneModal = function (options) { return this.each(function () { new $.URBackboneModal($(this), options); }); }; /** * Initialize the Backbone Modal * * @param {object} element [description] * @param {object} options [description] */ $.URBackboneModal = function (element, options) { // Set settings var settings = $.extend({}, $.URBackboneModal.defaultOptions, options); if (settings.template) { new $.URBackboneModal.View({ target: settings.template, string: settings.variable, }); } }; /** * Set default options * * @type {object} */ $.URBackboneModal.defaultOptions = { template: "", variable: {}, }; /** * Create the Backbone Modal * * @return {null} */ $.URBackboneModal.View = Backbone.View.extend({ tagName: "div", id: "ur-backbone-modal-dialog", _target: undefined, _string: undefined, events: { "click .modal-close": "closeButton", "click #btn-ok": "addButton", "touchstart #btn-ok": "addButton", keydown: "keyboardActions", }, resizeContent: function () { var $content = $(".ur-backbone-modal-content").find("article"); var max_h = $(window).height() * 0.75; $content.css({ "max-height": max_h + "px", }); }, initialize: function (data) { var view = this; this._target = data.target; this._string = data.string; _.bindAll(this, "render"); this.render(); $(window).resize(function () { view.resizeContent(); }); }, render: function () { var template = wp.template(this._target); this.$el.attr("tabindex", "0").append(template(this._string)); $(document.body) .css({ overflow: "hidden", }) .append(this.$el); this.resizeContent(); this.$el.trigger("focus"); $(document.body).trigger("init_tooltips"); $(document.body).trigger("ur_backbone_modal_loaded", this._target); }, closeButton: function (e) { e.preventDefault(); $(document.body).trigger( "ur_backbone_modal_before_remove", this._target ); this.undelegateEvents(); $(document).off("focusin"); $(document.body).css({ overflow: "auto", }); this.remove(); $(document.body).trigger("ur_backbone_modal_removed", this._target); }, addButton: function (e) { $(document.body).trigger("ur_backbone_modal_response", [ this._target, this.getFormData(), ]); this.closeButton(e); }, getFormData: function () { var data = {}; $(document.body).trigger( "ur_backbone_modal_before_update", this._target ); $.each( $("form", this.$el).serializeArray(), function (index, item) { if (item.name.indexOf("[]") !== -1) { item.name = item.name.replace("[]", ""); data[item.name] = $.makeArray(data[item.name]); data[item.name].push(item.value); } else { data[item.name] = item.value; } } ); return data; }, keyboardActions: function (e) { var button = e.keyCode || e.which; // Enter key if ( 13 === button && !( e.target.tagName && (e.target.tagName.toLowerCase() === "input" || e.target.tagName.toLowerCase() === "textarea") ) ) { this.addButton(e); } // ESC key if (27 === button) { this.closeButton(e); } }, }); })(jQuery, Backbone, _);