diff --git a/Gemfile b/Gemfile index 6e4b9a36730fa75222918f2bfef66bfd050c5d64..aff8b7649cd0192ab45bfab24772f57ff39bbb4f 100644 --- a/Gemfile +++ b/Gemfile @@ -86,6 +86,7 @@ gem 'rails-assets-punycode', '1.3.1' # jQuery plugins +gem 'rails-assets-jquery-idletimer', '0.9.3' gem 'rails-assets-jquery-placeholder', '2.0.8' gem 'rails-assets-jquery-textchange', '0.2.3' gem 'rails-assets-perfect-scrollbar', '0.4.11' diff --git a/Gemfile.lock b/Gemfile.lock index 6d93daccfd72b20b7fbf1dbf52016dc6598ea8c0..e3b669b1f1ec3c6671704fcb090e59247f0a3d7d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -357,6 +357,7 @@ GEM railties (= 4.1.6) sprockets-rails (~> 2.0) rails-assets-jquery (1.11.1) + rails-assets-jquery-idletimer (0.9.3) rails-assets-jquery-placeholder (2.0.8) rails-assets-jquery-textchange (0.2.3) rails-assets-jquery @@ -577,6 +578,7 @@ DEPENDENCIES rack-ssl (= 1.4.1) rails (= 4.1.6) rails-assets-jquery (= 1.11.1) + rails-assets-jquery-idletimer (= 0.9.3) rails-assets-jquery-placeholder (= 2.0.8) rails-assets-jquery-textchange (= 0.2.3) rails-assets-perfect-scrollbar (= 0.4.11) diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js index b0ae002b8dc28313b22ce738842ea03f3fe8f489..d683db631db8429fea4318af113b96b26bb6b93f 100644 --- a/app/assets/javascripts/main.js +++ b/app/assets/javascripts/main.js @@ -17,7 +17,7 @@ //= require jquery.events.input //= require jquery.elastic //= require jquery.mentionsInput -//= require jquery.idle-timer +//= require jquery-idletimer/dist/idle-timer //= require jquery.infinitescroll-custom //= require jquery.autocomplete-custom //= require keycodes diff --git a/vendor/assets/javascripts/jquery.idle-timer.js b/vendor/assets/javascripts/jquery.idle-timer.js deleted file mode 100644 index 8df88d61e18c7fc6b1b00280197ff5eade806f5a..0000000000000000000000000000000000000000 --- a/vendor/assets/javascripts/jquery.idle-timer.js +++ /dev/null @@ -1,246 +0,0 @@ -/*! - * jQuery idleTimer plugin - * version 0.9.100511 - * by Paul Irish. - * http://github.com/paulirish/yui-misc/tree/ - * MIT license - - * adapted from YUI idle timer by nzakas: - * http://github.com/nzakas/yui-misc/ -*/ -/* - * Copyright (c) 2009 Nicholas C. Zakas - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -/* updated to fix Chrome setTimeout issue by Zaid Zawaideh */ - - // API available in <= v0.8 - /******************************* - - // idleTimer() takes an optional argument that defines the idle timeout - // timeout is in milliseconds; defaults to 30000 - $.idleTimer(10000); - - - $(document).bind("idle.idleTimer", function(){ - // function you want to fire when the user goes idle - }); - - - $(document).bind("active.idleTimer", function(){ - // function you want to fire when the user becomes active again - }); - - // pass the string 'destroy' to stop the timer - $.idleTimer('destroy'); - - // you can query if the user is idle or not with data() - $.data(document,'idleTimer'); // 'idle' or 'active' - - // you can get time elapsed since user when idle/active - $.idleTimer('getElapsedTime'); // time since state change in ms - - ********/ - - - - // API available in >= v0.9 - /************************* - - // bind to specific elements, allows for multiple timer instances - $(elem).idleTimer(timeout|'destroy'|'getElapsedTime'); - $.data(elem,'idleTimer'); // 'idle' or 'active' - - // if you're using the old $.idleTimer api, you should not do $(document).idleTimer(...) - - // element bound timers will only watch for events inside of them. - // you may just want page-level activity, in which case you may set up - // your timers on document, document.documentElement, and document.body - - - ********/ - -(function($){ - -$.idleTimer = function(newTimeout, elem){ - - // defaults that are to be stored as instance props on the elem - - var idle = false, //indicates if the user is idle - enabled = true, //indicates if the idle timer is enabled - timeout = 30000, //the amount of time (ms) before the user is considered idle - events = 'mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove'; // activity is one of these events - - - elem = elem || document; - - - - /* (intentionally not documented) - * Toggles the idle state and fires an appropriate event. - * @return {void} - */ - var toggleIdleState = function(myelem){ - - // curse you, mozilla setTimeout lateness bug! - if (typeof myelem === 'number'){ - myelem = undefined; - } - - var obj = $.data(myelem || elem,'idleTimerObj'); - - //toggle the state - obj.idle = !obj.idle; - - // reset timeout - var elapsed = (+new Date()) - obj.olddate; - obj.olddate = +new Date(); - - // handle Chrome always triggering idle after js alert or comfirm popup - if (obj.idle && (elapsed < timeout)) { - obj.idle = false; - clearTimeout($.idleTimer.tId); - if (enabled) - $.idleTimer.tId = setTimeout(toggleIdleState, timeout); - return; - } - - //fire appropriate event - - // create a custom event, but first, store the new state on the element - // and then append that string to a namespace - var event = jQuery.Event( $.data(elem,'idleTimer', obj.idle ? "idle" : "active" ) + '.idleTimer' ); - - // we do want this to bubble, at least as a temporary fix for jQuery 1.7 - // event.stopPropagation(); - $(elem).trigger(event); - }, - - /** - * Stops the idle timer. This removes appropriate event handlers - * and cancels any pending timeouts. - * @return {void} - * @method stop - * @static - */ - stop = function(elem){ - - var obj = $.data(elem,'idleTimerObj') || {}; - - //set to disabled - obj.enabled = false; - - //clear any pending timeouts - clearTimeout(obj.tId); - - //detach the event handlers - $(elem).off('.idleTimer'); - }, - - - /* (intentionally not documented) - * Handles a user event indicating that the user isn't idle. - * @param {Event} event A DOM2-normalized event object. - * @return {void} - */ - handleUserEvent = function(){ - - var obj = $.data(this,'idleTimerObj'); - - //clear any existing timeout - clearTimeout(obj.tId); - - - - //if the idle timer is enabled - if (obj.enabled){ - - - //if it's idle, that means the user is no longer idle - if (obj.idle){ - toggleIdleState(this); - } - - //set a new timeout - obj.tId = setTimeout(toggleIdleState, obj.timeout); - - } - }; - - - /** - * Starts the idle timer. This adds appropriate event handlers - * and starts the first timeout. - * @param {int} newTimeout (Optional) A new value for the timeout period in ms. - * @return {void} - * @method $.idleTimer - * @static - */ - - - var obj = $.data(elem,'idleTimerObj') || {}; - - obj.olddate = obj.olddate || +new Date(); - - //assign a new timeout if necessary - if (typeof newTimeout === "number"){ - timeout = newTimeout; - } else if (newTimeout === 'destroy') { - stop(elem); - return this; - } else if (newTimeout === 'getElapsedTime'){ - return (+new Date()) - obj.olddate; - } - - //assign appropriate event handlers - $(elem).on($.trim((events+' ').split(' ').join('.idleTimer ')),handleUserEvent); - - - obj.idle = idle; - obj.enabled = enabled; - obj.timeout = timeout; - - - //set a timeout to toggle state - obj.tId = setTimeout(toggleIdleState, obj.timeout); - - // assume the user is active for the first x seconds. - $.data(elem,'idleTimer',"active"); - - // store our instance on the object - $.data(elem,'idleTimerObj',obj); - - - -}; // end of $.idleTimer() - - -// v0.9 API for defining multiple timers. -$.fn.idleTimer = function(newTimeout){ - if(this[0]){ - $.idleTimer(newTimeout,this[0]); - } - - return this; -}; - - -})(jQuery);