Mercurial > hg > soundsoftware-site
changeset 767:dd33798e514d feature_14
Reverts changes made to Redmine Core's Projects Controller in commit:b2a9e64b8283. Pagination now being done for both normal and filtered projects index.
author | luisf <luis.figueira@eecs.qmul.ac.uk> |
---|---|
date | Tue, 15 Nov 2011 15:03:17 +0000 |
parents | 332e4287f4d3 |
children | 0829e808ec49 |
files | app/controllers/projects_controller.rb vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_controller_patch.rb |
diffstat | 2 files changed, 45 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/app/controllers/projects_controller.rb Mon Nov 14 12:36:55 2011 +0000 +++ b/app/controllers/projects_controller.rb Tue Nov 15 15:03:17 2011 +0000 @@ -55,7 +55,7 @@ @project_count = Project.visible_roots.count @project_pages = Paginator.new self, @project_count, @limit, params['page'] @offset ||= @project_pages.current.offset - @projects = Project.visible_roots.find(@filtered_projects, :offset => @offset, :limit => @limit, :order => sort_clause) + @projects = Project.visible_roots.all(:offset => @offset, :limit => @limit, :order => sort_clause) if User.current.logged? # seems sort_by gives us case-sensitive ordering, which we don't want # @user_projects = User.current.projects.sort_by(&:name)
--- a/vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_controller_patch.rb Mon Nov 14 12:36:55 2011 +0000 +++ b/vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_controller_patch.rb Tue Nov 15 15:03:17 2011 +0000 @@ -2,17 +2,22 @@ module RedmineTags module Patches - module ProjectsControllerPatch + module ProjectsControllerPatch def self.included(base) base.send(:include, InstanceMethods) base.class_eval do unloadable before_filter :add_tags_to_project, :only => [:save, :update] - before_filter :filter_projects, :only => :index +# before_filter :filter_projects, :only => :index + + alias :index filtered_index end end module InstanceMethods + + + def add_tags_to_project if params && params[:project] && !params[:project][:tag_list].nil? @@ -25,35 +30,58 @@ end end - # # luisf - TO BE REMOVED? - # def calculate_project_filtering_settings - # @project_filtering_settings = Setting[:plugin_redmine_project_filtering] - # end - def filter_projects + def paginate_projects + sort_init 'name' + sort_update %w(name lft created_on updated_on) + @limit = per_page_option + @project_count = Project.visible_roots.count + @project_pages = ActionController::Pagination::Paginator.new self, @project_count, @limit, params['page'] + @offset ||= @project_pages.current.offset + end + + + # Lists visible projects. Paginator is for top-level projects only + # (subprojects belong to them) + def filtered_index @project = Project.new + filter_projects respond_to do |format| - format.any(:html, :xml) { - calculate_filtered_projects + format.html { + paginate_projects + @projects = Project.visible_roots.find(@filtered_projects, :offset => @offset, :limit => @limit, :order => sort_clause) + + if User.current.logged? + # seems sort_by gives us case-sensitive ordering, which we don't want + # @user_projects = User.current.projects.sort_by(&:name) + @user_projects = User.current.projects.all(:order => :name) + end + + render :template => 'projects/index.rhtml', :layout => !request.xhr? + } + format.api { + @offset, @limit = api_offset_and_limit + @project_count = Project.visible.count + @projects = Project.visible.find(@filtered_projects, :offset => @offset, :limit => @limit, :order => 'lft') + } + format.atom { + projects = Project.visible.find(:all, :order => 'created_on DESC', :limit => Setting.feeds_limit.to_i) + render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") } format.js { - calculate_filtered_projects render :update do |page| + paginate_projects + @projects = Project.visible_roots.find(@filtered_projects, :offset => @offset, :limit => @limit, :order => sort_clause) page.replace_html 'projects', :partial => 'filtered_projects' end } - format.atom { - projects = Project.visible.find(:all, :order => 'created_on DESC', - :limit => Setting.feeds_limit.to_i) - render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") - } end end private - def calculate_filtered_projects + def filter_projects @question = (params[:q] || "").strip if params.has_key?(:project)