diff --git a/app/controllers/admin/administrators_controller.rb b/app/controllers/admin/administrators_controller.rb index 3467ee0c0..5e423be81 100644 --- a/app/controllers/admin/administrators_controller.rb +++ b/app/controllers/admin/administrators_controller.rb @@ -28,4 +28,22 @@ class Admin::AdministratorsController < Admin::BaseController redirect_to admin_administrators_path end + + def edit + end + + def update + if @administrator.update(update_administrator_params) + notice = t("admin.administrators.form.updated") + redirect_to admin_administrators_path, notice: notice + else + render :edit + end + end + + private + + def update_administrator_params + params.require(:administrator).permit(:description) + end end diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index e0dc3834f..bad9af389 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -77,7 +77,9 @@ module AdminHelper end def admin_select_options - Administrator.all.order("users.username asc").includes(:user).collect { |v| [ v.name, v.id ] } + Administrator.with_user + .collect { |v| [ v.description_or_name, v.id ] } + .sort_by { |a| a[0] } end def admin_submit_action(resource) diff --git a/app/models/abilities/administrator.rb b/app/models/abilities/administrator.rb index c37e06f65..c0e723fff 100644 --- a/app/models/abilities/administrator.rb +++ b/app/models/abilities/administrator.rb @@ -51,7 +51,7 @@ module Abilities can :comment_as_administrator, [Debate, Comment, Proposal, Poll::Question, Budget::Investment, Legislation::Question, Legislation::Proposal, Legislation::Annotation, Topic] - can [:search, :create, :index, :destroy], ::Administrator + can [:search, :create, :index, :destroy, :edit, :update], ::Administrator can [:search, :create, :index, :destroy], ::Moderator can [:search, :show, :edit, :update, :create, :index, :destroy, :summary], ::Valuator can [:search, :create, :index, :destroy], ::Manager diff --git a/app/models/administrator.rb b/app/models/administrator.rb index b8b6cc1c0..1c5cb027a 100644 --- a/app/models/administrator.rb +++ b/app/models/administrator.rb @@ -3,4 +3,14 @@ class Administrator < ApplicationRecord delegate :name, :email, :name_and_email, to: :user validates :user_id, presence: true, uniqueness: true + + scope :with_user, -> { includes(:user) } + + def description_or_name + description.presence || name + end + + def description_or_name_and_email + "#{description_or_name} (#{email})" + end end diff --git a/app/views/admin/administrators/edit.html.erb b/app/views/admin/administrators/edit.html.erb new file mode 100644 index 000000000..e9374ee78 --- /dev/null +++ b/app/views/admin/administrators/edit.html.erb @@ -0,0 +1,15 @@ +<%= back_link_to admin_administrators_path %> + +

<%= t("admin.administrators.form.edit_title") %>

+ +
+ <%= @administrator.name %>
+ <%= @administrator.email %> +
+ +
+ <%= form_for [:admin, @administrator] do |f| %> + <%= f.text_field :description %> + <%= f.submit class: "button success" %> + <% end %> +
diff --git a/app/views/admin/administrators/index.html.erb b/app/views/admin/administrators/index.html.erb index c727114bf..469905279 100644 --- a/app/views/admin/administrators/index.html.erb +++ b/app/views/admin/administrators/index.html.erb @@ -11,6 +11,7 @@ <%= t("admin.administrators.index.id") %> <%= t("admin.administrators.index.name") %> <%= t("admin.administrators.index.email") %> + <%= t("admin.administrators.index.description") %> <%= t("admin.shared.actions") %> <% @administrators.each do |administrator| %> @@ -24,13 +25,18 @@ <%= administrator.email %> + + <%= administrator.description %> + <% if administrator.persisted? %> + <%= link_to t("admin.actions.edit"), + edit_admin_administrator_path(administrator), + class: "button hollow" %> <%= link_to t("admin.administrators.administrator.delete"), admin_administrator_path(administrator), method: :delete, - class: "button hollow alert expanded" - %> + class: "button hollow alert" %> <% else %> <%= link_to t("admin.administrators.administrator.add"), { controller: "admin/administrators", action: :create, diff --git a/app/views/admin/budget_investments/_select_investment.html.erb b/app/views/admin/budget_investments/_select_investment.html.erb index 788d9824b..2da7a3817 100644 --- a/app/views/admin/budget_investments/_select_investment.html.erb +++ b/app/views/admin/budget_investments/_select_investment.html.erb @@ -13,9 +13,9 @@ <% if investment.administrator.present? %> - "> - <%= investment.administrator.name %> - + "> + <%= investment.administrator.description_or_name %> + <% else %> <%= t("admin.budget_investments.index.no_admin_assigned") %> <% end %> diff --git a/app/views/admin/budget_investments/edit.html.erb b/app/views/admin/budget_investments/edit.html.erb index 20e3c5e56..8d2ff842f 100644 --- a/app/views/admin/budget_investments/edit.html.erb +++ b/app/views/admin/budget_investments/edit.html.erb @@ -46,7 +46,7 @@
<%= f.select(:administrator_id, - @admins.collect{ |a| [a.name_and_email, a.id ] }, + @admins.collect{ |a| [a.description_or_name_and_email, a.id ] }, { include_blank: t("admin.budget_investments.edit.undefined") }) %>
diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index 9fc0f875b..8e72d6c53 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -3,7 +3,8 @@ <% allow_votes = local_assigns.fetch(:allow_votes, true) %> <% allow_actions = local_assigns.fetch(:allow_actions, true) %> <% allow_comments = local_assigns.fetch(:allow_comments, true) %> -<% cache [locale_and_user_status(comment), comment, commentable_cache_key(comment.commentable), comment.author, (comment_flags[comment.id] if comment_flags)] do %> +<% admin_layout = local_assigns.fetch(:admin_layout, false) %> +<% cache [locale_and_user_status(comment), comment, commentable_cache_key(comment.commentable), comment.author, (comment_flags[comment.id] if comment_flags), (admin_layout if admin_layout)] do %>