Move generation of role icons into a helper
authorTom Hughes <tom@compton.nu>
Wed, 21 Mar 2012 19:20:40 +0000 (19:20 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 21 Mar 2012 19:20:40 +0000 (19:20 +0000)
app/helpers/user_roles_helper.rb [new file with mode: 0644]
app/views/user/view.html.erb

diff --git a/app/helpers/user_roles_helper.rb b/app/helpers/user_roles_helper.rb
new file mode 100644 (file)
index 0000000..369efca
--- /dev/null
@@ -0,0 +1,37 @@
+module UserRolesHelper
+  def role_icons(user)
+    UserRole::ALL_ROLES.reduce("".html_safe) { |s,r| s + " " + role_icon(user, r) }
+  end
+
+  def role_icon(user, role)
+    if @user and @user.administrator?
+      if user.has_role?(role)
+        image = "roles/#{role}.png"
+        alt = t("user.view.role.revoke.#{role}")
+        title = t("user.view.role.revoke.#{role}")
+        url = revoke_role_path(:display_name => user.display_name, :role => role)
+        confirm = t("user_role.revoke.are_you_sure", :name => user.display_name, :role => role)
+      else
+        image = "roles/blank_#{role}.png"
+        alt = t("user.view.role.grant.#{role}")
+        title = t("user.view.role.grant.#{role}")
+        url = grant_role_path(:display_name => user.display_name, :role => role)
+        confirm = t("user_role.grant.are_you_sure", :name => user.display_name, :role => role)
+      end
+    elsif user.has_role?(role) 
+      image = "roles/#{role}.png"
+      alt = t("user.view.role.#{role}")
+      title = t("user.view.role.#{role}")
+    end
+
+    if image
+      icon = image_tag(image, :size => "20x20", :border => 0, :alt => alt, :title => title)
+
+      if url
+        icon = link_to(icon, url, :method => :post, :confirm => confirm)
+      end
+    end
+
+    icon
+  end
+end
index f661c9b85b5b378a71cb631b962224cfd8062b9e..0369401eb8eb523dfd9d34201ff25c83a2f1362e 100644 (file)
@@ -1,18 +1,6 @@
 <%= user_image @this_user %>
 
-<h2><%= h(@this_user.display_name) %>
-
-<% UserRole::ALL_ROLES.each do |role| %>
-  <% if @user and @user.administrator? %>
-    <% if @this_user.has_role? role %>
-      <%= link_to image_tag("roles/#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.revoke.#{role}"), :title => t("user.view.role.revoke.#{role}")), revoke_role_path(:display_name => @this_user.display_name, :role => role), :method => :post, :confirm => t('user_role.revoke.are_you_sure', :name => @this_user.display_name, :role => role) %>
-    <% else %>
-      <%= link_to image_tag("roles/blank_#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.grant.#{role}"), :title => t("user.view.role.grant.#{role}")), grant_role_path(:display_name => @this_user.display_name, :role => role), :method => :post, :confirm => t('user_role.grant.are_you_sure', :name => @this_user.display_name, :role => role) %>
-    <% end %>
-  <% elsif @this_user.has_role? role %>
-    <%= image_tag("roles/#{role}.png", :size => "20x20", :border => 0, :alt => t("user.view.role.#{role}"), :title => t("user.view.role.#{role}")) %>
-  <% end %>
-<% end %></h2>
+<h2><%= @this_user.display_name %><%= role_icons(@this_user) %></h2>
 
 <div id="userinformation">
   <% if @user and @this_user.id == @user.id %>