diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 8331293b0..7a9d21871 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -9,7 +9,7 @@ class ApplicationController < ActionController::Base helper_method :current_organization before_action :generate_intro_tutorial, if: :is_current_page_root? around_action :set_time_zone, if: :current_user - layout "main" + layout 'main' def forbidden render_403 @@ -20,7 +20,7 @@ class ApplicationController < ActionController::Base end def is_current_page_root? - controller_name == "projects" && action_name == "index" + controller_name == 'projects' && action_name == 'index' end # Sets current organization for all controllers diff --git a/app/controllers/experiments_controller.rb b/app/controllers/experiments_controller.rb index 99adbcf15..e8f11ceb2 100644 --- a/app/controllers/experiments_controller.rb +++ b/app/controllers/experiments_controller.rb @@ -55,6 +55,7 @@ class ExperimentsController < ApplicationController def canvas @project = @experiment.project + current_organization_switch(@project.organization) end def edit diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index a9b04b088..556445a36 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -23,10 +23,11 @@ class ProjectsController < ApplicationController DELETE_SAMPLES = I18n.t("samples.delete_samples") def index - @current_organization_id = params[:organization].to_i + @current_organization_id = current_organization.id @current_sort = params[:sort].to_s - @projects_by_orgs = current_user.projects_by_orgs( - @current_organization_id, @current_sort, @filter_by_archived) + @projects_by_orgs = current_user.projects_by_orgs(@current_organization_id, + @current_sort, + @filter_by_archived) @organizations = current_user.organizations # New project for create new project modal @@ -237,6 +238,7 @@ class ProjectsController < ApplicationController def show # This is the "info" view + current_organization_switch(@project.organization) end def notifications @@ -261,6 +263,7 @@ class ProjectsController < ApplicationController end def experiment_archive + current_organization_switch(@project.organization) end def samples_index diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb index 29705c8ba..93cccf17c 100644 --- a/app/controllers/protocols_controller.rb +++ b/app/controllers/protocols_controller.rb @@ -741,9 +741,7 @@ class ProtocolsController < ApplicationController end def load_organization_and_type - @organizations = current_user.organizations.order(name: :asc) - @current_organization = @organizations.select{ |org| org.id == params[:organization].to_i }.first - @current_organization ||= @organizations.first + @current_organization = current_organization # :public, :private or :archive @type = (params[:type] || "public").to_sym end diff --git a/app/controllers/users/settings_controller.rb b/app/controllers/users/settings_controller.rb index eeaaaeba5..eaf12837e 100644 --- a/app/controllers/users/settings_controller.rb +++ b/app/controllers/users/settings_controller.rb @@ -498,10 +498,10 @@ class Users::SettingsController < ApplicationController if @user.save flash[:success] = t('users.settings.changed_org_flash', team: @changed_org.name) - redirect_to :back + redirect_to root_path else flash[:alert] = t('users.settings.changed_org_error_flash') - redirect_to :back + redirect_to root_path end end diff --git a/app/helpers/organizations_helper.rb b/app/helpers/organizations_helper.rb index 24cc9a80e..f83ea5d8a 100644 --- a/app/helpers/organizations_helper.rb +++ b/app/helpers/organizations_helper.rb @@ -1,2 +1,9 @@ module OrganizationsHelper + def current_organization_switch(org) + # resets the current organization if needed + if org != current_organization + current_user.current_organization_id = org.id + current_user.save + end + end end diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index 3bb3591be..ee40a4c92 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -6,4 +6,15 @@ module SearchHelper end experiments.uniq end + + def route_to_other_org(path, search_org, text) + if search_org != current_organization + link_to text, + path, + data: { confirm: t('users.settings.changed_org_in_search', + team: search_org.name) } + else + link_to text, path + end + end end diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index cf0129a2c..140bd58fd 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -77,27 +77,6 @@ <% end %> - - - <% end %> -<% if @projects_by_orgs.length > 0 %> - <% @projects_by_orgs.each do |org, projects| %> - <%= render partial: "projects/index/org_projects", locals: {org: org, projects: projects} %> - <% end %> +<%= render partial: 'projects/index/introductory_popup' %> +<%= javascript_include_tag 'projects/introdutory_popup' %> + +<% if current_organization.projects.length> 0 %> + <%= render partial: "projects/index/org_projects", + locals: { org: current_organization, + projects: current_organization.projects } %> + <% end %> <%= javascript_include_tag "projects/index", "data-turbolinks-track" => true %> diff --git a/app/views/protocols/_breadcrumbs.html.erb b/app/views/protocols/_breadcrumbs.html.erb index 99bff0afb..9891d4adc 100644 --- a/app/views/protocols/_breadcrumbs.html.erb +++ b/app/views/protocols/_breadcrumbs.html.erb @@ -1,20 +1,7 @@ \ No newline at end of file + diff --git a/app/views/protocols/index.html.erb b/app/views/protocols/index.html.erb index bbcbe57ab..ba14ede53 100644 --- a/app/views/protocols/index.html.erb +++ b/app/views/protocols/index.html.erb @@ -1,6 +1,6 @@ <% provide(:head_title, t("protocols.index.head_title")) %> -<% if @organizations.count > 0 %> +<% if current_organization %> <%= render partial: "protocols/breadcrumbs.html.erb", locals: { organizations: @organizations, current_organization: @current_organization, type: @type } %>