I am trying to store the gantt months_from, and year_from in the session
Added by Shivam Barthwal over 5 years ago
I want to store the gantt months from, year in the session when we hit apply to view the gantt. Currently in Redmine 4.1, when we select the months and year in the gantt view and later visit the gantt page the year and month selection is not stored to the value we selected on previous visit to the gantt page, instead it hovers back to the default. So I was trying to store it on the session, but I do not have any success. Can someone help me. Here is my code
Gantt controller
class GanttsController < ApplicationController
menu_item :gantt
before_action :find_optional_project
rescue_from Query::StatementInvalid, :with => :query_statement_invalid
helper :gantt
helper :issues
helper :projects
helper :queries
include QueriesHelper
include Redmine::Export::PDF
def show
@gantt = Redmine::Helpers::Gantt.new(params)
set_gantt_dates(@gantt)
@gantt.project = @project
retrieve_query
@query.group_by = nil
@gantt.query = @query if @query.valid?
basename = (@project ? "#{@project.identifier}-" : '') + 'gantt'
respond_to do |format|
format.html { render :action => "show", :layout => !request.xhr? }
format.png { send_data(@gantt.to_image, :disposition => 'inline', :type => 'image/png', :filename => "#{basename}.png") } if @gantt.respond_to?('to_image')
format.pdf { send_data(@gantt.to_pdf, :type => 'application/pdf', :filename => "#{basename}.pdf") }
end
end
end
I implemented a method in application controller where I pass the gantt variable to the method to store the month and year in session as below.
def set_gantt_dates(gantt)
session[:user_id] = User.current.id
session[:month_from] = gantt.month_from
session[:year_from] = gantt.year_from
session[:months] = gantt.months
end
helper_method :set_gantt_dates
I am accessing this helper method in my show view page gantt, but it does not make any difference
<p class="buttons">
<% set_gantt_dates(@gantt) %>
<%= number_field_tag 'months', @gantt.months, :min => 1, :max => Setting.gantt_months_limit.to_i, :autocomplete => false %>
<%= l(:label_months_from) %>
<%= select_month(session[:month_from], :prefix => "month", :discard_type => true) %>
<%= select_year(session[:year_from], :prefix => "year", :discard_type => true) %>
<%= hidden_field_tag 'zoom', @gantt.zoom %>
<!--<%= link_to_function l(:button_apply), '$("#query_form").submit()',
:class => 'icon icon-checked' %> !-->
<%= button_tag "Apply", :class => 'icon icon-checked', :onclick => "submitQuery()" %>
<%= link_to l(:button_clear), { :project_id => @project, :set_filter => 1 },
:class => 'icon icon-reload' %>
<% if @query.new_record? && User.current.allowed_to?(:save_queries, @project, :global => true) %>
<%= link_to_function l(:button_save),
"$('#query_form').attr('action', '#{ @project ? new_project_query_path(@project) : new_query_path }').submit();",
:class => 'icon icon-save' %>
<% end %>
<% if !@query.new_record? && @query.editable_by?(User.current) %>
<%= link_to l(:button_edit), edit_query_path(@query, :gantt => 1), :class => 'icon icon-edit' %>
<%= delete_link query_path(@query, :gantt => 1) %>
<% end %>
</p>
</div>
<% end %>
Please help