comparison app/helpers/projects_helper.rb @ 68:60c0a4e08e09 luisf

Feature #35: The projects page now is separated in "My Projects" and "Other Projects".
author luisf
date Mon, 06 Dec 2010 17:50:43 +0000
parents 1d32c0a0efbf
children dc22c3eb3c81
comparison
equal deleted inserted replaced
66:29d087fde142 68:60c0a4e08e09
81 @project = original_project 81 @project = original_project
82 end 82 end
83 s 83 s
84 end 84 end
85 85
86
87 # Renders a tree of projects where the current user belongs
88 # as a nested set of unordered lists
89 # The given collection may be a subset of the whole project tree
90 # (eg. some intermediate nodes are private and can not be seen)
91 def render_my_project_hierarchy(projects)
92 s = ''
93
94 if projects.any?
95 ancestors = []
96 original_project = @project
97 projects.each do |project|
98 # set the project environment to please macros.
99
100 @project = project
101
102 if User.current.member_of?(project):
103
104 if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
105 s << "<ul class='projects #{ ancestors.empty? ? 'root' : nil}'>\n"
106 else
107 ancestors.pop
108 s << "</li>"
109 while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
110 ancestors.pop
111 s << "</ul></li>\n"
112 end
113 end
114
115 classes = (ancestors.empty? ? 'root' : 'child')
116 s << "<li class='#{classes}'><div class='#{classes}'>" +
117 link_to_project(project, {}, :class => "project #{User.current.member_of?(project) ? 'my-project' : nil}")
118 s << "<div class='wiki description'>#{textilizable(project.short_description, :project => project)}</div>" unless project.description.blank?
119 s << "</div>\n"
120 ancestors << project
121 end
122 end
123 s << ("</li></ul>\n" * ancestors.size)
124 @project = original_project
125 end
126 s
127 end
128
129 # Renders a tree of projects where the current DOES NOT belong
130 # as a nested set of unordered lists
131 # The given collection may be a subset of the whole project tree
132 # (eg. some intermediate nodes are private and can not be seen)
133 def render_other_project_hierarchy(projects)
134 s = ''
135
136 if projects.any?
137 ancestors = []
138 original_project = @project
139 projects.each do |project|
140 # set the project environment to please macros.
141
142 @project = project
143
144 if not User.current.member_of?(project):
145
146 if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
147 s << "<ul class='projects #{ ancestors.empty? ? 'root' : nil}'>\n"
148 else
149 ancestors.pop
150 s << "</li>"
151 while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
152 ancestors.pop
153 s << "</ul></li>\n"
154 end
155 end
156
157 classes = (ancestors.empty? ? 'root' : 'child')
158 s << "<li class='#{classes}'><div class='#{classes}'>" +
159 link_to_project(project, {}, :class => "project #{User.current.member_of?(project) ? 'my-project' : nil}")
160 s << "<div class='wiki description'>#{textilizable(project.short_description, :project => project)}</div>" unless project.description.blank?
161 s << "</div>\n"
162 ancestors << project
163 end
164 end
165
166 s << ("</li></ul>\n" * ancestors.size)
167 @project = original_project
168 end
169 s
170 end
171
172
173
86 # Returns a set of options for a select field, grouped by project. 174 # Returns a set of options for a select field, grouped by project.
87 def version_options_for_select(versions, selected=nil) 175 def version_options_for_select(versions, selected=nil)
88 grouped = Hash.new {|h,k| h[k] = []} 176 grouped = Hash.new {|h,k| h[k] = []}
89 versions.each do |version| 177 versions.each do |version|
90 grouped[version.project.name] << [version.name, version.id] 178 grouped[version.project.name] << [version.name, version.id]