From f13a3f2e1b30b79f6f051d6620ec015e56b51a43 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Wed, 17 May 2017 15:58:56 -0400 Subject: [PATCH] added more rt.gnu.org weblabels --- rt.gnu.org/CURRENT/files/etc/jquery.modal.js | 185 +++++++++++++++++++ rt.gnu.org/CURRENT/index.html | 45 +++++ 2 files changed, 230 insertions(+) create mode 100644 rt.gnu.org/CURRENT/files/etc/jquery.modal.js diff --git a/rt.gnu.org/CURRENT/files/etc/jquery.modal.js b/rt.gnu.org/CURRENT/files/etc/jquery.modal.js new file mode 100644 index 00000000..5ceffdc4 --- /dev/null +++ b/rt.gnu.org/CURRENT/files/etc/jquery.modal.js @@ -0,0 +1,185 @@ +/* + A simple jQuery modal (http://github.com/kylefox/jquery-modal) + Version 0.5.2 +*/ +(function($) { + + var current = null; + + $.modal = function(el, options) { + $.modal.close(); // Close any open modals. + var remove, target; + this.$body = $('body'); + this.options = $.extend({}, $.modal.defaults, options); + if (el.is('a')) { + target = el.attr('href'); + //Select element by id from href + if (/^#/.test(target)) { + this.$elm = $(target); + if (this.$elm.length !== 1) return null; + this.open(); + //AJAX + } else { + this.$elm = $('
'); + this.$body.append(this.$elm); + remove = function(event, modal) { modal.elm.remove(); }; + this.showSpinner(); + el.trigger($.modal.AJAX_SEND); + $.get(target).done(function(html) { + if (!current) return; + el.trigger($.modal.AJAX_SUCCESS); + current.$elm.empty().append(html).on($.modal.CLOSE, remove); + current.hideSpinner(); + current.open(); + el.trigger($.modal.AJAX_COMPLETE); + }).fail(function() { + el.trigger($.modal.AJAX_FAIL); + current.hideSpinner(); + el.trigger($.modal.AJAX_COMPLETE); + }); + } + } else { + this.$elm = el; + this.open(); + } + }; + + $.modal.prototype = { + constructor: $.modal, + + open: function() { + this.block(); + this.show(); + if (this.options.escapeClose) { + $(document).on('keydown.modal', function(event) { + if (event.which == 27) $.modal.close(); + }); + } + if (this.options.clickClose) this.blocker.click($.modal.close); + }, + + close: function() { + this.unblock(); + this.hide(); + $(document).off('keydown.modal'); + }, + + block: function() { + this.$elm.trigger($.modal.BEFORE_BLOCK, [this._ctx()]); + this.blocker = $('
').css({ + top: 0, right: 0, bottom: 0, left: 0, + width: "100%", height: "100%", + position: "fixed", + zIndex: this.options.zIndex, + background: this.options.overlay, + opacity: this.options.opacity + }); + this.$body.append(this.blocker); + this.$elm.trigger($.modal.BLOCK, [this._ctx()]); + }, + + unblock: function() { + this.blocker.remove(); + }, + + show: function() { + this.$elm.trigger($.modal.BEFORE_OPEN, [this._ctx()]); + if (this.options.showClose) { + this.closeButton = $('' + this.options.closeText + ''); + this.$elm.append(this.closeButton); + } + this.$elm.addClass(this.options.modalClass + ' current'); + this.center(); + this.$elm.show().trigger($.modal.OPEN, [this._ctx()]); + }, + + hide: function() { + this.$elm.trigger($.modal.BEFORE_CLOSE, [this._ctx()]); + if (this.closeButton) this.closeButton.remove(); + this.$elm.removeClass('current').hide(); + this.$elm.trigger($.modal.CLOSE, [this._ctx()]); + }, + + showSpinner: function() { + if (!this.options.showSpinner) return; + this.spinner = this.spinner || $('
') + .append(this.options.spinnerHtml); + this.$body.append(this.spinner); + this.spinner.show(); + }, + + hideSpinner: function() { + if (this.spinner) this.spinner.remove(); + }, + + center: function() { + this.$elm.css({ + position: 'fixed', + top: "50%", + left: "50%", + marginTop: - (this.$elm.outerHeight() / 2), + marginLeft: - (this.$elm.outerWidth() / 2), + zIndex: this.options.zIndex + 1 + }); + }, + + //Return context for custom events + _ctx: function() { + return { elm: this.$elm, blocker: this.blocker, options: this.options }; + } + }; + + //resize is alias for center for now + $.modal.prototype.resize = $.modal.prototype.center; + + $.modal.close = function(event) { + if (!current) return; + if (event) event.preventDefault(); + current.close(); + current = null; + }; + + $.modal.resize = function() { + if (!current) return; + current.resize(); + }; + + $.modal.defaults = { + overlay: "#000", + opacity: 0.75, + zIndex: 1, + escapeClose: true, + clickClose: true, + closeText: 'Close', + modalClass: "modal", + spinnerHtml: null, + showSpinner: true, + showClose: true + }; + + // Event constants + $.modal.BEFORE_BLOCK = 'modal:before-block'; + $.modal.BLOCK = 'modal:block'; + $.modal.BEFORE_OPEN = 'modal:before-open'; + $.modal.OPEN = 'modal:open'; + $.modal.BEFORE_CLOSE = 'modal:before-close'; + $.modal.CLOSE = 'modal:close'; + $.modal.AJAX_SEND = 'modal:ajax:send'; + $.modal.AJAX_SUCCESS = 'modal:ajax:success'; + $.modal.AJAX_FAIL = 'modal:ajax:fail'; + $.modal.AJAX_COMPLETE = 'modal:ajax:complete'; + + $.fn.modal = function(options){ + if (this.length === 1) { + current = new $.modal(this, options); + } + return this; + }; + + // Automatically bind links with rel="modal:close" to, well, close the modal. + $(document).on('click', 'a[rel="modal:close"]', $.modal.close); + $(document).on('click', 'a[rel="modal:open"]', function(event) { + event.preventDefault(); + $(this).modal(); + }); +})(jQuery); diff --git a/rt.gnu.org/CURRENT/index.html b/rt.gnu.org/CURRENT/index.html index 77f1022f..a070d799 100644 --- a/rt.gnu.org/CURRENT/index.html +++ b/rt.gnu.org/CURRENT/index.html @@ -64,6 +64,51 @@ titlebox-state.js + + jquery_noconflict.js + GNU General Public License version 2 + jquery_noconflict.js + + + + jquery-ui-patch-datepicker.js + GNU General Public License version 2 + jquery-ui-patch-datepicker.js + + + + jquery.modal-defaults.js + GNU General Public License version 2 + jquery.modal-defaults.js + + + + + superfish.js + Expat + superfish.js + + + + supersubs.js + GNU General Public License version 2 + supersubs.js + + + + jquery.cookie.js + Expat + jquery.cookie.js + + + + jquery.modal.min.js + Expat + jquery.modal.js + + + + -- 2.25.1