diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9cd6172e..224d3ff6 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -102,6 +102,16 @@ class UsersController < ApplicationController end end + # PUT /user/update_metacode_focus + def update_metacode_focus + @user = current_user + @user.settings.metacode_focus = params[:value] + @user.save + respond_to do |format| + format.json { render json: { success: "success" }} + end + end + private def user_params diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 540fbdeb..860cd38c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -22,7 +22,24 @@ module ApplicationHelper else Metacode.where(id: @m).to_a end - @metacodes.sort! { |m1, m2| m2.name.downcase <=> m1.name.downcase }.rotate!(-1) + + focus_code = user_metacode() + if focus_code != nil && @metacodes.index{|m| m.id == focus_code.id} == nil + @metacodes.push(focus_code) + end + + @metacodes + .sort! { |m1, m2| m2.name.downcase <=> m1.name.downcase } + + if focus_code != nil + @metacodes.rotate!(@metacodes.index{|m| m.id == focus_code.id}) + else + @metacodes.rotate!(-1) + end + end + + def user_metacode + current_user.settings.metacode_focus ? Metacode.find(current_user.settings.metacode_focus.to_i) : nil end def user_metacode diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb index 943200e8..4de64c57 100644 --- a/app/policies/user_policy.rb +++ b/app/policies/user_policy.rb @@ -28,6 +28,10 @@ class UserPolicy < ApplicationPolicy update? end + def update_metacode_focus? + update? + end + # API action def current? user == record