To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.
root / vendor / plugins / redmine_tags / lib / redmine_tags / patches / projects_controller_patch.rb @ 780:31b3aa308568
History | View | Annotate | Download (4.61 KB)
| 1 | 730:4a9bb3b8d5cd | luis | require_dependency 'projects_controller'
|
|---|---|---|---|
| 2 | |||
| 3 | module RedmineTags |
||
| 4 | module Patches |
||
| 5 | 767:dd33798e514d | luis | module ProjectsControllerPatch |
| 6 | 730:4a9bb3b8d5cd | luis | def self.included(base) |
| 7 | base.send(:include, InstanceMethods) |
||
| 8 | base.class_eval do
|
||
| 9 | unloadable |
||
| 10 | 776:af852d82b00b | luis | skip_before_filter :authorize, :only => [:set_fieldset_status] |
| 11 | skip_before_filter :find_project, :only => [:set_fieldset_status] |
||
| 12 | 730:4a9bb3b8d5cd | luis | before_filter :add_tags_to_project, :only => [:save, :update] |
| 13 | 767:dd33798e514d | luis | # before_filter :filter_projects, :only => :index
|
| 14 | |||
| 15 | alias :index filtered_index |
||
| 16 | 730:4a9bb3b8d5cd | luis | end
|
| 17 | end
|
||
| 18 | |||
| 19 | module InstanceMethods |
||
| 20 | 767:dd33798e514d | luis | |
| 21 | |||
| 22 | |||
| 23 | 752:ded6cd947ade | luis | def add_tags_to_project |
| 24 | |||
| 25 | 731:3f87a3b61d9c | luis | if params && params[:project] && !params[:project][:tag_list].nil? |
| 26 | old_tags = @project.tag_list.to_s
|
||
| 27 | new_tags = params[:project][:tag_list].to_s |
||
| 28 | 752:ded6cd947ade | luis | |
| 29 | 731:3f87a3b61d9c | luis | unless (old_tags == new_tags)
|
| 30 | @project.tag_list = new_tags
|
||
| 31 | end
|
||
| 32 | 739:b7ac21913927 | luis | end
|
| 33 | 730:4a9bb3b8d5cd | luis | end
|
| 34 | 752:ded6cd947ade | luis | |
| 35 | 767:dd33798e514d | luis | def paginate_projects |
| 36 | sort_init 'name'
|
||
| 37 | sort_update %w(name lft created_on updated_on)
|
||
| 38 | @limit = per_page_option
|
||
| 39 | 769:9af86029dc90 | luis | @project_count = Project.visible_roots.find(@projects).count |
| 40 | 767:dd33798e514d | luis | @project_pages = ActionController::Pagination::Paginator.new self, @project_count, @limit, params['page'] |
| 41 | 769:9af86029dc90 | luis | @offset ||= @project_pages.current.offset |
| 42 | 767:dd33798e514d | luis | end
|
| 43 | |||
| 44 | 776:af852d82b00b | luis | def set_fieldset_status |
| 45 | |||
| 46 | # luisf. test for missing parameters………
|
||
| 47 | field = params[:field_id]
|
||
| 48 | status = params[:status]
|
||
| 49 | |||
| 50 | 773:c761e467a390 | luis | session[(field + "_status").to_sym] = status
|
| 51 | 777:facded821cee | luis | logger.error { "SET - DEBUG-ME #{session.inspect}" }
|
| 52 | |||
| 53 | 776:af852d82b00b | luis | render :nothing => true |
| 54 | 773:c761e467a390 | luis | end
|
| 55 | |||
| 56 | # gets the status of the collabsible fieldsets
|
||
| 57 | 776:af852d82b00b | luis | def get_fieldset_statuses |
| 58 | if session[:my_projects_fieldset_status].nil? |
||
| 59 | @myproj_status = true |
||
| 60 | 773:c761e467a390 | luis | else
|
| 61 | 776:af852d82b00b | luis | @myproj_status = session[:my_projects_fieldset_status] |
| 62 | end
|
||
| 63 | |||
| 64 | if session[:filters_fieldset_status].nil? |
||
| 65 | 773:c761e467a390 | luis | @filter_status = false |
| 66 | else
|
||
| 67 | 776:af852d82b00b | luis | @filter_status = session[:filters_fieldset_status] |
| 68 | 777:facded821cee | luis | end
|
| 69 | 773:c761e467a390 | luis | end
|
| 70 | 767:dd33798e514d | luis | |
| 71 | # Lists visible projects. Paginator is for top-level projects only
|
||
| 72 | # (subprojects belong to them)
|
||
| 73 | def filtered_index |
||
| 74 | 752:ded6cd947ade | luis | @project = Project.new |
| 75 | 767:dd33798e514d | luis | filter_projects |
| 76 | 773:c761e467a390 | luis | get_fieldset_statuses |
| 77 | 769:9af86029dc90 | luis | |
| 78 | 752:ded6cd947ade | luis | respond_to do |format|
|
| 79 | 767:dd33798e514d | luis | format.html {
|
| 80 | paginate_projects |
||
| 81 | 769:9af86029dc90 | luis | @projects = Project.visible_roots.find(@projects, :offset => @offset, :limit => @limit, :order => sort_clause) |
| 82 | 767:dd33798e514d | luis | |
| 83 | if User.current.logged? |
||
| 84 | # seems sort_by gives us case-sensitive ordering, which we don't want
|
||
| 85 | # @user_projects = User.current.projects.sort_by(&:name)
|
||
| 86 | @user_projects = User.current.projects.all(:order => :name) |
||
| 87 | end
|
||
| 88 | |||
| 89 | render :template => 'projects/index.rhtml', :layout => !request.xhr? |
||
| 90 | } |
||
| 91 | 779:06a9d1cf5e15 | luis | format.api {
|
| 92 | 767:dd33798e514d | luis | @offset, @limit = api_offset_and_limit |
| 93 | @project_count = Project.visible.count |
||
| 94 | 769:9af86029dc90 | luis | @projects = Project.visible.find(@projects, :offset => @offset, :limit => @limit, :order => 'lft') |
| 95 | 767:dd33798e514d | luis | } |
| 96 | format.atom {
|
||
| 97 | projects = Project.visible.find(:all, :order => 'created_on DESC', :limit => Setting.feeds_limit.to_i) |
||
| 98 | render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") |
||
| 99 | 752:ded6cd947ade | luis | } |
| 100 | format.js {
|
||
| 101 | 779:06a9d1cf5e15 | luis | paginate_projects |
| 102 | @projects = Project.visible_roots.find(@projects, :offset => @offset, :limit => @limit, :order => sort_clause) |
||
| 103 | 752:ded6cd947ade | luis | render :update do |page| |
| 104 | page.replace_html 'projects', :partial => 'filtered_projects' |
||
| 105 | end
|
||
| 106 | } |
||
| 107 | end
|
||
| 108 | end
|
||
| 109 | |||
| 110 | private |
||
| 111 | |||
| 112 | 767:dd33798e514d | luis | def filter_projects |
| 113 | 752:ded6cd947ade | luis | @question = (params[:q] || "").strip |
| 114 | |||
| 115 | if params.has_key?(:project) |
||
| 116 | @tag_list = (params[:project][:tag_list] || "").strip.split(",") |
||
| 117 | else
|
||
| 118 | @tag_list = []
|
||
| 119 | 739:b7ac21913927 | luis | end
|
| 120 | |||
| 121 | 752:ded6cd947ade | luis | @projects = Project.visible |
| 122 | 749:3f28aebc5fc1 | luis | |
| 123 | 752:ded6cd947ade | luis | # luisf
|
| 124 | @projects = @projects.search_by_question(@question) unless @question == "" |
||
| 125 | @tagged_projects_ids = Project.tagged_with(@tag_list).collect{ |project| Project.find(project.id) } unless @tag_list.empty? |
||
| 126 | 739:b7ac21913927 | luis | |
| 127 | 771:8712a4e535d3 | luis | # intersection of both prject groups
|
| 128 | @projects = @projects & @tagged_projects_ids unless @tag_list.empty? |
||
| 129 | 752:ded6cd947ade | luis | end
|
| 130 | 730:4a9bb3b8d5cd | luis | end
|
| 131 | end
|
||
| 132 | end
|
||
| 133 | end |