Mercurial > hg > soundsoftware-site
changeset 780:31b3aa308568 cannam
Merge from branch "feature_14"
author | Chris Cannam |
---|---|
date | Fri, 18 Nov 2011 11:09:18 +0000 |
parents | 7fd52a786954 (current diff) 06a9d1cf5e15 (diff) |
children | 4b46e861a43a |
files | |
diffstat | 13 files changed, 148 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/app/controllers/projects_controller.rb Tue Nov 15 10:36:40 2011 +0000 +++ b/app/controllers/projects_controller.rb Fri Nov 18 11:09:18 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)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/plugins/redmine_tags/app/views/auto_completes/_search_tag_list.html.erb Fri Nov 18 11:09:18 2011 +0000 @@ -0,0 +1,5 @@ +<ul> + <% @tags.each do |tag| -%> + <%= content_tag 'li', h('%s (%d)' % [tag.name, tag.count]), :name => tag.name %> + <% end -%> +</ul>
--- a/vendor/plugins/redmine_tags/app/views/auto_completes/_tag_list.html.erb Tue Nov 15 10:36:40 2011 +0000 +++ b/vendor/plugins/redmine_tags/app/views/auto_completes/_tag_list.html.erb Fri Nov 18 11:09:18 2011 +0000 @@ -2,5 +2,5 @@ <% @tags.each do |tag| -%> <%= content_tag 'li', h('%s (%d)' % [tag.name, tag.count]), :name => tag.name %> <% end -%> -<%= content_tag 'li', l(:auto_complete_new_tag) % @name, :name => @name %> + <%= content_tag 'li', l(:auto_complete_new_tag) % @name, :name => @name %> </ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/plugins/redmine_tags/app/views/projects/_filter_search_tags.html.erb Fri Nov 18 11:09:18 2011 +0000 @@ -0,0 +1,13 @@ +<p class='tag'> + <% fields_for @project, :builder => TabularFormBuilder do |f| -%> + <div> + <p id="project_tags"> + <%= f.text_field :tag_list, :label => :tags, :size => 60, :class => 'hol' %> + </p> + <div id="project_tag_candidates" class="autocomplete"></div> + <%= javascript_include_tag 'tags_input', :plugin => 'redmine_tags' %> + + <%= javascript_tag "observeProjectTagsField('#{url_for(:controller => 'auto_completes', :action => 'project_search_tags', :project_id => Project.first.id)}')" %> + </div> + <% end -%> +</p>
--- a/vendor/plugins/redmine_tags/app/views/projects/_my_projects.rhtml Tue Nov 15 10:36:40 2011 +0000 +++ b/vendor/plugins/redmine_tags/app/views/projects/_my_projects.rhtml Fri Nov 18 11:09:18 2011 +0000 @@ -1,5 +1,11 @@ -<fieldset id="filters" class="collapsible"> - <legend onclick="toggleFieldset(this);"><%= l(:label_my_projects) %></legend> +<% if @myproj_status=="true" %> +<fieldset id="my_projects_fieldset" class="collapsible"> + <legend onclick="toggleFieldsetWithState(this);"><%= l(:label_my_projects) %></legend> +<% else %> +<fieldset id="my_projects_fieldset" class="collapsible collapsed"> + <legend onclick="toggleFieldsetWithState(this);"><%= l(:label_my_projects) %></legend> + <div style="display: none;"> +<% end%> <% if @user_projects %> <div> <%= render_my_project_hierarchy(@user_projects)%>
--- a/vendor/plugins/redmine_tags/app/views/projects/_tags_form.html.erb Tue Nov 15 10:36:40 2011 +0000 +++ b/vendor/plugins/redmine_tags/app/views/projects/_tags_form.html.erb Fri Nov 18 11:09:18 2011 +0000 @@ -3,6 +3,6 @@ <p id="project_tags"><%= f.text_field :tag_list, :label => :tags, :size => 60, :class => 'hol' %></p> <div id="project_tag_candidates" class="autocomplete"></div> <%= javascript_include_tag 'tags_input', :plugin => 'redmine_tags' %> - <%= javascript_tag "observeProjectTagsField('#{url_for(:controller => 'auto_completes', :action => 'project_tags', :project_id => project)}')" %> + <%= javascript_tag "observeProjectTagsField('#{url_for(:controller => 'auto_completes', :action => 'project_tags', :project_id => project)}', false)" %> </div> <% end -%> \ No newline at end of file
--- a/vendor/plugins/redmine_tags/app/views/projects/index.rhtml Tue Nov 15 10:36:40 2011 +0000 +++ b/vendor/plugins/redmine_tags/app/views/projects/index.rhtml Fri Nov 18 11:09:18 2011 +0000 @@ -1,6 +1,8 @@ <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:action => 'index', :format => 'atom', :key => User.current.rss_key}) %> <% end %> +<%= javascript_include_tag 'projects_index', :plugin => 'redmine_tags' %> + <div class="contextual"> <%= link_to l(:label_overall_activity), { :controller => 'activities', :action => 'index' }%> @@ -14,11 +16,17 @@ <%= render :partial => 'my_projects' %> <% end %> +<div style="clear:both;"></div> +<% form_remote_tag(:controller => :projects, :action => :index, :method => :get, :id => :project_filtering) do %> -<div style="clear:both;"></div> -<% form_tag(:controller => :projects, :action => :index, :method => :get, :id => :project_filtering) do %> - <fieldset id="filters" class="collapsible"> - <legend onclick="toggleFieldset(this);"><%= l(:label_filter_plural) %></legend> +<% if @filter_status=="true" %> +<fieldset id="filters_fieldset" class="collapsible"> + <legend onclick="toggleFieldsetWithState(this);"><%= l(:label_filter_plural) %></legend> +<% else %> + <fieldset id="filters_fieldset" class="collapsible collapsed"> + <legend onclick="toggleFieldsetWithState(this);"><%= l(:label_filter_plural) %></legend> + <div style="display: none;"> +<% end %> <div> <p class='q'> <%= label_tag 'q', l('project_filtering_q_label') %> @@ -26,7 +34,7 @@ </p> <div id='filter_tags'> - <%= render :partial => 'filter_tags' %> + <%= render :partial => 'filter_search_tags' %> </div> <p class='buttons'><%= submit_tag( l('button_filter'), :id => 'filter_button') -%></p>
--- /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
--- 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
--- /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
--- 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
--- 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
--- 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?