Sha256: 53bf18725e21710aa698f14c0f1887db592fb691d893dfd856e7ee3db42910b7
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
module SwitchUserHelper def switch_user_select return unless available? options = "" options += content_tag(:option, "Guest", :value => "", :selected => !current_user) SwitchUser.available_users.each do |scope, user_proc| current_user = provider.current_user(scope) id_name = SwitchUser.available_users_identifiers[scope] name = SwitchUser.available_users_names[scope] user_proc.call.each do |user| user_match = (user == current_user) options += content_tag(:option, tag_label(user, name), :value => tag_value(user, id_name, scope), :selected => user_match) end end if options.respond_to?(:html_safe) options = options.html_safe end select_tag "switch_user_identifier", options, :onchange => "location.href = '/switch_user?scope_identifier=' + encodeURIComponent(this.options[this.selectedIndex].value)" end private def tag_value(user, id_name, scope) identifier = user.send(id_name) "#{scope}_#{identifier}" end def tag_label(user, name) user.send(name) end def available? user = provider.current_users_without_scope.first SwitchUser.view_guard.call(user, request) end def provider SwitchUser.provider_class.new(controller) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
switch_user-0.9.0 | app/helpers/switch_user_helper.rb |