<%= label_tag 'q', l('project_filtering_q_label') %>
@@ -26,7 +34,7 @@
- <%= render :partial => 'filter_tags' %>
+ <%= render :partial => 'filter_search_tags' %>
<%= submit_tag( l('button_filter'), :id => 'filter_button') -%>
diff -r 7fd52a786954 -r 31b3aa308568 vendor/plugins/redmine_tags/assets/javascripts/projects_index.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/plugins/redmine_tags/assets/javascripts/projects_index.js Fri Nov 18 11:09:18 2011 +0000
@@ -0,0 +1,22 @@
+Event.observe(window, 'load', function() {
+
+});
+
+
+function toggleFieldsetWithState(this_field){
+ id = Element.up(this_field, 'fieldset').id;
+ // is the fieldset collapsed?
+ status = $(id).hasClassName("collapsed");
+ change_session(id, status);
+
+ toggleFieldset(this_field);
+};
+
+function change_session(id, nstatus) {
+ var url = "projects/set_fieldset_status";
+ var request = new Ajax.Request(url, {
+ method: 'post',
+ parameters: {field_id: id, status: nstatus},
+ asynchronous: true
+ });
+}
\ No newline at end of file
diff -r 7fd52a786954 -r 31b3aa308568 vendor/plugins/redmine_tags/assets/javascripts/tags_input.js
--- a/vendor/plugins/redmine_tags/assets/javascripts/tags_input.js Tue Nov 15 10:36:40 2011 +0000
+++ b/vendor/plugins/redmine_tags/assets/javascripts/tags_input.js Fri Nov 18 11:09:18 2011 +0000
@@ -93,7 +93,6 @@
new Redmine.TagsInput('issue_tag_list').autocomplete('issue_tag_candidates', url);
}
-
function observeProjectTagsField(url) {
- new Redmine.TagsInput('project_tag_list').autocomplete('project_tag_candidates', url);
+ new Redmine.TagsInput('project_tag_list').autocomplete('project_tag_candidates', url);
}
\ No newline at end of file
diff -r 7fd52a786954 -r 31b3aa308568 vendor/plugins/redmine_tags/config/routes.rb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/plugins/redmine_tags/config/routes.rb Fri Nov 18 11:09:18 2011 +0000
@@ -0,0 +1,3 @@
+ActionController::Routing::Routes.draw do |map|
+ map.connect 'projects/set_fieldset_status', :controller => 'projects', :action => 'set_fieldset_status', :conditions => {:method => :post}
+end
\ No newline at end of file
diff -r 7fd52a786954 -r 31b3aa308568 vendor/plugins/redmine_tags/lib/redmine_tags/patches/auto_completes_controller_patch.rb
--- a/vendor/plugins/redmine_tags/lib/redmine_tags/patches/auto_completes_controller_patch.rb Tue Nov 15 10:36:40 2011 +0000
+++ b/vendor/plugins/redmine_tags/lib/redmine_tags/patches/auto_completes_controller_patch.rb Fri Nov 18 11:09:18 2011 +0000
@@ -38,6 +38,12 @@
@tags = Project.available_tags :name_like => @name
render :layout => false, :partial => 'tag_list'
end
+
+ def project_search_tags
+ @name = params[:q].to_s
+ @tags = Project.available_tags :name_like => @name
+ render :layout => false, :partial => 'search_tag_list'
+ end
end
end
end
diff -r 7fd52a786954 -r 31b3aa308568 vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_controller_patch.rb
--- a/vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_controller_patch.rb Tue Nov 15 10:36:40 2011 +0000
+++ b/vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_controller_patch.rb Fri Nov 18 11:09:18 2011 +0000
@@ -2,17 +2,24 @@
module RedmineTags
module Patches
- module ProjectsControllerPatch
+ module ProjectsControllerPatch
def self.included(base)
base.send(:include, InstanceMethods)
base.class_eval do
unloadable
+ skip_before_filter :authorize, :only => [:set_fieldset_status]
+ skip_before_filter :find_project, :only => [:set_fieldset_status]
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 +32,84 @@
end
end
- # # luisf - TO BE REMOVED?
- # def calculate_project_filtering_settings
- # @project_filtering_settings = Setting[:plugin_redmine_project_filtering]
- # end
+ def paginate_projects
+ sort_init 'name'
+ sort_update %w(name lft created_on updated_on)
+ @limit = per_page_option
+ @project_count = Project.visible_roots.find(@projects).count
+ @project_pages = ActionController::Pagination::Paginator.new self, @project_count, @limit, params['page']
+ @offset ||= @project_pages.current.offset
+ end
- def filter_projects
+ def set_fieldset_status
+
+ # luisf. test for missing parameters………
+ field = params[:field_id]
+ status = params[:status]
+
+ session[(field + "_status").to_sym] = status
+ logger.error { "SET - DEBUG-ME #{session.inspect}" }
+
+ render :nothing => true
+ end
+
+ # gets the status of the collabsible fieldsets
+ def get_fieldset_statuses
+ if session[:my_projects_fieldset_status].nil?
+ @myproj_status = true
+ else
+ @myproj_status = session[:my_projects_fieldset_status]
+ end
+
+ if session[:filters_fieldset_status].nil?
+ @filter_status = false
+ else
+ @filter_status = session[:filters_fieldset_status]
+ end
+ end
+
+ # Lists visible projects. Paginator is for top-level projects only
+ # (subprojects belong to them)
+ def filtered_index
@project = Project.new
+ filter_projects
+ get_fieldset_statuses
respond_to do |format|
- format.any(:html, :xml) {
- calculate_filtered_projects
+ format.html {
+ paginate_projects
+ @projects = Project.visible_roots.find(@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(@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
+ paginate_projects
+ @projects = Project.visible_roots.find(@projects, :offset => @offset, :limit => @limit, :order => sort_clause)
render :update do |page|
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)
@@ -64,19 +120,12 @@
@projects = Project.visible
- @featured_projects = @projects.featured if Project.respond_to? :featured
-
# luisf
@projects = @projects.search_by_question(@question) unless @question == ""
@tagged_projects_ids = Project.tagged_with(@tag_list).collect{ |project| Project.find(project.id) } unless @tag_list.empty?
- debugger
-
# intersection of both prject groups
- @projects = @projects && @tagged_projects_ids unless @tag_list.empty?
-
- debugger
- @filtered_projects = @projects
+ @projects = @projects & @tagged_projects_ids unless @tag_list.empty?
end
end
end
diff -r 7fd52a786954 -r 31b3aa308568 vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_helper_patch.rb
--- a/vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_helper_patch.rb Tue Nov 15 10:36:40 2011 +0000
+++ b/vendor/plugins/redmine_tags/lib/redmine_tags/patches/projects_helper_patch.rb Fri Nov 18 11:09:18 2011 +0000
@@ -18,9 +18,7 @@
# description, manager(s), creation date, last activity date,
# general activity level, whether there is anything actually hosted
# here for the project, etc.
- def render_project_table_with_filtering(projects, question)
- debugger
-
+ def render_project_table_with_filtering(projects, question)
custom_fields = ""
s = ""
if projects.any?