module AutoSessionTimeoutWarningHelper
Public Instance Methods
auto_session_timeout_js(options={})
click to toggle source
# File lib/auto_session_timeout_warning_helper.rb, line 2 def auto_session_timeout_js(options={}) frequency = options[:frequency] || 60 timeout = options[:timeout] || 60 start = options[:start] || 60 warning = options[:warning] || 20 code = <<JS if(typeof(jQuery) != 'undefined'){ $("#logout_dialog").dialog({ modal: true, width: 500, height: 180, autoOpen: false, dialogClass: "no-close" }); $(".logout_dialog").click(function (e) { e.preventDefault(); $("#logout_dialog").dialog('option', 'buttons', [ { text: "Continue", icons: { primary: "ui-icon-heart" }, click: function () { window.location.reload(); } } ] ); $("#logout_dialog").dialog("open"); }); function PeriodicalQuery() { $.ajax({ url: '/active', success: function(data) { if(new Date(data.timeout).getTime() < (new Date().getTime() + #{warning} * 1000)){ showDialog(); } if(data.live == false){ window.location.href = '/timeout'; } } }); setTimeout(PeriodicalQuery, (#{frequency} * 1000)); } setTimeout(PeriodicalQuery, (#{start} * 1000)); function showDialog(){ $('.logout_dialog').trigger('click'); } } JS javascript_tag(code) end
auto_session_warning_tag(options={})
click to toggle source
Generates viewport-covering dialog HTML with message in center
options={} are output to HTML. Be CAREFUL about XSS/CSRF!
# File lib/auto_session_timeout_warning_helper.rb, line 64 def auto_session_warning_tag(options={}) default_message = "You are about to be logged out due to inactivity.<br/><br/>Please click ‘Continue’ to stay logged in." html_message = options[:message] || default_message warning_title = options[:title] || "Logout Warning" warning_classes = !!(options[:classes]) ? ' class="' + options[:classes] + '"' : '' # Marked .html_safe -- Passed strings are output directly to HTML! "<div id='logout_dialog' title='#{warning_title}' style='display:none;'#{warning_classes}> #{html_message} </div> <div class='logout_dialog'></div>".html_safe end