module NavigationItemsHelper NavigationItem = Struct.new(:text, :href, :current, :classes) def primary_items(current_user, user) if current_user.support? [ NavigationItem.new("Organisations", organisations_path, organisation_current?), NavigationItem.new("Users", users_path, users_current?(current_user, user)), NavigationItem.new("Logs", case_logs_path, logs_current?), ] else [ NavigationItem.new("Logs", case_logs_path, logs_current?), NavigationItem.new("Users", users_organisation_path(current_user.organisation), users_current?(current_user, user)), NavigationItem.new("About your organisation", "/organisations/#{current_user.organisation.id}", organisation_current?), ] end end private def current?(current_controller, controllers) current_controller.controller_name.in?(Array.wrap(controllers)) end def current_action?(current_controller, action) current_controller.action_name == action end def logs_current? current?(controller, %w[case_logs form]) end def users_current?(current_user, user) return false if current_user == user current?(controller, %w[users]) || current_action?(controller, "users") end def organisation_current? current?(controller, %w[organisations]) && !current_action?(controller, "users") end end