pax_global_header 0000666 0000000 0000000 00000000064 13412764110 0014511 g ustar 00root root 0000000 0000000 52 comment=60219409b6161b4f45bcd271f2253117b06fb2b0 ruby-rails-assets-jquery.are-you-sure-1.9.0/ 0000775 0000000 0000000 00000000000 13412764110 0020762 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/Gemfile 0000664 0000000 0000000 00000000111 13412764110 0022246 0 ustar 00root root 0000000 0000000 source 'https://rubygems.org' source 'https://rails-assets.org' gemspec ruby-rails-assets-jquery.are-you-sure-1.9.0/README.md 0000664 0000000 0000000 00000000706 13412764110 0022244 0 ustar 00root root 0000000 0000000 # rails-assets-jquery.are-you-sure > The Bower package inside a gem This gem was automatically generated. You can visit [rails-assets.org](https://rails-assets.org) for more information. ## Usage Add rails-assets source block to your `Gemfile`: ```ruby source "https://rails-assets.org" do gem "rails-assets-jquery.are-you-sure" end ``` Then, import the asset using Sprockets’ `require` directive: ```js //= require "jquery.are-you-sure" ``` ruby-rails-assets-jquery.are-you-sure-1.9.0/Rakefile 0000664 0000000 0000000 00000000034 13412764110 0022424 0 ustar 00root root 0000000 0000000 require "bundler/gem_tasks" ruby-rails-assets-jquery.are-you-sure-1.9.0/app/ 0000775 0000000 0000000 00000000000 13412764110 0021542 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/ 0000775 0000000 0000000 00000000000 13412764110 0023044 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/documents/ 0000775 0000000 0000000 00000000000 13412764110 0025045 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/documents/jquery.are-you-sure/ 0000775 0000000 0000000 00000000000 13412764110 0030720 5 ustar 00root root 0000000 0000000 are-you-sure.jquery.json 0000664 0000000 0000000 00000002656 13412764110 0035420 0 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/documents/jquery.are-you-sure { "name": "are-you-sure", "title": "Are You Sure? - a dirty forms check plugin", "description": "Are-you-sure is simple light-weight dirty forms JQuery Plugin for modern browsers. It helps prevent users from loosing unsaved form changes by prompting the user to save/submit. It's dependency free and designed for modern browsers... just the features you need and nothing more! See the project page and demo for usage and examples.", "keywords": [ "form", "dirty", "field", "change", "save", "save-check", "save-warning" ], "version": "1.9.0", "author": { "name": "Chris Dance (codedance) at PaperCut Software", "url": "https://github.com/codedance" }, "maintainers": [ { "name": "Chris Dance", "email": "chris.dance@papercut.com", "url": "http://www.papercut.com/" } ], "licenses": [ { "type": "MIT", "url": "https://github.com/codedance/jquery.AreYouSure/blob/master/README.md" } ], "bugs": "https://github.com/codedance/jquery.AreYouSure/issues", "homepage": "https://github.com/codedance/jquery.AreYouSure", "docs": "https://github.com/codedance/jquery.AreYouSure", "demo": "http://www.papercut.com/products/free_software/are-you-sure/demo/are-you-sure-demo.html", "dependencies": { "jquery": ">=1.4.2" } } ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/ 0000775 0000000 0000000 00000000000 13412764110 0025375 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/jquery.are-you-sure.js 0000664 0000000 0000000 00000000067 13412764110 0031611 0 ustar 00root root 0000000 0000000 //= require jquery.are-you-sure/jquery.are-you-sure.js ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/jquery.are-you-sure/ 0000775 0000000 0000000 00000000000 13412764110 0031250 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/jquery.are-you-sure/Gruntfile.js 0000664 0000000 0000000 00000001406 13412764110 0033546 0 ustar 00root root 0000000 0000000 module.exports = function(grunt) { grunt.config.init({ karma: { options: { browsers: [ 'Chrome', 'Firefox', 'Safari', 'IE' ], frameworks: [ 'jasmine' ], reportSlowerThan: 500, singleRun: true }, unit: { files: [ { pattern: 'bower_components/jquery/dist/jquery.min.js' }, { pattern: 'bower_components/jasmine-jquery/lib/jasmine-jquery.js' }, { pattern: 'jquery.are-you-sure.js' }, { pattern: 'spec/javascripts/*.js' }, { pattern: 'spec/javascripts/fixtures/**/*.html', included: false } ] } } }); grunt.registerTask('test', 'Run tests.', [ 'karma' ]); grunt.registerTask('default', [ 'test' ]); grunt.loadNpmTasks('grunt-karma'); }; ays-beforeunload-shim.js 0000664 0000000 0000000 00000001760 13412764110 0035730 0 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/jquery.are-you-sure /*! * An experimental shim to partially emulate onBeforeUnload on iOS. * Part of https://github.com/codedance/jquery.AreYouSure/ * * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/ * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Author: chris.dance@papercut.com * Date: 19th May 2014 */ $(function() { if (!navigator.userAgent.toLowerCase().match(/iphone|ipad|ipod|opera/)) { return; } $('a').bind('click', function(evt) { var href = $(evt.target).closest('a').attr('href'); if (href !== undefined && !(href.match(/^#/) || href.trim() == '')) { var response = $(window).triggerHandler('beforeunload', response); if (response && response != "") { var msg = response + "\n\n" + "Press OK to leave this page or Cancel to stay."; if (!confirm(msg)) { return false; } } window.location.href = href; return false; } }); }); jquery.are-you-sure.js 0000664 0000000 0000000 00000012663 13412764110 0035412 0 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/jquery.are-you-sure /*! * jQuery Plugin: Are-You-Sure (Dirty Form Detection) * https://github.com/codedance/jquery.AreYouSure/ * * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/ * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * Author: chris.dance@papercut.com * Version: 1.9.0 * Date: 13th August 2014 */ (function($) { $.fn.areYouSure = function(options) { var settings = $.extend( { 'message' : 'You have unsaved changes!', 'dirtyClass' : 'dirty', 'change' : null, 'silent' : false, 'addRemoveFieldsMarksDirty' : false, 'fieldEvents' : 'change keyup propertychange input', 'fieldSelector': ":input:not(input[type=submit]):not(input[type=button])" }, options); var getValue = function($field) { if ($field.hasClass('ays-ignore') || $field.hasClass('aysIgnore') || $field.attr('data-ays-ignore') || $field.attr('name') === undefined) { return null; } if ($field.is(':disabled')) { return 'ays-disabled'; } var val; var type = $field.attr('type'); if ($field.is('select')) { type = 'select'; } switch (type) { case 'checkbox': case 'radio': val = $field.is(':checked'); break; case 'select': val = ''; $field.find('option').each(function(o) { var $option = $(this); if ($option.is(':selected')) { val += $option.val(); } }); break; default: val = $field.val(); } return val; }; var storeOrigValue = function($field) { $field.data('ays-orig', getValue($field)); }; var checkForm = function(evt) { var isFieldDirty = function($field) { var origValue = $field.data('ays-orig'); if (undefined === origValue) { return false; } return (getValue($field) != origValue); }; var $form = ($(this).is('form')) ? $(this) : $(this).parents('form'); // Test on the target first as it's the most likely to be dirty if (isFieldDirty($(evt.target))) { setDirtyStatus($form, true); return; } $fields = $form.find(settings.fieldSelector); if (settings.addRemoveFieldsMarksDirty) { // Check if field count has changed var origCount = $form.data("ays-orig-field-count"); if (origCount != $fields.length) { setDirtyStatus($form, true); return; } } // Brute force - check each field var isDirty = false; $fields.each(function() { $field = $(this); if (isFieldDirty($field)) { isDirty = true; return false; // break } }); setDirtyStatus($form, isDirty); }; var initForm = function($form) { var fields = $form.find(settings.fieldSelector); $(fields).each(function() { storeOrigValue($(this)); }); $(fields).unbind(settings.fieldEvents, checkForm); $(fields).bind(settings.fieldEvents, checkForm); $form.data("ays-orig-field-count", $(fields).length); setDirtyStatus($form, false); }; var setDirtyStatus = function($form, isDirty) { var changed = isDirty != $form.hasClass(settings.dirtyClass); $form.toggleClass(settings.dirtyClass, isDirty); // Fire change event if required if (changed) { if (settings.change) settings.change.call($form, $form); if (isDirty) $form.trigger('dirty.areYouSure', [$form]); if (!isDirty) $form.trigger('clean.areYouSure', [$form]); $form.trigger('change.areYouSure', [$form]); } }; var rescan = function() { var $form = $(this); var fields = $form.find(settings.fieldSelector); $(fields).each(function() { var $field = $(this); if (!$field.data('ays-orig')) { storeOrigValue($field); $field.bind(settings.fieldEvents, checkForm); } }); // Check for changes while we're here $form.trigger('checkform.areYouSure'); }; var reinitialize = function() { initForm($(this)); } if (!settings.silent && !window.aysUnloadSet) { window.aysUnloadSet = true; $(window).bind('beforeunload', function() { $dirtyForms = $("form").filter('.' + settings.dirtyClass); if ($dirtyForms.length == 0) { return; } // Prevent multiple prompts - seen on Chrome and IE if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) { if (window.aysHasPrompted) { return; } window.aysHasPrompted = true; window.setTimeout(function() {window.aysHasPrompted = false;}, 900); } return settings.message; }); } return this.each(function(elem) { if (!$(this).is('form')) { return; } var $form = $(this); $form.submit(function() { $form.removeClass(settings.dirtyClass); }); $form.bind('reset', function() { setDirtyStatus($form, false); }); // Add a custom events $form.bind('rescan.areYouSure', rescan); $form.bind('reinitialize.areYouSure', reinitialize); $form.bind('checkform.areYouSure', checkForm); initForm($form); }); }; })(jQuery); ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/jquery.are-you-sure/spec/ 0000775 0000000 0000000 00000000000 13412764110 0032202 5 ustar 00root root 0000000 0000000 javascripts/ 0000775 0000000 0000000 00000000000 13412764110 0034454 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/jquery.are-you-sure/spec jquery.are-you-sure_spec.js 0000664 0000000 0000000 00000001321 13412764110 0041674 0 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/javascripts/jquery.are-you-sure/spec/javascripts 'use strict'; // Karma adds 'base/' to the default path jasmine.getFixtures().fixturesPath = 'base/spec/javascripts/fixtures'; describe("A form's", function() { var $form = undefined; describe('text input', function() { var $textInput = undefined; beforeEach(function() { loadFixtures('input-text.html'); $form = $('form'); $textInput = $('input[type=text]'); $form.areYouSure(); }); it('should cause dirtyness after its value changes', function(done) { expect($form.hasClass('dirty')).toBe(false); $textInput.val('new').change(); setTimeout(function() { expect($form.hasClass('dirty')).toBe(true); done(); }, 0); }); }); }); ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/templates/ 0000775 0000000 0000000 00000000000 13412764110 0025042 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/templates/jquery.are-you-sure/ 0000775 0000000 0000000 00000000000 13412764110 0030715 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/templates/jquery.are-you-sure/spec/ 0000775 0000000 0000000 00000000000 13412764110 0031647 5 ustar 00root root 0000000 0000000 javascripts/ 0000775 0000000 0000000 00000000000 13412764110 0034121 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/templates/jquery.are-you-sure/spec fixtures/ 0000775 0000000 0000000 00000000000 13412764110 0035772 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/templates/jquery.are-you-sure/spec/javascripts input-text.html 0000664 0000000 0000000 00000000106 13412764110 0040776 0 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/app/assets/templates/jquery.are-you-sure/spec/javascripts/fixtures
ruby-rails-assets-jquery.are-you-sure-1.9.0/lib/ 0000775 0000000 0000000 00000000000 13412764110 0021530 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/lib/rails-assets-jquery.are-you-sure.rb 0000664 0000000 0000000 00000001454 13412764110 0030344 0 ustar 00root root 0000000 0000000 require "rails-assets-jquery.are-you-sure/version" require "rails-assets-jquery" module RailsAssetsJqueryAreYouSure def self.gem_path Pathname(File.realpath(__FILE__)).join('../..') end def self.gem_spec Gem::Specification::load( gem_path.join("rails-assets-jquery.are-you-sure.gemspec").to_s ) end def self.load_paths gem_path.join('app/assets').each_child.to_a end def self.dependencies [ RailsAssetsJquery ] end if defined?(Rails) class Engine < ::Rails::Engine # Rails -> use app/assets directory. end end end class RailsAssets @components ||= [] class << self attr_accessor :components def load_paths components.flat_map(&:load_paths) end end end RailsAssets.components << RailsAssetsJqueryAreYouSure ruby-rails-assets-jquery.are-you-sure-1.9.0/lib/rails-assets-jquery.are-you-sure/ 0000775 0000000 0000000 00000000000 13412764110 0030013 5 ustar 00root root 0000000 0000000 ruby-rails-assets-jquery.are-you-sure-1.9.0/lib/rails-assets-jquery.are-you-sure/version.rb 0000664 0000000 0000000 00000000073 13412764110 0032025 0 ustar 00root root 0000000 0000000 module RailsAssetsJqueryAreYouSure VERSION = "1.9.0" end ruby-rails-assets-jquery.are-you-sure-1.9.0/rails-assets-jquery.are-you-sure.gemspec 0000664 0000000 0000000 00000002175 13412764110 0030617 0 ustar 00root root 0000000 0000000 # coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'rails-assets-jquery.are-you-sure/version' Gem::Specification.new do |spec| spec.name = "rails-assets-jquery.are-you-sure" spec.version = RailsAssetsJqueryAreYouSure::VERSION spec.authors = ["rails-assets.org"] spec.description = "A light-weight jQuery 'dirty forms' Plugin - it monitors html forms and alerts users to unsaved changes if they attempt to close the browser or navigate away from the page. (Are you sure?)" spec.summary = "A light-weight jQuery 'dirty forms' Plugin - it monitors html forms and alerts users to unsaved changes if they attempt to close the browser or navigate away from the page. (Are you sure?)" spec.homepage = "https://github.com/codedance/jquery.AreYouSure" spec.license = "MIT/GPLv2" spec.files = `find ./* -type f | cut -b 3-`.split($/) spec.require_paths = ["lib"] spec.add_dependency "rails-assets-jquery", ">= 1.4.2" spec.add_development_dependency "bundler", "~> 1.3" spec.add_development_dependency "rake" end