Forums » Development »
 How to override method retrieve_query in issue_controller
How to override method retrieve_query in issue_controller
Added by anhkhoa Michel almost 11 years ago
Hi every body. I want to override retrieve_query  but It do'nt action. Code in my_plugin\lib\issue_patch.rb:
require_dependency 'issue'
module IssuePatch
  def self.included(base) # :nodoc:
    base.send(:include, InstanceMethods)
    base.class_eval do
      unloadable # Send unloadable so it will not be unloaded in development
      alias_method_chain :retrieve_query,:rate_query
    end
  end
  module ClassMethods
  end
  module InstanceMethods
    # Wraps the association to get the Deliverable subject.  Needed for the 
    # Query and filtering
    def retrieve_query_with_rate_query
      if params[:query_id]=="0" 
        if User.current.group_ids.include?8
          params[:query_id] = 8
        else
          params[:query_id] = 7
        end
      end
      if !params[:query_id].blank?
        cond = "project_id IS NULL" 
        cond << " OR project_id = #{@project.id}" if @project
        @query = IssueQuery.where(cond).find(params[:query_id])
        raise ::Unauthorized unless @query.visible?
        @query.project = @project
        session[:query] = {:id => @query.id, :project_id => @query.project_id}
        sort_clear
      elsif api_request? || params[:set_filter] || session[:query].nil? || session[:query][:project_id] != (@project ? @project.id : nil)
        # Give it a name, required to be valid
        @query = IssueQuery.new(:name => "_")
        @query.project = @project
        @query.build_from_params(params)
        session[:query] = {:project_id => @query.project_id, :filters => @query.filters, :group_by => @query.group_by, :column_names => @query.column_names}
      else
        # retrieve from session
        @query = nil
        @query = IssueQuery.find_by_id(session[:query][:id]) if session[:query][:id]
        @query ||= IssueQuery.new(:name => "_", :filters => session[:query][:filters], :group_by => session[:query][:group_by], :column_names => session[:query][:column_names])
        @query.project = @project
      end
    end
  end
end
my_plugin\init.rb:
Redmine::Plugin.register :hdexpertises do
  name 'Hdexpertises plugin'
  author 'Author name'
  description 'This is a plugin for Redmine'
  version '0.0.1'
  url 'http://example.com/path/to/plugin'
  author_url 'http://example.com/about'
end
Redmine::AccessControl.map do |map|
  map.project_module :issue_tracking do |map|
    map.permission :hd_copy_issues, {}
    map.permission :hd_edit_due_date,{}
    map.permission :hd_edit_issue_due_date,{}
    map.permission :hd_view_collapsible,{}
  end
end
Redmine::MenuManager.map :project_menu do |menu|
  menu.push :tracker1, { :controller => 'issues', :action => 'index',:set_filter => 1,:tracker_id=>1 }, :param => :project_id, :caption => 'Nhiệm vụ'
  menu.push :tracker3, { :controller => 'issues', :action => 'index',:query_id => 0 }, :param => :project_id, :caption => 'Dự án'
end
	Please help me fix this. And i don't know argument of alias_method_chain, Can you explain to me? Thank you very much!
| issue_patch.rb (2.09 KB) issue_patch.rb |