From 4c7e1629a392249e7b406527cbbb599dab6abe9d Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 17 Jan 2009 13:07:40 +0000 Subject: [PATCH] Changes project selection boxes. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/work@2277 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../app/helpers/application_helper.rb | 16 +++++++++++++--- nested_projects/app/helpers/projects_helper.rb | 6 +----- nested_projects/app/helpers/users_helper.rb | 9 +-------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/nested_projects/app/helpers/application_helper.rb b/nested_projects/app/helpers/application_helper.rb index c93e16eed..66ddef9c3 100644 --- a/nested_projects/app/helpers/application_helper.rb +++ b/nested_projects/app/helpers/application_helper.rb @@ -156,15 +156,25 @@ module ApplicationHelper s = '' s end end + def project_tree_options_for_select(projects, options = {}) + s = '' + project_tree(projects) do |project, level| + name_prefix = (level > 0 ? (' ' * 2 * level + '» ') : '') + tag_options = {:value => project.id, :selected => ((project == options[:selected]) ? 'selected' : nil)} + tag_options.merge!(yield(project)) if block_given? + s << content_tag('option', name_prefix + h(project), tag_options) + end + s + end + # Yields the given block for each project with its level in the tree def project_tree(projects, &block) ancestors = [] diff --git a/nested_projects/app/helpers/projects_helper.rb b/nested_projects/app/helpers/projects_helper.rb index 2cf4cb750..912450c1c 100644 --- a/nested_projects/app/helpers/projects_helper.rb +++ b/nested_projects/app/helpers/projects_helper.rb @@ -35,11 +35,7 @@ module ProjectsHelper end def parent_project_select_tag(project) - options = '' - project_tree(project.possible_parents) do |p, i| - selected = (project.parent == p) - options << "" - end + options = '' + project_tree_options_for_select(project.possible_parents, :selected => project.parent) content_tag('select', options, :name => 'project[parent_id]') end diff --git a/nested_projects/app/helpers/users_helper.rb b/nested_projects/app/helpers/users_helper.rb index 5b113e880..18a80ef20 100644 --- a/nested_projects/app/helpers/users_helper.rb +++ b/nested_projects/app/helpers/users_helper.rb @@ -27,14 +27,7 @@ module UsersHelper # Options for the new membership projects combo-box def projects_options_for_select(projects) options = content_tag('option', "--- #{l(:actionview_instancetag_blank_option)} ---") - projects_by_root = projects.group_by(&:root) - projects_by_root.keys.sort.each do |root| - options << content_tag('option', h(root.name), :value => root.id, :disabled => (!projects.include?(root))) - projects_by_root[root].sort.each do |project| - next if project == root - options << content_tag('option', '» ' + h(project.name), :value => project.id) - end - end + options << project_tree_options_for_select(projects) options end