Add support for CSS based control of user specific components
Define some helper routines which can be used to make page elements only display when the logged in user matches certain conditions and add style rules to the layout to trigger those elements based on the logged in user.
This commit is contained in:
parent
d87ea6863a
commit
51195c450d
2 changed files with 40 additions and 0 deletions
|
@ -40,6 +40,45 @@ module ApplicationHelper
|
|||
return js
|
||||
end
|
||||
|
||||
def style_rules
|
||||
css = ""
|
||||
|
||||
css << ".hidden { display: none }";
|
||||
css << ".hide_unless_logged_in { display: none }" unless @user;
|
||||
css << ".hide_if_logged_in { display: none }" if @user;
|
||||
css << ".hide_if_user_#{@user.id} { display: none }" if @user;
|
||||
css << ".show_if_user_#{@user.id} { display: inline }" if @user;
|
||||
css << ".hide_unless_administrator { display: none }" unless @user and @user.administrator?;
|
||||
|
||||
return content_tag(:style, css)
|
||||
end
|
||||
|
||||
def if_logged_in(tag = :div, &block)
|
||||
concat(content_tag(tag, capture(&block), :class => "hide_unless_logged_in"))
|
||||
end
|
||||
|
||||
def if_not_logged_in(tag = :div, &block)
|
||||
concat(content_tag(tag, capture(&block), :class => "hide_if_logged_in"))
|
||||
end
|
||||
|
||||
def if_user(user, tag = :div, &block)
|
||||
if user
|
||||
concat(content_tag(tag, capture(&block), :class => "hidden show_if_user_#{user.id}"))
|
||||
end
|
||||
end
|
||||
|
||||
def unless_user(user, tag = :div, &block)
|
||||
if user
|
||||
concat(content_tag(tag, capture(&block), :class => "hide_if_user_#{user.id}"))
|
||||
else
|
||||
concat(content_tag(tag, capture(&block)))
|
||||
end
|
||||
end
|
||||
|
||||
def if_administrator(tag = :div, &block)
|
||||
concat(content_tag(tag, capture(&block), :class => "hide_unless_administrator"))
|
||||
end
|
||||
|
||||
def describe_location(lat, lon, zoom = nil, language = nil)
|
||||
zoom = zoom || 14
|
||||
language = language || request.user_preferred_languages.join(',')
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<%= stylesheet_link_tag 'print', :media => "print" %>
|
||||
<%= tag("link", { :rel => "search", :type => "application/opensearchdescription+xml", :title => "OpenStreetMap Search", :href => "/opensearch/osm.xml" }) %>
|
||||
<%= tag("meta", { :name => "description", :content => "OpenStreetMap is the free wiki world map." }) %>
|
||||
<%= style_rules %>
|
||||
<%= yield :head %>
|
||||
<title><%= t 'layouts.project_name.title' %><%= ' | '+ h(@title) if @title %></title>
|
||||
</head>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue